Skip to content

Conversation

@khasanovaa
Copy link
Contributor

TritonNvidiaGPU/interleave_tmem.mlir fails under address sanitizer.

The ConstantIntOp operations were created without attachment to any block in http://github.com/triton-lang/triton/pull/7622, which caused a memory leak. This change addresses the problem by adding an insertion point.

Full log

=================================================================
==3831==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 576 byte(s) in 6 object(s) allocated from:
#0 0x55c3eca39164 in malloc third_party/llvm/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:67:3
#1 0x55c3f176afb3 in mlir::Operation::create(mlir::Location, mlir::OperationName, mlir::TypeRange, mlir::ValueRange, mlir::DictionaryAttr, mlir::OpaqueProperties, mlir::BlockRange, unsigned int) third_party/llvm/llvm-project/mlir/lib/IR/Operation.cpp:113:46
#2 0x55c3f176a90c in create third_party/llvm/llvm-project/mlir/lib/IR/Operation.cpp:74:10
#3 0x55c3f176a90c in mlir::Operation::create(mlir::Location, mlir::OperationName, mlir::TypeRange, mlir::ValueRange, mlir::NamedAttrList&&, mlir::OpaqueProperties, mlir::BlockRange, mlir::RegionRange) third_party/llvm/llvm-project/mlir/lib/IR/Operation.cpp:57:7
#4 0x55c3f176a61b in mlir::Operation::create(mlir::OperationState const&) third_party/llvm/llvm-project/mlir/lib/IR/Operation.cpp:35:7
#5 0x55c3f1678a78 in mlir::OpBuilder::create(mlir::OperationState const&) third_party/llvm/llvm-project/mlir/lib/IR/Builders.cpp:453:17
#6 0x55c3ecf3668f in mlir::arith::ConstantIntOp mlir::OpBuilder::create<mlir::arith::ConstantIntOp, int, int>(mlir::Location, int&&, int&&) third_party/llvm/llvm-project/mlir/include/mlir/IR/Builders.h:507:16
#7 0x55c3eefa690a in findBufferAccessMemdescSubview third_party/triton/lib/Dialect/TritonNvidiaGPU/Transforms/InterleaveTMem.cpp:75:33
#8 0x55c3eefa690a in mlir::triton::nvidia_gpu::(anonymous namespace)::findBufferAccess(mlir::Value) third_party/triton/lib/Dialect/TritonNvidiaGPU/Transforms/InterleaveTMem.cpp:151:12
#9 0x55c3eefa70e7 in mlir::triton::nvidia_gpu::(anonymous namespace)::findBufferAccess(mlir::Value) third_party/triton/lib/Dialect/TritonNvidiaGPU/Transforms/InterleaveTMem.cpp:156:34
#10 0x55c3eefa4c0c in tmemMayAlias third_party/triton/lib/Dialect/TritonNvidiaGPU/Transforms/InterleaveTMem.cpp:173:28
#11 0x55c3eefa4c0c in sinkOps third_party/triton/lib/Dialect/TritonNvidiaGPU/Transforms/InterleaveTMem.cpp:227:36
#12 0x55c3eefa4c0c in trySinkOp third_party/triton/lib/Dialect/TritonNvidiaGPU/Transforms/InterleaveTMem.cpp:253:10
#13 0x55c3eefa4c0c in mlir::triton::nvidia_gpu::TritonNvidiaGPUInterleaveTMemPass::runOnOperation() third_party/triton/lib/Dialect/TritonNvidiaGPU/Transforms/InterleaveTMem.cpp:275:14
#14 0x55c3f1560ad1 in operator() third_party/llvm/llvm-project/mlir/lib/Pass/Pass.cpp:553:17
#15 0x55c3f1560ad1 in void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1>(long) third_party/llvm/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
#16 0x55c3f1559920 in operator() third_party/llvm/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
#17 0x55c3f1559920 in executeAction<mlir::PassExecutionAction, mlir::Pass &> third_party/llvm/llvm-project/mlir/include/mlir/IR/MLIRContext.h:280:7
#18 0x55c3f1559920 in mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) third_party/llvm/llvm-project/mlir/lib/Pass/Pass.cpp:547:21
#19 0x55c3f155d46f in runPipeline third_party/llvm/llvm-project/mlir/lib/Pass/Pass.cpp:619:16
#20 0x55c3f155d46f in mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) third_party/llvm/llvm-project/mlir/lib/Pass/Pass.cpp:933:10
#21 0x55c3f155d15b in mlir::PassManager::run(mlir::Operation*) third_party/llvm/llvm-project/mlir/lib/Pass/Pass.cpp:913:60
#22 0x55c3ed0a8b20 in performActions(llvm::raw_ostream&, std::__u::shared_ptrllvm::SourceMgr const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) third_party/llvm/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:477:17
#23 0x55c3ed0a8363 in processBuffer third_party/llvm/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:553:12
#24 0x55c3ed0a8363 in operator() third_party/llvm/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:642:12
#25 0x55c3ed0a8363 in llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_deletellvm::MemoryBuffer>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_deletellvm::MemoryBuffer>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_deletellvm::MemoryBuffer>, llvm::MemoryBufferRef const&, llvm::raw_ostream&) third_party/llvm/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
#26 0x55c3f17bd34f in operator() third_party/llvm/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
#27 0x55c3f17bd34f in mlir::splitAndProcessBuffer(std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_deletellvm::MemoryBuffer>, llvm::function_ref<llvm::LogicalResult (std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_deletellvm::MemoryBuffer>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) third_party/llvm/llvm-project/mlir/lib/Support/ToolUtilities.cpp:30:12
#28 0x55c3ed09d0c6 in mlir::MlirOptMain(llvm::raw_ostream&, std::__u::unique_ptr<llvm::MemoryBuffer, std::__u::default_deletellvm::MemoryBuffer>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) third_party/llvm/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:647:26
#29 0x55c3ed09d67f in mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) third_party/llvm/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:693:14
#30 0x55c3ed09dc59 in mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) third_party/llvm/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:709:10
#31 0x55c3eca74a70 in main third_party/triton/bin/triton-opt.cpp:14:33
#32 0x7f1fd58613d3 in __libc_start_main (/usr/grte/v5/lib64/libc.so.6+0x613d3) (BuildId: 9a996398ce14a94560b0c642eb4f6e94)
#33 0x55c3ec995aa9 in _start /usr/grte/v5/debug-src/src/csu/../sysdeps/x86_64/start.S:120

@khasanovaa khasanovaa requested a review from ptillet as a code owner August 21, 2025 13:33
Copy link
Collaborator

@ThomasRaoux ThomasRaoux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for catching this

khasanovaa and others added 2 commits August 21, 2025 16:24
@khasanovaa khasanovaa force-pushed the set_insertion_point branch from f0eeee5 to ae9ca49 Compare August 21, 2025 14:24
@peterbell10 peterbell10 merged commit 28eb9fb into triton-lang:main Aug 21, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants