Skip to content

[mlir][python] Running passes can invalidate objects and lead to crashes #63916

Open
@rkayaith

Description

@rkayaith

If C++ code deletes an operation the PyOperation::valid flag isn't updated, which can lead to crashes:

from mlir import ir
from mlir.dialects import builtin
from mlir.passmanager import PassManager

with ir.Context():
  module = builtin.ModuleOp.parse("""
    module {
      arith.constant 10
    }
  """)
  const_op = module.body.operations[0]
  print(const_op)
  PassManager.parse('builtin.module(canonicalize)').run(module)
  print(const_op)   # Segmentation fault (core dumped)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions