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

Reply via email to