Skip to content

Memory corruption in LiftCFGToSCF pass when processing empty function regions #22971

@sairam2661

Description

@sairam2661

What happened?

Description
The compiler crashes with a segmentation fault during the --iree-util-lift-cfg-to-scf pass. This is possibly due to the pass trying to access the block list within a function without a body, which causes a null pointer read (when checking if the region is empty).

Output

Please report issues to https://github.com/iree-org/iree/issues and include the crash backtrace.
Stack dump:
0.      Program arguments: /workdir/builds/iree/tools/iree-opt --iree-util-lift-cfg-to-scf test.mlir
 #0 0x00005643b8cce74b backtrace (/workdir/builds/iree/tools/iree-opt+0x9174b)
 #1 0x00007fd265e40828 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /workdir/sources/iree/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:842:13
 #2 0x00007fd265e385e3 llvm::sys::RunSignalHandlers() /workdir/sources/iree/third_party/llvm-project/llvm/lib/Support/Signals.cpp:109:18
 #3 0x00007fd265e432e4 SignalHandler(int, siginfo_t*, void*) /workdir/sources/iree/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:429:38
 #4 0x00007fd23ff56520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #5 0x00007fd267b7d272 llvm::ilist_sentinel<llvm::ilist_detail::node_options<mlir::Block, false, false, void, false, void> >::empty() const /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/ilist_node.h:308:36
 #6 0x00007fd267b7d272 llvm::simple_ilist<mlir::Block>::empty() const /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/simple_ilist.h:132:54
 #7 0x00007fd267b7d272 mlir::Region::empty() /workdir/sources/iree/third_party/llvm-project/mlir/include/mlir/IR/Region.h:60:32
 #8 0x00007fd267b7d272 mlir::iree_compiler::IREE::Util::(anonymous namespace)::LiftCFGToSCFPass::runOnOperation() /workdir/sources/iree/compiler/src/iree/compiler/Dialect/Util/Transforms/LiftCFGToSCF.cpp:222:19
 #9 0x00007fd267a6427a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_44::operator()() const /workdir/sources/iree/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:613:24
#10 0x00007fd267a6427a void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_44>(long) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
#11 0x00007fd267a44015 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:0:12
#12 0x00007fd267a46631 llvm::failed(llvm::LogicalResult) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/Support/LogicalResult.h:71:42
#13 0x00007fd267a46631 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:688:9
#14 0x00007fd267a5a4bc mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:1123:10
#15 0x00007fd267a5853c mlir::PassManager::run(mlir::Operation*) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:0:60
#16 0x00007fd267ce0814 llvm::failed(llvm::LogicalResult) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/Support/LogicalResult.h:71:42
#17 0x00007fd267ce0814 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:591:7
#18 0x00007fd267cde6c8 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, mlir::SourceMgrDiagnosticVerifierHandler*, llvm::ThreadPoolInterface*) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:673:12
#19 0x00007fd267cde6c8 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_3::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef, llvm::raw_ostream&) const /workdir/sources/iree/third_party/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:771:12
#20 0x00007fd267cde6c8 llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_3>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
#21 0x00007fd267ce7934 llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&) const /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
#22 0x00007fd267ce7934 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0::operator()(llvm::StringRef) const /workdir/sources/iree/third_party/llvm-project/mlir/lib/Support/ToolUtilities.cpp:94:13
#23 0x00007fd267ce6351 void llvm::interleave<llvm::StringRef const*, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, void llvm::interleave<llvm::SmallVector<llvm::StringRef, 8u>, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::raw_ostream, llvm::StringRef>(llvm::SmallVector<llvm::StringRef, 8u> const&, llvm::raw_ostream&, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::StringRef const&)::'lambda'(), void>(llvm::SmallVector<llvm::StringRef, 8u>, llvm::SmallVector<llvm::StringRef, 8u>, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::raw_ostream) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2230:16
#24 0x00007fd267ce6351 void llvm::interleave<llvm::SmallVector<llvm::StringRef, 8u>, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::raw_ostream, llvm::StringRef>(llvm::SmallVector<llvm::StringRef, 8u> const&, llvm::raw_ostream&, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::StringRef const&) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2250:3
#25 0x00007fd267ce6351 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Support/ToolUtilities.cpp:97:3
#26 0x00007fd267cbe16e mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:776:26
#27 0x00007fd265bc683a llvm::failed(llvm::LogicalResult) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/Support/LogicalResult.h:71:42
#28 0x00007fd265bc683a ireeOptMainFromCL(int, char**, llvm::StringRef, mlir::DialectRegistry&) /workdir/sources/iree/compiler/src/iree/compiler/API/Internal/IREEOptToolEntryPoint.cpp:147:7
#29 0x00007fd265bc683a ireeOptRunMain /workdir/sources/iree/compiler/src/iree/compiler/API/Internal/IREEOptToolEntryPoint.cpp:170:14
#30 0x00007fd23ff3dd90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#31 0x00007fd23ff3de40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#32 0x00005643b8c92c15 _start (/workdir/builds/iree/tools/iree-opt+0x55c15)
AddressSanitizer:DEADLYSIGNAL
=================================================================
==397464==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7fd2400328fd bp 0x632000013430 sp 0x6320000132b8 T0)
==397464==The signal is caused by a READ memory access.
==397464==Hint: address points to the zero page.
    #0 0x7fd2400328fd in syscall (/lib/x86_64-linux-gnu/libc.so.6+0x11e8fd) (BuildId: 4f7b0c955c3d81d7cac1501a2498b69d1d82bfe7)
    #1 0x7fd265e43322 in SignalHandler(int, siginfo_t*, void*) /workdir/sources/iree/third_party/llvm-project/llvm/lib/Support/Unix/Signals.inc:429:7
    #2 0x7fd23ff5651f  (/lib/x86_64-linux-gnu/libc.so.6+0x4251f) (BuildId: 4f7b0c955c3d81d7cac1501a2498b69d1d82bfe7)
    #3 0x7fd267b7d271 in llvm::ilist_detail::node_base_prevnext<llvm::ilist_node_base<false, void>, false>::getPrev() const /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/ilist_node_base.h:27:38
    #4 0x7fd267b7d271 in llvm::ilist_node_impl<llvm::ilist_detail::node_options<mlir::Block, false, false, void, false, void> >::getPrev() const /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/ilist_node.h:112:59
    #5 0x7fd267b7d271 in llvm::ilist_sentinel<llvm::ilist_detail::node_options<mlir::Block, false, false, void, false, void> >::empty() const /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/ilist_node.h:308:45
    #6 0x7fd267b7d271 in llvm::simple_ilist<mlir::Block>::empty() const /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/simple_ilist.h:132:54
    #7 0x7fd267b7d271 in mlir::Region::empty() /workdir/sources/iree/third_party/llvm-project/mlir/include/mlir/IR/Region.h:60:32
    #8 0x7fd267b7d271 in mlir::iree_compiler::IREE::Util::(anonymous namespace)::LiftCFGToSCFPass::runOnOperation() /workdir/sources/iree/compiler/src/iree/compiler/Dialect/Util/Transforms/LiftCFGToSCF.cpp:222:19
    #9 0x7fd267a64279 in mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_44::operator()() const /workdir/sources/iree/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:612:19
    #10 0x7fd267a64279 in void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_44>(long) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
    #11 0x7fd267a44014 in llvm::function_ref<void ()>::operator()() const /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
    #12 0x7fd267a44014 in void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /workdir/sources/iree/third_party/llvm-project/mlir/include/mlir/IR/MLIRContext.h:290:7
    #13 0x7fd267a44014 in mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:606:23
    #14 0x7fd267a46630 in mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:688:16
    #15 0x7fd267a5a4bb in mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:1123:10
    #16 0x7fd267a5853b in mlir::PassManager::run(mlir::Operation*) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Pass/Pass.cpp:1097:60
    #17 0x7fd267ce0813 in performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:591:17
    #18 0x7fd267cde6c7 in processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, mlir::SourceMgrDiagnosticVerifierHandler*, llvm::ThreadPoolInterface*) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:673:12
    #19 0x7fd267cde6c7 in mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_3::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef, llvm::raw_ostream&) const /workdir/sources/iree/third_party/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:771:12
    #20 0x7fd267cde6c7 in llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_3>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
    #21 0x7fd267ce7933 in llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&) const /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
    #22 0x7fd267ce7933 in mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0::operator()(llvm::StringRef) const /workdir/sources/iree/third_party/llvm-project/mlir/lib/Support/ToolUtilities.cpp:94:13
    #23 0x7fd267ce6350 in void llvm::interleave<llvm::StringRef const*, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, void llvm::interleave<llvm::SmallVector<llvm::StringRef, 8u>, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::raw_ostream, llvm::StringRef>(llvm::SmallVector<llvm::StringRef, 8u> const&, llvm::raw_ostream&, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::StringRef const&)::'lambda'(), void>(llvm::SmallVector<llvm::StringRef, 8u>, llvm::SmallVector<llvm::StringRef, 8u>, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::raw_ostream) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2228:3
    #24 0x7fd267ce6350 in void llvm::interleave<llvm::SmallVector<llvm::StringRef, 8u>, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::raw_ostream, llvm::StringRef>(llvm::SmallVector<llvm::StringRef, 8u> const&, llvm::raw_ostream&, mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef)::$_0, llvm::StringRef const&) /workdir/sources/iree/third_party/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2250:3
    #25 0x7fd267ce6350 in mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Support/ToolUtilities.cpp:97:3
    #26 0x7fd267cbe16d in mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /workdir/sources/iree/third_party/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:776:26
    #27 0x7fd265bc6839 in ireeOptMainFromCL(int, char**, llvm::StringRef, mlir::DialectRegistry&) /workdir/sources/iree/compiler/src/iree/compiler/API/Internal/IREEOptToolEntryPoint.cpp:147:14
    #28 0x7fd265bc6839 in ireeOptRunMain /workdir/sources/iree/compiler/src/iree/compiler/API/Internal/IREEOptToolEntryPoint.cpp:170:14
    #29 0x7fd23ff3dd8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: 4f7b0c955c3d81d7cac1501a2498b69d1d82bfe7)
    #30 0x7fd23ff3de3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f) (BuildId: 4f7b0c955c3d81d7cac1501a2498b69d1d82bfe7)
    #31 0x5643b8c92c14 in _start (/workdir/builds/iree/tools/iree-opt+0x55c14) (BuildId: 29f363d568516654)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0x11e8fd) (BuildId: 4f7b0c955c3d81d7cac1501a2498b69d1d82bfe7) in syscall
==397464==ABORTING

Steps to reproduce your issue

Minimal MLIR program (test.mlir)

"builtin.module"() ({
  "flow.func"() <{function_type = () -> (), sym_name = "test", sym_visibility = "private"}> ({
  }) : () -> ()
}) : () -> ()

Command

iree-opt --iree-util-lift-cfg-to-scf test.mlir

What component(s) does this issue relate to?

MLIR

Version information

d4b9bb0150db9e3c20673c912cb785e988846936

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🐞Something isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions