Skip to content

x86_64-pc-windows-gnu: Bootstrap fails with a segfault when building libcore after LLVM update #151790

@petrochenkov

Description

@petrochenkov

I tried this code:

./build/x86_64-pc-windows-gnu/stage1/bin/rustc.exe library/core/src/lib.rs --edition=2024 --crate-type=lib -C opt-level=1

(-C opt-level=1 is required, it will segfault with higher optimization levels too.)

I expected to see this happen: it compiles.

Instead, this happened: SIGSEGV, see the backtrace below

Meta

$ ./build/x86_64-pc-windows-gnu/stage1/bin/rustc.exe --version --verbose
rustc 1.95.0-dev
binary: rustc
commit-hash: unknown
commit-date: unknown
host: x86_64-pc-windows-gnu
release: 1.95.0-dev
LLVM version: 22.1.0
Backtrace

#0  0x00007ffd29e5adb8 in canProveExitOnFirstIteration(llvm::Loop*, llvm::DominatorTree&, llvm::LoopInfo&)::{lambda(llvm::BasicBlock*)#1}::operator()(llvm::BasicBlock*) const ()
   from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#1  0x00007ffd28352210 in llvm::LoopDeletionPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) ()
   from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#2  0x00007ffd256131f5 in llvm::detail::PassModel<llvm::Loop, llvm::LoopDeletionPass, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::L
oopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#3  0x00007ffd27b452b5 in std::optional<llvm::PreservedAnalyses> llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runSinglePass<llvm::Loop, std::unique_ptr<llvm::d
etail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAna
lysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > > >(llvm::Loop&, std::unique_ptr<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>,
std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > >&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::Loo
pStandardAnalysisResults&, llvm::LPMUpdater&, llvm::PassInstrumentation&) [clone .isra.0] () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#4  0x00007ffd27b45fbb in llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runWithoutLoopNestPasses(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStanda
rdAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#5  0x00007ffd27b460ba in llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&,
 llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#6  0x00007ffd288ed6ec in llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#7  0x00007ffd23add5f1 in llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) ()
   from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#8  0x00007ffd255d7b9f in llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#9  0x00007ffd23ade521 in llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) ()
   from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#10 0x00007ffd2894ad3d in llvm::CGSCCToFunctionPassAdaptor::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) ()
   from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#11 0x00007ffd23add135 in llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CGSCCToFunctionPassAdaptor, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::Anal
ysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#12 0x00007ffd27b43ae5 in llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, ll
vm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#13 0x00007ffd25613b25 in 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::Laz
yCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) ()
   from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#14 0x00007ffd2879d193 in llvm::DevirtSCCRepeatedPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) ()
   from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#15 0x00007ffd25628055 in llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisM
anager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#16 0x00007ffd28a34a8c in llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#17 0x00007ffd23add101 in llvm::detail::PassModel<llvm::Module, llvm::ModuleToPostOrderCGSCCPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) ()
   from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#18 0x00007ffd255d6c0f in llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#19 0x00007ffd288c4359 in llvm::ModuleInlinerWrapperPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#20 0x00007ffd256139d1 in llvm::detail::PassModel<llvm::Module, llvm::ModuleInlinerWrapperPass, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) ()
   from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
#21 0x00007ffd255d6c0f in llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) () from C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll
warning: Could not find DWO CU C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1-rustc\x86_64-pc-windows-gnu\release\deps\rustc_codegen_llvm-aab7d176d36bd35d.9zehr43x35vtzupzd7ikgc78t.0ok8miw.rcgu.dwo(0x2679283cdf2077ac) referenced by CU at offset 0x8be15f [in mo
dule C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll]
#22 0x00007ffd2659e15b in LLVMRustOptimize (ModuleRef=<optimized out>, TMRef=<optimized out>, OptLevelRust=<optimized out>, OptStage=<optimized out>, IsLinkerPluginLTO=<optimized out>, NoPrepopulatePasses=<optimized out>, VerifyIR=<optimized out>,
    LintIR=<optimized out>, ThinLTOBufferRef=<optimized out>, EmitThinLTO=<optimized out>, EmitThinLTOSummary=<optimized out>, MergeFunctions=<optimized out>, UnrollLoops=<optimized out>, SLPVectorize=<optimized out>, LoopVectorize=<optimized out>,
    DisableSimplifyLibCalls=<optimized out>, EmitLifetimeMarkers=<optimized out>, EnzymePtr=<optimized out>, PrintBeforeEnzyme=<optimized out>, PrintAfterEnzyme=<optimized out>, PrintPasses=<optimized out>, SanitizerOptions=<optimized out>, PGOGenPath=<optimized out>,
    PGOUsePath=<optimized out>, InstrumentCoverage=<optimized out>, InstrProfileOutput=<optimized out>, PGOSampleUsePath=<optimized out>, DebugInfoForProfiling=<optimized out>, LlvmSelfProfiler=<optimized out>, BeforePassCallback=<optimized out>,
    AfterPassCallback=<optimized out>, ExtraPasses=<optimized out>, ExtraPassesLen=<optimized out>, LLVMPlugins=<optimized out>, LLVMPluginsLen=<optimized out>) at llvm-wrapper/PassWrapper.cpp:948
#23 0x00007ffd239f829c in rustc_codegen_llvm::back::write::llvm_optimize () at compiler\rustc_codegen_llvm\src\back/write.rs:781
#24 0x00007ffd239fc9db in rustc_codegen_llvm::back::write::optimize () at compiler\rustc_codegen_llvm\src\back/write.rs:946
warning: Could not find DWO CU C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1-rustc\x86_64-pc-windows-gnu\release\deps\rustc_codegen_llvm-aab7d176d36bd35d.dpr6s4dfs5ulo3c95ht5id5lj.0ok8miw.rcgu.dwo(0x43466d2adc4038b5) referenced by CU at offset 0x8be193 [in mo
dule C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll]
#25 0x00007ffd23a008d2 in rustc_codegen_ssa::back::write::execute_optimize_work_item::<rustc_codegen_llvm::LlvmCodegenBackend> () at compiler\rustc_codegen_llvm\src/lib.rs:212
warning: Could not find DWO CU C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1-rustc\x86_64-pc-windows-gnu\release\deps\rustc_codegen_llvm-aab7d176d36bd35d.8lt7ci8d42mjhfecjqohgzzja.0ok8miw.rcgu.dwo(0x3496c4f07cc20e74) referenced by CU at offset 0x3685 [in modu
le C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll]
#26 0x00007ffd22a29dd8 in std::sys::backtrace::__rust_begin_short_backtrace::<<rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::ExtraBackendMethods>::spawn_named_thread<rustc_codegen_ssa::back::write::spawn_work<rustc_codegen_llvm::LlvmCodege
nBackend>::{closure#0}, ()>::{closure#0}, ()> () at compiler\rustc_codegen_ssa\src\back/write.rs:1889
warning: Could not find DWO CU C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1-rustc\x86_64-pc-windows-gnu\release\deps\rustc_codegen_llvm-aab7d176d36bd35d.04ihkvgnuf44bzt8qtovt7zfb.0ok8miw.rcgu.dwo(0x930a884efb1911a1) referenced by CU at offset 0xc37560 [in mo
dule C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\rustc_driver-777c5fb388fd49f7.dll]
#27 0x00007ffd23a44bbe in <std::thread::lifecycle::spawn_unchecked<<rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::ExtraBackendMethods>::spawn_named_thread<rustc_codegen_ssa::back::write::spawn_work<rustc_codegen_llvm::LlvmCodegenBackend>::
{closure#0}, ()>::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} () at /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7/library\std\src\thread\lifecycle.rs:91
warning: Could not find DWO CU /rustc/9b1f8ff42d110b0ca138116745be921df5dc97e7\build\x86_64-pc-windows-gnu\stage1-std\x86_64-pc-windows-gnu\release\deps\std-0ac5f935d4de8f8a.std.6b50adac5d8db169-cgu.0.rcgu.dwo(0xd5576954f1dda941) referenced by CU at offset 0x0 [in module
 C:\msys64\home\we\rust\build\x86_64-pc-windows-gnu\stage1\bin\std-0ac5f935d4de8f8a.dll]
#28 0x00007ffd4365a5ae in std::sys::thread::windows::Thread::new::thread_start () at library\alloc\src/boxed.rs:2206
#29 0x00007ffdb3f17374 in KERNEL32!BaseThreadInitThunk () from C:\Windows\System32\kernel32.dll
#30 0x00007ffdb5a9cc91 in ntdll!RtlUserThreadStart () from C:\Windows\SYSTEM32\ntdll.dll
#31 0x0000000000000000 in ?? ()

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.O-windows-gnuToolchain: GNU, Operating system: WindowsT-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions