Issue |
133810
|
Summary |
Clang Trunk hangs compiling compiler-rt
|
Labels |
hang
|
Assignees |
|
Reporter |
mustartt
|
When compiling compiler-rt with `-DLLVM_ENABLE_RUNTIMES=compiler-rt`:
```
hjiang:llvm-community$ /home/hjiang/workspace/llvm-community/build/Debug/./bin/clang++ --version
clang version 21.0.0git (g...@github.com:mustartt/llvm-project.git dfa665f19c52d98b8d833a8e9073427ba5641b19)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/hjiang/workspace/llvm-community/build/Debug/bin
Build config: +unoptimized, +assertions, +expensive-checks
```
LLVM will get stuck on `llvm::LazyCallGraph::RefSCC::verify`. Is this a known issue?
```
/home/hjiang/workspace/llvm-community/build/Debug/./bin/clang++ --target=x86_64-unknown-linux-gnu -DCOMPILER_RT_SHARED_LIB -DEXPENSIVE_CHECKS -D_DEBUG -D_GLIBCXX_ASSERTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Dclang_rt_scudo_standalone_dynamic_x86_64_EXPORTS -I/home/hjiang/workspace/llvm-community/compiler-rt/lib/scudo/standalone/../.. -I/home/hjiang/workspace/llvm-community/compiler-rt/lib/scudo/standalone/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -Wall -Wno-unused-parameter -g -std=c++17 -fPIC -m64 -fno-lto -Werror=conversion -Wall -Wextra -pedantic -g -nostdinc++ -fvisibility=hidden -fno-exceptions -Wno-pedantic -O3 -Werror=thread-safety -fno-omit-frame-pointer -DGWP_ASAN_HOOKS -MD -MT compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-x86_64.dir/wrappers_cpp.cpp.o -MF compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-x86_64.dir/wrappers_cpp.cpp.o.d -o compiler-rt/lib/scudo/standalone/CMakeFiles/clang_rt.scudo_standalone-dynamic-x86_64.dir/wrappers_cpp.cpp.o -c /home/hjiang/workspace/llvm-community/compiler-rt/lib/scudo/standalone/wrappers_cpp.cpp
(lldb) frame info
frame #0: 0x000055c606d89cdb clang-21`std::pair<std::__decay_and_strip<llvm::SmallPtrSetIterator<llvm::LazyCallGraph::Node*>>::__type, std::__decay_and_strip<bool&>::__type> std::make_pair<llvm::SmallPtrSetIterator<llvm::LazyCallGraph::Node*>, bool&>(__x=0x00007ffce8798a20, __y=0x00007ffce8798a48) at stl_pair.h:529:68
(lldb) bt
* thread #1, name = 'clang++', stop reason = signal SIGSTOP
* frame #0: 0x000055c606d89cdb clang-21`std::pair<std::__decay_and_strip<llvm::SmallPtrSetIterator<llvm::LazyCallGraph::Node*>>::__type, std::__decay_and_strip<bool&>::__type> std::make_pair<llvm::SmallPtrSetIterator<llvm::LazyCallGraph::Node*>, bool&>(__x=0x00007ffce8798a20, __y=0x00007ffce8798a48) at stl_pair.h:529:68
frame #1: 0x000055c606d7d982 clang-21`llvm::SmallPtrSetImpl<llvm::LazyCallGraph::Node*>::insert(this=0x00007ffce8798b18, Ptr=0x000055c60f86e920) at SmallPtrSet.h:387:12
frame #2: 0x000055c606d6e00d clang-21`llvm::LazyCallGraph::RefSCC::verify(this=0x000055c60ea5f110) at LazyCallGraph.cpp:396:20
frame #3: 0x000055c606d79d78 clang-21`llvm::LazyCallGraph::RefSCC::switchTrivialInternalEdgeToRef(llvm::LazyCallGraph::Node&, llvm::LazyCallGraph::Node&)::$_0::operator()(this=0x00007ffce8798e58) const at LazyCallGraph.cpp:739:47
frame #4: 0x000055c606d70337 clang-21`llvm::detail::scope_exit<llvm::LazyCallGraph::RefSCC::switchTrivialInternalEdgeToRef(llvm::LazyCallGraph::Node&, llvm::LazyCallGraph::Node&)::$_0>::~scope_exit(this=0x00007ffce8798e58) at ScopeExit.h:46:7
frame #5: 0x000055c606d702da clang-21`llvm::LazyCallGraph::RefSCC::switchTrivialInternalEdgeToRef(this=0x000055c60ea5f110, SourceN=0x000055c60ea5e1e0, TargetN=0x000055c60eb223f0) at LazyCallGraph.cpp:749:1
frame #6: 0x000055c606da07c0 clang-21`updateCGAndAnalysisManagerForPass(G=0x000055c60f241958, InitialC=0x000055c60e93df60, N=0x000055c60ea5e1e0, AM=0x00007ffce879d140, UR=0x00007ffce879a9b0, FAM=0x00007ffce879d1a0, FunctionPass=false) at CGSCCPassManager.cpp:1012:13
frame #7: 0x000055c606da1356 clang-21`llvm::updateCGAndAnalysisManagerForCGSCCPass(G=0x000055c60f241958, InitialC=0x000055c60e93df60, N=0x000055c60ea5e1e0, AM=0x00007ffce879d140, UR=0x00007ffce879a9b0, FAM=0x00007ffce879d1a0) at CGSCCPassManager.cpp:1192:10
frame #8: 0x000055c609b17922 clang-21`llvm::InlinerPass::run(this=0x000055c60ea42188, InitialC=0x000055c60e93df60, AM=0x00007ffce879d140, CG=0x000055c60f241958, UR=0x00007ffce879a9b0) at Inliner.cpp:498:10
frame #9: 0x000055c609abe6a4 clang-21`llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::InlinerPass, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(this=0x000055c60ea42180, IR=0x000055c60e93df60, AM=0x00007ffce879d140, ExtraArgs=0x000055c60f241958, ExtraArgs=0x00007ffce879a9b0) at PassManagerInternal.h:91:17
frame #10: 0x000055c606d9d0ce clang-21`llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(this=0x000055c60f6f5108, InitialC=0x000055c60e93df60, AM=0x00007ffce879d140, G=0x000055c60f241958, UR=0x00007ffce879a9b0) at CGSCCPassManager.cpp:90:38
frame #11: 0x000055c609aa6244 clang-21`llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(this=0x000055c60f6f5100, IR=0x000055c60e93df60, AM=0x00007ffce879d140, ExtraArgs=0x000055c60f241958, ExtraArgs=0x00007ffce879a9b0) at PassManagerInternal.h:91:17
frame #12: 0x000055c606d9df96 clang-21`llvm::DevirtSCCRepeatedPass::run(this=0x000055c60f435118, InitialC=0x000055c60e93df60, AM=0x00007ffce879d140, CG=0x000055c60f241958, UR=0x00007ffce879a9b0) at CGSCCPassManager.cpp:416:38
frame #13: 0x000055c609adc5c4 clang-21`llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(this=0x000055c60f435110, IR=0x000055c60e93df60, AM=0x00007ffce879d140, ExtraArgs=0x000055c60f241958, ExtraArgs=0x00007ffce879a9b0) at PassManagerInternal.h:91:17
frame #14: 0x000055c606d9da14 clang-21`llvm::ModuleToPostOrderCGSCCPassAdaptor::run(this=0x000055c60edb7228, M=0x000055c60e7c0fb0, AM=0x00007ffce879d0e0) at CGSCCPassManager.cpp:277:44
frame #15: 0x000055c609aa6784 clang-21`llvm::detail::PassModel<llvm::Module, llvm::ModuleToPostOrderCGSCCPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(this=0x000055c60edb7220, IR=0x000055c60e7c0fb0, AM=0x00007ffce879d0e0) at PassManagerInternal.h:91:17
frame #16: 0x000055c606c7d430 clang-21`llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(this=0x000055c60ecad628, IR=0x000055c60e7c0fb0, AM=0x00007ffce879d0e0) at PassManagerImpl.h:81:38
frame #17: 0x000055c609b184e2 clang-21`llvm::ModuleInlinerWrapperPass::run(this=0x000055c60ecad5b8, M=0x000055c60e7c0fb0, MAM=0x00007ffce879d0e0) at Inliner.cpp:632:7
frame #18: 0x000055c609ab1df4 clang-21`llvm::detail::PassModel<llvm::Module, llvm::ModuleInlinerWrapperPass, llvm::AnalysisManager<llvm::Module>>::run(this=0x000055c60ecad5b0, IR=0x000055c60e7c0fb0, AM=0x00007ffce879d0e0) at PassManagerInternal.h:91:17
frame #19: 0x000055c606c7d430 clang-21`llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(this=0x00007ffce879bad0, IR=0x000055c60e7c0fb0, AM=0x00007ffce879d0e0) at PassManagerImpl.h:81:38
frame #20: 0x000055c6082bd6c5 clang-21`(anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(this=0x00007ffce879e008, Action="" OS=0x55c60e7ae110, ThinLinkOS=nullptr, BC=0x000055c60e7ab8b0) at BackendUtil.cpp:1194:9
frame #21: 0x000055c6082b7a51 clang-21`(anonymous namespace)::EmitAssemblyHelper::emitAssembly(this=0x00007ffce879e008, Action="" OS=0x55c60e7ae110, BC=0x000055c60e7ab8b0) at BackendUtil.cpp:1267:3
frame #22: 0x000055c6082b6f48 clang-21`clang::emitBackendOutput(CI=0x000055c60e7a5fc0, CGOpts=0x000055c60e7a90d0, TDesc=(Data = "" Length = 79), M=0x000055c60e7c0fb0, Action="" VFS=IntrusiveRefCntPtr<llvm::vfs::FileSystem> @ 0x00007ffce879e2e8, OS=nullptr, BC=0x000055c60e7ab8b0) at BackendUtil.cpp:1433:13
frame #23: 0x000055c6082dcddf clang-21`clang::BackendConsumer::HandleTranslationUnit(this=0x000055c60e7ab8b0, C=0x000055c60e7de8a0) at CodeGenAction.cpp:315:3
frame #24: 0x000055c60aff0338 clang-21`clang::ParseAST(S=0x000055c60e836f10, PrintStats=false, SkipFunctionBodies=false) at ParseAST.cpp:184:13
frame #25: 0x000055c608c1f2b1 clang-21`clang::ASTFrontendAction::ExecuteAction(this=0x000055c60e7b12a0) at FrontendAction.cpp:1186:3
frame #26: 0x000055c6082e0c60 clang-21`clang::CodeGenAction::ExecuteAction(this=0x000055c60e7b12a0) at CodeGenAction.cpp:1101:30
frame #27: 0x000055c608c1ecc6 clang-21`clang::FrontendAction::Execute(this=0x000055c60e7b12a0) at FrontendAction.cpp:1072:3
frame #28: 0x000055c608b3d26c clang-21`clang::CompilerInstance::ExecuteAction(this=0x000055c60e7a5fc0, Act=0x000055c60e7b12a0) at CompilerInstance.cpp:1056:33
frame #29: 0x000055c608e11177 clang-21`clang::ExecuteCompilerInvocation(Clang=0x000055c60e7a5fc0) at ExecuteCompilerInvocation.cpp:300:25
frame #30: 0x000055c6051eda7a clang-21`cc1_main(Argv=ArrayRef<const char *> @ 0x00007ffce87a2be8, Argv0="/home/hjiang/workspace/llvm-community/build/Debug/bin/clang-21", MainAddr=0x000055c6051ded30) at cc1_main.cpp:294:15
frame #31: 0x000055c6051e0492 clang-21`ExecuteCC1Tool(ArgV=0x00007ffce87a2f80, ToolContext=0x00007ffce87a8730) at driver.cpp:218:12
frame #32: 0x000055c6051e0f50 clang-21`clang_main(int, char**, llvm::ToolContext const&)::$_0::operator()(this=0x00007ffce87a39f8, ArgV=0x00007ffce87a2f80) const at driver.cpp:364:16
frame #33: 0x000055c6051e0f1d clang-21`int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(callable=140724208810488, params=0x00007ffce87a2f80) at STLFunctionalExtras.h:46:12
frame #34: 0x000055c6089a7ae1 clang-21`llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(this=0x00007ffce87a3e70, params=0x00007ffce87a2f80) const at STLFunctionalExtras.h:69:12
frame #35: 0x000055c6089a4628 clang-21`clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0::operator()(this=0x00007ffce87a2f28) const at Job.cpp:437:34
frame #36: 0x000055c6089a45f5 clang-21`void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0>(callable=140724208807720) at STLFunctionalExtras.h:46:12
frame #37: 0x000055c60600ab29 clang-21`llvm::function_ref<void ()>::operator()(this=0x00007ffce87a2ee8) const at STLFunctionalExtras.h:69:12
frame #38: 0x000055c60739d4ca clang-21`llvm::CrashRecoveryContext::RunSafely(this=0x00007ffce87a2f68, Fn=function_ref<void ()> @ 0x00007ffce87a2ee8) at CrashRecoveryContext.cpp:426:3
frame #39: 0x000055c6089a3f8b clang-21`clang::driver::CC1Command::Execute(this=0x000055c60e758090, Redirects=ArrayRef<std::optional<llvm::StringRef> > @ 0x00007ffce87a33b8, ErrMsg="", ExecutionFailed=0x00007ffce87a3477) const at Job.cpp:437:12
frame #40: 0x000055c608939323 clang-21`clang::driver::Compilation::ExecuteCommand(this=0x000055c60e7a56a0, C=0x000055c60e758090, FailingCommand=0x00007ffce87a3598, LogOnly=false) const at Compilation.cpp:196:15
frame #41: 0x000055c608939527 clang-21`clang::driver::Compilation::ExecuteJobs(this=0x000055c60e7a56a0, Jobs=0x000055c60e7a5738, FailingCommands=0x00007ffce87a3880, LogOnly=false) const at Compilation.cpp:251:19
frame #42: 0x000055c608955e12 clang-21`clang::driver::Driver::ExecuteCompilation(this=0x00007ffce87a3ad0, C=0x000055c60e7a56a0, FailingCommands=0x00007ffce87a3880) at Driver.cpp:2220:5
frame #43: 0x000055c6051dff73 clang-21`clang_main(Argc=62, Argv=0x00007ffce87a88c8, ToolContext=0x00007ffce87a8730) at driver.cpp:402:21
frame #44: 0x000055c605213265 clang-21`main(argc=62, argv=0x00007ffce87a88c8) at clang-driver.cpp:17:10
frame #45: 0x00007ff2911a87e5 libc.so.6`__libc_start_main + 229
frame #46: 0x000055c6051dec6e clang-21`_start + 46
frame #0: 0x000055c606d6dfc5 clang-21`llvm::LazyCallGraph::RefSCC::verify(this=0x000055c60ea5f110) at LazyCallGraph.cpp:394:22
391 SmallVector<Node *, 4> Worklist;
392 SmallPtrSet<Node *, 4> Visited;
393 Worklist.push_back(N);
-> 394 while (!Worklist.empty()) {
395 Node *VisitingNode = Worklist.pop_back_val();
396 if (!Visited.insert(VisitingNode).second)
397 continue;
(lldb) Process 2892017 stopped
* thread #1, name = 'clang++', stop reason = step over
frame #0: 0x000055c606d6dfe0 clang-21`llvm::LazyCallGraph::RefSCC::verify(this=0x000055c60ea5f110) at LazyCallGraph.cpp:395:37
392 SmallPtrSet<Node *, 4> Visited;
393 Worklist.push_back(N);
394 while (!Worklist.empty()) {
-> 395 Node *VisitingNode = Worklist.pop_back_val();
396 if (!Visited.insert(VisitingNode).second)
397 continue;
398 for (Edge &E : **VisitingNode)
(lldb) Process 2892017 stopped
* thread #1, name = 'clang++', stop reason = step over
frame #0: 0x000055c606d6dff3 clang-21`llvm::LazyCallGraph::RefSCC::verify(this=0x000055c60ea5f110) at LazyCallGraph.cpp:396:27
393 Worklist.push_back(N);
394 while (!Worklist.empty()) {
395 Node *VisitingNode = Worklist.pop_back_val();
-> 396 if (!Visited.insert(VisitingNode).second)
397 continue;
398 for (Edge &E : **VisitingNode)
399 Worklist.push_back(&E.getNode());
(lldb) Process 2892017 stopped
* thread #1, name = 'clang++', stop reason = step over
frame #0: 0x000055c606d6e022 clang-21`llvm::LazyCallGraph::RefSCC::verify(this=0x000055c60ea5f110) at LazyCallGraph.cpp:397:9
394 while (!Worklist.empty()) {
395 Node *VisitingNode = Worklist.pop_back_val();
396 if (!Visited.insert(VisitingNode).second)
-> 397 continue;
398 for (Edge &E : **VisitingNode)
399 Worklist.push_back(&E.getNode());
400 }
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs