[Mlir-commits] [mlir] [tosa]: canonicalize dynamic size of tosa.slice to static output shape (PR #135429)

Thurston Dang llvmlistbot at llvm.org
Sat Apr 12 19:56:02 PDT 2025


thurstond wrote:

Based on the ASan output, I think after the replaceOp on line 775, it's no longer valid to do getSize() on sliceOp:

```
   775      rewriter.replaceOp(sliceOp, newSliceOp.getResult());
   776
   777      // Remove const_shape size op when it no longer has use point.
   778      Operation *sizeConstShape = sliceOp.getSize().getDefiningOp();
```

```
==mlir-opt==1182057==ERROR: AddressSanitizer: heap-use-after-free on address 0x76a7f48bbc7c at pc 0x6010214a6254 bp 0x7ffc067d9790 sp 0x7ffc067d9788
READ of size 4 at 0x76a7f48bbc7c thread T0
    #0 0x6010214a6253 in getOpOperands /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/include/mlir/IR/Operation.h:384:12
    #1 0x6010214a6253 in getOperands /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/include/mlir/IR/Operation.h:379:43
    #2 0x6010214a6253 in operand_begin /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/include/mlir/IR/Operation.h:374:45
    #3 0x6010214a6253 in getODSOperands /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/tools/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.h.inc:14332:39
    #4 0x6010214a6253 in mlir::tosa::SliceOp::getSize() /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/tools/mlir/include/mlir/Dialect/Tosa/IR/TosaOps.h.inc:14345:69
    #5 0x60102176a3ff in SliceDynamicSizeCanonicalization::matchAndRewrite(mlir::tosa::SliceOp, mlir::PatternRewriter&) const /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp:778:41
...

freed by thread T0 here:
    #0 0x60101ac8aeb6 in free /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:51:3
    #1 0x601022f7a71d in erase /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/ilist.h:205:5
    #2 0x601022f7a71d in erase /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/ilist.h:209:39
    #3 0x601022f7a71d in mlir::Operation::erase() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/IR/Operation.cpp:541:29
    #4 0x601022fb2d6a in operator() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/IR/PatternMatch.cpp:184:9
    #5 0x601022fb2d6a in operator() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/IR/PatternMatch.cpp:223:5
    #6 0x601022fb2d6a in __invoke<(lambda at /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/IR/PatternMatch.cpp:190:48) &, mlir::Operation *> /home/b/sanitizer-x86_64-linux-fast/build/libcxx_install_asan_ubsan/include/c++/v1/__type_traits/invoke.h:179:25
    #7 0x601022fb2d6a in __call<(lambda at /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/IR/PatternMatch.cpp:190:48) &, mlir::Operation *> /home/b/sanitizer-x86_64-linux-fast/build/libcxx_install_asan_ubsan/include/c++/v1/__type_traits/invoke.h:251:5
    #8 0x601022fb2d6a in __invoke_r<void, (lambda at /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/IR/PatternMatch.cpp:190:48) &, mlir::Operation *> /home/b/sanitizer-x86_64-linux-fast/build/libcxx_install_asan_ubsan/include/c++/v1/__type_traits/invoke.h:273:10
    #9 0x601022fb2d6a in operator() /home/b/sanitizer-x86_64-linux-fast/build/libcxx_install_asan_ubsan/include/c++/v1/__functional/function.h:167:12
    #10 0x601022fb2d6a in std::__1::__function::__func<mlir::RewriterBase::eraseOp(mlir::Operation*)::$_0, std::__1::allocator<mlir::RewriterBase::eraseOp(mlir::Operation*)::$_0>, void (mlir::Operation*)>::operator()(mlir::Operation*&&) /home/b/sanitizer-x86_64-linux-fast/build/libcxx_install_asan_ubsan/include/c++/v1/__functional/function.h:319:10
    #11 0x601022fae6a3 in operator() /home/b/sanitizer-x86_64-linux-fast/build/libcxx_install_asan_ubsan/include/c++/v1/__functional/function.h:436:12
    #12 0x601022fae6a3 in operator() /home/b/sanitizer-x86_64-linux-fast/build/libcxx_install_asan_ubsan/include/c++/v1/__functional/function.h:995:10
      #13 0x5c8e0439e5a4 in executeAction<(anonymous namespace)::GreedyPatternRewriteIteration, long &> /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/include/mlir/IR/MLIRContext.h:280:7
    #14 0x5c8e0439e5a4 in simplify /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:872:10
    #15 0x5c8e0439e5a4 in mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:919:47
    #16 0x5c8e0001d2ad in mlir::applyPatternsGreedily(mlir::Operation*, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h:174:15
    #17 0x5c8e0430af42 in (anonymous namespace)::Canonicalizer::runOnOperation() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/mlir/lib/Transforms/Canonicalizer.cpp:64:9
...
```

https://github.com/llvm/llvm-project/pull/135429


More information about the Mlir-commits mailing list