Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Debug LLVM + -Z time-llvm-passes asserts compiling simplest program. #48329

Open
emilio opened this issue Feb 18, 2018 · 6 comments
Open

Debug LLVM + -Z time-llvm-passes asserts compiling simplest program. #48329

emilio opened this issue Feb 18, 2018 · 6 comments
Labels
A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@emilio
Copy link
Contributor

emilio commented Feb 18, 2018

For context, I was trying to add PGO support to rustc, and I was adding a couple LLVM passes for profile info generation and usage, and the only thing I managed to do is crashing rustc under LLVM, or that my changes did nothing, so I built with debug LLVM to check whether I was doing something obviously wrong. Furthermore, I wanted to see if the passes I was adding were actually being executed, thus I tried -Z time-llvm-passes.

For the record, I am hitting release crashes under llvm::SelectionDAGISel with my changes (without -Z time-llvm-passes), so I suspect this is a more serious issue than "LLVM uses a static hashmap to store timing info". These assertions reproduce without any change on 16362c7.

On a rustc compiled with the following config.toml (comments stripped for brevity):

[llvm]
optimize = false
assertions = true

[build]
profiler = true # This is because I was trying to do PGO stuff, but I suspect it's unnecessary.
configure-args = ['--enable-profiler', '--enable-debug', '--enable-llvm-assertions'] # I'd ignore this since I tweaked other fields manually.
[install]
[rust]
debug-assertions = true
debuginfo = true
debuginfo-lines = true
[target.x86_64-unknown-linux-gnu]
[dist]

Compiled from 16362c7, with:

$ ./x.py build --stage 1 src/libtest

Given a t.rs file like:

fn main() {}

Building it with:

./build/x86_64-unknown-linux-gnu/stage1/bin/rustc -Z time-llvm-passes t.rs

Asserts with:

rustc: /home/emilio/projects/moz/rust/src/llvm/lib/Support/Timer.cpp:133: void llvm::Timer::startTimer(): Assertion `!Running && "Cannot start a running timer"' failed.

I need to compile a slightly more complex file to be able to catch it under rr, but the stack is:

(rr) bt
#0  0x00007f54039a766b in raise () from /lib64/libc.so.6
#1  0x00007f54039a9381 in abort () from /lib64/libc.so.6
#2  0x00007f540399f8fa in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007f540399f972 in __assert_fail () from /lib64/libc.so.6
#4  0x00007f53f0b26c20 in llvm::Timer::startTimer (this=0x7f53e008f438) at /home/emilio/projects/moz/rust/src/llvm/lib/Support/Timer.cpp:133
#5  0x00007f53f02c29a2 in llvm::TimeRegion::TimeRegion (this=0x7f53e9e71f90, t=0x7f53e008f438) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/Support/Timer.h:149
#6  0x00007f53f0b27222 in llvm::NamedRegionTimer::NamedRegionTimer (this=0x7f53e9e71f90, Name=..., Description=..., GroupName=..., GroupDescription=..., Enabled=true)
    at /home/emilio/projects/moz/rust/src/llvm/lib/Support/Timer.cpp:215
#7  0x00007f53ef778cd6 in llvm::SelectionDAGISel::CodeGenAndEmitDAG (this=0x7f53d4002040) at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:883
#8  0x00007f53ef777154 in llvm::SelectionDAGISel::SelectBasicBlock (this=0x7f53d4002040, Begin=..., End=..., HadTailCall=@0x7f53e9e7285f: false)
    at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:664
#9  0x00007f53ef77cbaa in llvm::SelectionDAGISel::SelectAllBasicBlocks (this=0x7f53d4002040, Fn=...)
    at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1624
#10 0x00007f53ef775e3e in llvm::SelectionDAGISel::runOnMachineFunction (this=0x7f53d4002040, mf=...)
    at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:466
#11 0x00007f53ee213fad in (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction (this=0x7f53d4002040, MF=...)
    at /home/emilio/projects/moz/rust/src/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:175
#12 0x00007f53efaf72a3 in llvm::MachineFunctionPass::runOnFunction (this=0x7f53d4002040, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/MachineFunctionPass.cpp:62
#13 0x00007f53f07f353b in llvm::FPPassManager::runOnFunction (this=0x7f53d4004be0, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1520
#14 0x00007f53f07f36bc in llvm::FPPassManager::runOnModule (this=0x7f53d4004be0, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1541
#15 0x00007f53f07f3a0d in (anonymous namespace)::MPPassManager::runOnModule (this=0x7f53d40206b0, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1597
#16 0x00007f53f07f40f9 in llvm::legacy::PassManagerImpl::run (this=0x7f53d40042d0, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1700
#17 0x00007f53f07f42f1 in llvm::legacy::PassManager::run (this=0x7f53d400fc50, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1731
#18 0x00007f53ee0bf47e in LLVMRustWriteOutputFile (Target=0x7f53f50de6d0, PMR=0x7f53d400fc50, M=0x7f53f484f8a0, Path=0x7f53d4020660 "test.test1.rcgu.o", RustFileType=<optimized out>)
    at ../rustllvm/PassWrapper.cpp:530
#19 0x00007f53ede2e7a2 in rustc_trans::back::write::write_output_file (handler=0x7f53e9e738e0, target=0x2, pm=0x7f53e9e71bc0, m=0x0, output=0x7f53d400b270, 
    file_type=rustc_llvm::ffi::FileType::ObjectFile) at librustc_trans/back/write.rs:102
#20 0x00007f53ede15176 in rustc_trans::back::write::codegen::{{closure}}::{{closure}} (cpm=0x7f53d400fc50) at librustc_trans/back/write.rs:773
#21 rustc_trans::back::write::codegen::with_codegen (tm=0x7f53f50de6d0, llmod=<optimized out>, no_builtins=<optimized out>, f=...) at librustc_trans/back/write.rs:639
#22 rustc_trans::back::write::codegen::{{closure}} () at librustc_trans/back/write.rs:772
#23 0x00007f53ede0e22a in rustc::util::common::time (do_it=<optimized out>, what=..., f=...) at /home/emilio/projects/moz/rust/src/librustc/util/common.rs:120
#24 0x00007f53ede3086d in rustc_trans::back::write::codegen (cgcx=<optimized out>, diag_handler=<optimized out>, mtrans=..., config=<optimized out>, timeline=<optimized out>)
    at librustc_trans/back/write.rs:695
#25 0x00007f53ede37866 in rustc_trans::back::write::execute_work_item (cgcx=0x7f53e9e73ef8, work_item=..., timeline=<optimized out>) at librustc_trans/back/write.rs:1346
#26 0x00007f53ede01046 in rustc_trans::back::write::spawn_work::{{closure}} () at librustc_trans/back/write.rs:1970
#27 std::sys_common::backtrace::__rust_begin_short_backtrace (f=...) at /home/emilio/projects/moz/rust/src/libstd/sys_common/backtrace.rs:136
#28 0x00007f53ede79c2e in std::thread::Builder::spawn::{{closure}}::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:406
#29 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:293
#30 std::panicking::try::do_call (data=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:479
#31 0x00007f5403df628f in __rust_maybe_catch_panic (f=0x0, data=0x2 <error: Cannot access memory at address 0x2>, data_ptr=0x7f53e9e746f8, vtable_ptr=0x7f53e9e746f0)
    at libpanic_unwind/lib.rs:102
#32 0x00007f53ede79b1c in std::panicking::try (f=...) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:458
#33 0x00007f53ede0b7e9 in std::panic::catch_unwind (f=...) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:358
#34 std::thread::Builder::spawn::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:405
#35 <F as alloc::boxed::FnBox<A>>::call_box (self=0x7f53dc002a80, args=<optimized out>) at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:788
#36 0x00007f5403dd1fec in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::---Type <return> to continue, or q <return> to quit---
hbc01871d4ce3ef85 (self=<error reading variable: access outside bounds of object referenced via synthetic pointer>, args=<optimized out>)
    at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:798
#37 std::sys_common::thread::start_thread (main=<optimized out>) at libstd/sys_common/thread.rs:24
#38 std::sys::unix::thread::Thread::new::thread_start (main=0x7f53e0023250) at libstd/sys/unix/thread.rs:90
#39 0x00007f540355461b in start_thread () from /lib64/libpthread.so.0
#40 0x00007f5403a8798f in clone () from /lib64/libc.so.6
(rr)

The threads are doing:

(rr) info thread
  Id   Target Id         Frame
  1    Thread 31405.31405 (mmap_hardlink_3_rustc) 0x00007f5403555bdd in pthread_join () from /lib64/libpthread.so.0
  2    Thread 31405.31411 (rustc) 0x0000000070000002 in ?? ()
* 3    Thread 31405.31429 (rustc) 0x00007f54039a766b in raise () from /lib64/libc.so.6
  4    Thread 31405.31414 (rustc) 0x0000000070000002 in ?? ()
  5    Thread 31405.31417 (rustc) 0x0000000070000002 in ?? ()
  6    Thread 31405.31426 (rustc) 0x00007f53ee144373 in llvm::SmallPtrSetImplBase::insert_imp (this=0x7f53ea372a60, Ptr=0x7f53e0054a30)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/SmallPtrSet.h:132
  7    Thread 31405.31432 (rustc)
    0x00007f53f07f7236 in llvm::DenseMapIterator<void const*, llvm::Pass*, llvm::DenseMapInfo<void const*>, llvm::detail::DenseMapPair<void const*, llvm::Pass*>, true>::DenseMapIterator<false, void> (this=0x7f53e9971e20, I=...) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:1149
  8    Thread 31405.31435 (rustc)
    llvm::DenseMapBase<llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >, unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::initEmpty (this=0x7f53cc025348) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:347
  9    Thread 31405.31438 (rustc) 0x00007f53ee416f36 in llvm::dyn_cast<llvm::InvokeInst, llvm::Instruction> (Val=0x7f53f57a1d08)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/Support/Casting.h:333

Thread 1:

(rr) thread 1
[Switching to thread 1 (Thread 31405.31405)]
#0  0x00007f5403555bdd in pthread_join () from /lib64/libpthread.so.0
(rr) bt
#0  0x00007f5403555bdd in pthread_join () from /lib64/libpthread.so.0
#1  0x00007f5403dd2280 in std::sys::unix::thread::Thread::join (self=...) at libstd/sys/unix/thread.rs:176
#2  0x00007f54040fa8f2 in <std::thread::JoinInner<T>>::join (self=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:1200
#3  <std::thread::JoinHandle<T>>::join (self=...) at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:1322
#4  0x00007f540420b521 in rustc_driver::in_rustc_thread (f=...) at librustc_driver/lib.rs:1431
#5  rustc_driver::monitor (f=...) at librustc_driver/lib.rs:1440
#6  rustc_driver::run (run_compiler=...) at librustc_driver/lib.rs:158
#7  rustc_driver::main () at librustc_driver/lib.rs:1512
#8  0x000056323a130eb6 in std::rt::lang_start::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/rt.rs:74
#9  0x00007f5403da3788 in std::rt::lang_start_internal::{{closure}} () at libstd/rt.rs:59
#10 std::panicking::try::do_call (data=0x7fffba2d4918 "XI-\272\377\177\000") at libstd/panicking.rs:479
#11 0x00007f5403df628f in __rust_maybe_catch_panic (f=0xffffffffffffffda, data=0x7f53fcbe99d0 "\263z\000", data_ptr=0x7fffba2d4928, vtable_ptr=0x7fffba2d4920) at libpanic_unwind/lib.rs:102
#12 0x00007f5403da367a in std::panicking::try (f=...) at libstd/panicking.rs:458
#13 0x00007f5403db9c67 in std::panic::catch_unwind (f=...) at libstd/panic.rs:358
#14 std::rt::lang_start_internal (main=..., argc=<optimized out>, argv=0x7fffba2d4b58) at libstd/rt.rs:58
#15 0x000056323a130ea2 in main ()
#16 0x00007f540399100a in __libc_start_main () from /lib64/libc.so.6
#17 0x000056323a130d7a in _start ()
(rr)

Thread 2:

(rr) bt
#0  0x0000000070000002 in ?? ()
#1  0x00007f54044da83f in _raw_syscall () at /home/emilio/projects/moz/rr/src/preload/raw_syscall.S:120
#2  0x00007f54044d7d84 in traced_raw_syscall (call=<optimized out>) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:203
#3  sys_readlink (call=<optimized out>) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:1866
#4  syscall_hook_internal (call=0x7f53fbbe8fa0) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:2496
#5  0x00007f54044d61a1 in syscall_hook (call=0x7f53fbbe8fa0) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:2576
#6  0x00007f54044d58da in _syscall_hook_trampoline () at /home/emilio/projects/moz/rr/src/preload/syscall_hook.S:282
#7  0x00007f54044d590a in __morestack () at /home/emilio/projects/moz/rr/src/preload/syscall_hook.S:417
#8  0x00007f54044d5925 in _syscall_hook_trampoline_48_3d_00_f0_ff_ff () at /home/emilio/projects/moz/rr/src/preload/syscall_hook.S:428
#9  0x00007f540355acc1 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#10 0x00007f5403dccb10 in std::sys::unix::condvar::Condvar::wait (self=<optimized out>, mutex=<optimized out>) at libstd/sys/unix/condvar.rs:78
#11 std::sys_common::condvar::Condvar::wait (mutex=<optimized out>, self=<optimized out>) at libstd/sys_common/condvar.rs:51
#12 std::sync::condvar::Condvar::wait (self=<optimized out>, guard=...) at libstd/sync/condvar.rs:212
#13 0x00007f5403de38f8 in std::thread::park () at libstd/thread/mod.rs:800
#14 0x00007f5403db7d70 in std::sync::mpsc::blocking::WaitToken::wait (self=...) at libstd/sync/mpsc/blocking.rs:81
#15 0x00007f53edd4325a in <std::sync::mpsc::stream::Packet<T>>::recv (self=0x7f53dc001bc0, deadline=...) at /home/emilio/projects/moz/rust/src/libstd/sync/mpsc/stream.rs:210
#16 0x00007f53ede45afe in <std::sync::mpsc::Receiver<T>>::recv (self=0x7f53fcbde2b8) at /home/emilio/projects/moz/rust/src/libstd/sync/mpsc/mod.rs:1210
#17 0x00007f53edd98ab1 in rustc_trans::back::write::OngoingCrateTranslation::wait_for_signal_to_translate_item (self=<optimized out>) at librustc_trans/back/write.rs:2256
#18 rustc_trans::base::trans_crate (tcx=..., rx=...) at librustc_trans/base.rs:837
#19 0x00007f53edd664be in <rustc_trans::LlvmTransCrate as rustc_trans_utils::trans_crate::TransCrate>::trans_crate (self=<optimized out>, tcx=..., rx=...) at librustc_trans/lib.rs:226
#20 0x00007f540414aa5d in rustc_driver::driver::phase_4_translate_to_llvm::{{closure}} () at librustc_driver/driver.rs:1103
#21 rustc::util::common::time (do_it=<optimized out>, what=..., f=...) at /home/emilio/projects/moz/rust/src/librustc/util/common.rs:120
#22 0x00007f54041177d9 in rustc_driver::driver::phase_4_translate_to_llvm (trans=..., tcx=..., rx=...) at librustc_driver/driver.rs:1102
#23 0x00007f54041d0ff6 in rustc_driver::driver::compile_input::{{closure}} (tcx=..., analysis=..., rx=..., result=...) at librustc_driver/driver.rs:252
#24 0x00007f54041cc7c9 in rustc_driver::driver::phase_3_run_analysis_passes::{{closure}} (tcx=...) at librustc_driver/driver.rs:1085
#25 rustc::ty::context::tls::enter::{{closure}} (tls=<optimized out>) at /home/emilio/projects/moz/rust/src/librustc/ty/context.rs:1573
#26 <std::thread::local::LocalKey<T>>::try_with (self=<optimized out>, f=...) at /home/emilio/projects/moz/rust/src/libstd/thread/local.rs:377
#27 <std::thread::local::LocalKey<T>>::with (self=<optimized out>, f=...) at /home/emilio/projects/moz/rust/src/libstd/thread/local.rs:288
#28 0x00007f54041c7337 in rustc::ty::context::tls::enter (gcx=<optimized out>, interners=<optimized out>, f=...) at /home/emilio/projects/moz/rust/src/librustc/ty/context.rs:1570
#29 rustc::ty::context::tls::enter_global::{{closure}} (span_dbg=<optimized out>) at /home/emilio/projects/moz/rust/src/librustc/ty/context.rs:1557
#30 <std::thread::local::LocalKey<T>>::try_with (self=0x7f54044d15e8 <ref.41.llvm.E49595CD>, f=...) at /home/emilio/projects/moz/rust/src/libstd/thread/local.rs:377
#31 <std::thread::local::LocalKey<T>>::with (self=0x7f54044d15e8 <ref.41.llvm.E49595CD>, f=...) at /home/emilio/projects/moz/rust/src/libstd/thread/local.rs:288
#32 0x00007f54041f4192 in rustc::ty::context::tls::enter_global (gcx=..., f=...) at /home/emilio/projects/moz/rust/src/librustc/ty/context.rs:1554
#33 rustc::ty::context::TyCtxt::create_and_enter (s=0x7f53fcbe4c90, cstore=..., local_providers=..., extern_providers=..., arenas=<optimized out>, resolutions=..., hir=..., 
    on_disk_query_result_cache=..., crate_name=..., tx=..., output_filenames=<optimized out>, f=...) at /home/emilio/projects/moz/rust/src/librustc/ty/context.rs:1197
#34 0x00007f5404112e4d in rustc_driver::driver::phase_3_run_analysis_passes (sess=0x7f53fcbe4c90, cstore=..., trans=..., control=<optimized out>, hir_map=..., analysis=..., 
    resolutions=..., arenas=<optimized out>, name=..., output_filenames=<optimized out>, f=...) at librustc_driver/driver.rs:998
#35 rustc_driver::driver::compile_input (trans=..., sess=<optimized out>, cstore=0x7f53f40b5ad0, input_path=<optimized out>, input=<optimized out>, outdir=<optimized out>, 
    output=<optimized out>, addl_plugins=..., control=<optimized out>) at librustc_driver/driver.rs:214
#36 0x00007f54042025b8 in rustc_driver::run_compiler (args=..., callbacks=..., file_loader=..., emitter_dest=...) at librustc_driver/lib.rs:506
#37 0x00007f540416ca74 in rustc_driver::main::{{closure}} () at librustc_driver/lib.rs:1519
#38 rustc_driver::run::{{closure}} () at librustc_driver/lib.rs:159
#39 rustc_driver::monitor::{{closure}} () at librustc_driver/lib.rs:1441
#40 std::sys_common::backtrace::__rust_begin_short_backtrace (f=...) at /home/emilio/projects/moz/rust/src/libstd/sys_common/backtrace.rs:136
#41 0x00007f5403df628f in __rust_maybe_catch_panic (f=0xca, data=0x56323abb3cb8 "\002\000", data_ptr=0x7f53fcbe8a58, vtable_ptr=0x7f53fcbe8a50) at libpanic_unwind/lib.rs:102
#42 0x00007f540420e8b4 in std::panicking::try (f=...) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:458
#43 0x00007f540410d39f in std::panic::catch_unwind (f=...) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:358
#44 std::thread::Builder::spawn::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:405
#45 <F as alloc::boxed::FnBox<A>>::call_box (self=0x56323abb3c40, args=<optimized out>) at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:788
#46 0x00007f5403dd1fec in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::hbc01871d4ce3ef85 (self=<error reading variable: access outside bounds of object referenced via synthetic pointer>, args=<optimized out>)
    at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:798
#47 std::sys_common::thread::start_thread (main=<optimized out>) at libstd/sys_common/thread.rs:24
#48 std::sys::unix::thread::Thread::new::thread_start (main=0x56323abb3d60) at libstd/sys/unix/thread.rs:90
#49 0x00007f540355461b in start_thread () from /lib64/libpthread.so.0
#50 0x00007f5403a8798f in clone () from /lib64/libc.so.6

Thread 3 is the crashing thread, with the first stack.

Thread 4:

(rr) bt
#0  0x0000000070000002 in ?? ()
#1  0x00007f54044da83f in _raw_syscall () at /home/emilio/projects/moz/rr/src/preload/raw_syscall.S:120
#2  0x00007f54044d7d84 in traced_raw_syscall (call=<optimized out>) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:203
#3  sys_readlink (call=<optimized out>) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:1866
#4  syscall_hook_internal (call=0x7f53eab77fa0) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:2496
#5  0x00007f54044d61a1 in syscall_hook (call=0x7f53eab77fa0) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:2576
#6  0x00007f54044d58da in _syscall_hook_trampoline () at /home/emilio/projects/moz/rr/src/preload/syscall_hook.S:282
#7  0x00007f54044d590a in __morestack () at /home/emilio/projects/moz/rr/src/preload/syscall_hook.S:417
#8  0x00007f54044d5925 in _syscall_hook_trampoline_48_3d_00_f0_ff_ff () at /home/emilio/projects/moz/rr/src/preload/syscall_hook.S:428
#9  0x00007f540355acc1 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#10 0x00007f5403dccb10 in std::sys::unix::condvar::Condvar::wait (self=<optimized out>, mutex=<optimized out>) at libstd/sys/unix/condvar.rs:78
#11 std::sys_common::condvar::Condvar::wait (mutex=<optimized out>, self=<optimized out>) at libstd/sys_common/condvar.rs:51
#12 std::sync::condvar::Condvar::wait (self=<optimized out>, guard=...) at libstd/sync/condvar.rs:212
#13 0x00007f5403de38f8 in std::thread::park () at libstd/thread/mod.rs:800
#14 0x00007f5403db7d70 in std::sync::mpsc::blocking::WaitToken::wait (self=...) at libstd/sync/mpsc/blocking.rs:81
#15 0x00007f54000f1ad1 in <std::sync::mpsc::stream::Packet<T>>::recv (self=0x7f53dc001e00, deadline=...) at /home/emilio/projects/moz/rust/src/libstd/sync/mpsc/stream.rs:210
#16 0x00007f54000f5f9b in <std::sync::mpsc::Receiver<T>>::recv (self=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/sync/mpsc/mod.rs:1210
#17 <std::sync::mpsc::IntoIter<T> as core::iter::iterator::Iterator>::next (self=0x7f53ead778d0) at /home/emilio/projects/moz/rust/src/libstd/sync/mpsc/mod.rs:1589
#18 0x00007f54000eee0f in jobserver::imp::spawn_helper::{{closure}} () at /home/emilio/.cargo/registry/src/github.mirror.nvdadr.com-1ecc6299db9ec823/jobserver-0.1.9/src/lib.rs:599
#19 std::sys_common::backtrace::__rust_begin_short_backtrace (f=...) at /home/emilio/projects/moz/rust/src/libstd/sys_common/backtrace.rs:136
#20 0x00007f54000f1810 in std::thread::Builder::spawn::{{closure}}::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:406
#21 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:293
#22 std::panicking::try::do_call (data=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:479
#23 0x00007f5403df628f in __rust_maybe_catch_panic (f=0xca, data=0x7f53f508d89c "\000", data_ptr=0x7f53ead77a00, vtable_ptr=0x7f53ead779f8) at libpanic_unwind/lib.rs:102
#24 0x00007f54000f1763 in std::panicking::try (f=...) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:458
#25 0x00007f54000f041e in std::panic::catch_unwind (f=...) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:358
#26 std::thread::Builder::spawn::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:405
#27 <F as alloc::boxed::FnBox<A>>::call_box (self=0x7f53f508d910, args=<optimized out>) at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:788
#28 0x00007f5403dd1fec in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::hbc01871d4ce3ef85 (self=<error reading variable: access outside bounds of object referenced via synthetic pointer>, args=<optimized out>)
    at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:798
#29 std::sys_common::thread::start_thread (main=<optimized out>) at libstd/sys_common/thread.rs:24
#30 std::sys::unix::thread::Thread::new::thread_start (main=0x7f53f508d850) at libstd/sys/unix/thread.rs:90
#31 0x00007f540355461b in start_thread () from /lib64/libpthread.so.0
#32 0x00007f5403a8798f in clone () from /lib64/libc.so.6

Thread 5:

(rr) bt
#0  0x0000000070000002 in ?? ()
#1  0x00007f54044da83f in _raw_syscall () at /home/emilio/projects/moz/rr/src/preload/raw_syscall.S:120
#2  0x00007f54044d7d84 in traced_raw_syscall (call=<optimized out>) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:203
#3  sys_readlink (call=<optimized out>) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:1866
#4  syscall_hook_internal (call=0x7f53ea676fa0) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:2496
#5  0x00007f54044d61a1 in syscall_hook (call=0x7f53ea676fa0) at /home/emilio/projects/moz/rr/src/preload/syscallbuf.c:2576
#6  0x00007f54044d58da in _syscall_hook_trampoline () at /home/emilio/projects/moz/rr/src/preload/syscall_hook.S:282
#7  0x00007f54044d590a in __morestack () at /home/emilio/projects/moz/rr/src/preload/syscall_hook.S:417
#8  0x00007f54044d5925 in _syscall_hook_trampoline_48_3d_00_f0_ff_ff () at /home/emilio/projects/moz/rr/src/preload/syscall_hook.S:428
#9  0x00007f540355acc1 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#10 0x00007f5403dccb10 in std::sys::unix::condvar::Condvar::wait (self=<optimized out>, mutex=<optimized out>) at libstd/sys/unix/condvar.rs:78
#11 std::sys_common::condvar::Condvar::wait (mutex=<optimized out>, self=<optimized out>) at libstd/sys_common/condvar.rs:51
#12 std::sync::condvar::Condvar::wait (self=<optimized out>, guard=...) at libstd/sync/condvar.rs:212
#13 0x00007f5403de38f8 in std::thread::park () at libstd/thread/mod.rs:800
#14 0x00007f5403db7d70 in std::sync::mpsc::blocking::WaitToken::wait (self=...) at libstd/sync/mpsc/blocking.rs:81
#15 0x00007f53edd6addf in <std::sync::mpsc::shared::Packet<T>>::recv (self=0x7f53f508b4a0, deadline=...) at /home/emilio/projects/moz/rust/src/libstd/sync/mpsc/shared.rs:239
#16 0x00007f53ede45560 in <std::sync::mpsc::Receiver<T>>::recv (self=0x7f53ea8758b0) at /home/emilio/projects/moz/rust/src/libstd/sync/mpsc/mod.rs:1218
#17 0x00007f53ede0277c in rustc_trans::back::write::start_executing_work::{{closure}} () at librustc_trans/back/write.rs:1757
#18 std::sys_common::backtrace::__rust_begin_short_backtrace (f=...) at /home/emilio/projects/moz/rust/src/libstd/sys_common/backtrace.rs:136
#19 0x00007f53ede79bdc in std::thread::Builder::spawn::{{closure}}::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:406
#20 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:293
#21 std::panicking::try::do_call (data=0x7f53ea876498 "\000") at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:479
#22 0x00007f5403df628f in __rust_maybe_catch_panic (f=0xca, data=0x7f53f508df3c "\000", data_ptr=0x7f53ea876638, vtable_ptr=0x7f53ea876630) at libpanic_unwind/lib.rs:102
#23 0x00007f53ede79a2c in std::panicking::try (f=...) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:458
#24 0x00007f53ede0b9aa in std::panic::catch_unwind (f=...) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:358
#25 std::thread::Builder::spawn::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:405
#26 <F as alloc::boxed::FnBox<A>>::call_box (self=0x7f53f508ec70, args=<optimized out>) at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:788
#27 0x00007f5403dd1fec in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::hbc01871d4ce3ef85 (self=<error reading variable: access outside bounds of object referenced via synthetic pointer>, args=<optimized out>)
    at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:798
#28 std::sys_common::thread::start_thread (main=<optimized out>) at libstd/sys_common/thread.rs:24
#29 std::sys::unix::thread::Thread::new::thread_start (main=0x7f53f508ee20) at libstd/sys/unix/thread.rs:90
#30 0x00007f540355461b in start_thread () from /lib64/libpthread.so.0
#31 0x00007f5403a8798f in clone () from /lib64/libc.so.6

Thread 6 is running the same LLVM pass:

(rr) bt
#0  0x00007f53ee144373 in llvm::SmallPtrSetImplBase::insert_imp (this=0x7f53ea372a60, Ptr=0x7f53e0054a30) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/SmallPtrSet.h:132
#1  0x00007f53ee63d62a in llvm::SmallPtrSetImpl<llvm::SDNode*>::insert (this=0x7f53ea372a60, Ptr=0x7f53e0054a30)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/SmallPtrSet.h:372
#2  0x00007f53ef6b84b1 in llvm::ScheduleDAGSDNodes::BuildSchedUnits (this=0x7f53e00a3f20) at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:334
#3  0x00007f53ef6b914c in llvm::ScheduleDAGSDNodes::BuildSchedGraph (this=0x7f53e00a3f20, AA=0x0)
    at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:518
#4  0x00007f53ef6a6b9f in (anonymous namespace)::ScheduleDAGRRList::Schedule (this=0x7f53e00a3f20)
    at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:365
#5  0x00007f53ef6b6bfb in llvm::ScheduleDAGSDNodes::Run (this=0x7f53e00a3f20, dag=0x7f53e00549f0, bb=0x7f53e0087ed8)
    at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:63
#6  0x00007f53ef778d09 in llvm::SelectionDAGISel::CodeGenAndEmitDAG (this=0x7f53e00080f0) at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:884
#7  0x00007f53ef77baac in llvm::SelectionDAGISel::SelectAllBasicBlocks (this=0x7f53e00080f0, Fn=...)
    at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1422
#8  0x00007f53ef775e3e in llvm::SelectionDAGISel::runOnMachineFunction (this=0x7f53e00080f0, mf=...)
    at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:466
#9  0x00007f53ee213fad in (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction (this=0x7f53e00080f0, MF=...)
    at /home/emilio/projects/moz/rust/src/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:175
#10 0x00007f53efaf72a3 in llvm::MachineFunctionPass::runOnFunction (this=0x7f53e00080f0, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/MachineFunctionPass.cpp:62
#11 0x00007f53f07f353b in llvm::FPPassManager::runOnFunction (this=0x7f53e0095140, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1520
#12 0x00007f53f07f36bc in llvm::FPPassManager::runOnModule (this=0x7f53e0095140, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1541
#13 0x00007f53f07f3a0d in (anonymous namespace)::MPPassManager::runOnModule (this=0x7f53e00562a0, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1597
#14 0x00007f53f07f40f9 in llvm::legacy::PassManagerImpl::run (this=0x7f53e000a860, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1700
#15 0x00007f53f07f42f1 in llvm::legacy::PassManager::run (this=0x7f53e0090150, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1731
#16 0x00007f53ee0bf47e in LLVMRustWriteOutputFile (Target=0x7f53f56b77e0, PMR=0x7f53e0090150, M=0x7f53f4965900, Path=0x7f53e0011850 "test.test0.rcgu.o", RustFileType=<optimized out>)
    at ../rustllvm/PassWrapper.cpp:530
#17 0x00007f53ede2e7a2 in rustc_trans::back::write::write_output_file (handler=0x7f53ea3748e0, target=0x7f53ea372a60, pm=0x7f53e0054a30, m=0x7f53ea372a88, output=0x7f53e0011080, 
    file_type=rustc_llvm::ffi::FileType::ObjectFile) at librustc_trans/back/write.rs:102
#18 0x00007f53ede15176 in rustc_trans::back::write::codegen::{{closure}}::{{closure}} (cpm=0x7f53e0090150) at librustc_trans/back/write.rs:773
#19 rustc_trans::back::write::codegen::with_codegen (tm=0x7f53f56b77e0, llmod=<optimized out>, no_builtins=<optimized out>, f=...) at librustc_trans/back/write.rs:639
#20 rustc_trans::back::write::codegen::{{closure}} () at librustc_trans/back/write.rs:772
#21 0x00007f53ede0e22a in rustc::util::common::time (do_it=<optimized out>, what=..., f=...) at /home/emilio/projects/moz/rust/src/librustc/util/common.rs:120
#22 0x00007f53ede3086d in rustc_trans::back::write::codegen (cgcx=<optimized out>, diag_handler=<optimized out>, mtrans=..., config=<optimized out>, timeline=<optimized out>)
    at librustc_trans/back/write.rs:695
#23 0x00007f53ede37866 in rustc_trans::back::write::execute_work_item (cgcx=0x7f53ea374ef8, work_item=..., timeline=<optimized out>) at librustc_trans/back/write.rs:1346
#24 0x00007f53ede01046 in rustc_trans::back::write::spawn_work::{{closure}} () at librustc_trans/back/write.rs:1970
#25 std::sys_common::backtrace::__rust_begin_short_backtrace (f=...) at /home/emilio/projects/moz/rust/src/libstd/sys_common/backtrace.rs:136
#26 0x00007f53ede79c2e in std::thread::Builder::spawn::{{closure}}::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:406
#27 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:293
#28 std::panicking::try::do_call (data=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:479
#29 0x00007f5403df628f in __rust_maybe_catch_panic (f=0x7f53ea372a98, data=0x7f53ea372a60 "\006", data_ptr=0x7f53ea3756f8, vtable_ptr=0x7f53ea3756f0) at libpanic_unwind/lib.rs:102
#30 0x00007f53ede79b1c in std::panicking::try (f=...) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:458
#31 0x00007f53ede0b7e9 in std::panic::catch_unwind (f=...) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:358
#32 std::thread::Builder::spawn::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:405
#33 <F as alloc::boxed::FnBox<A>>::call_box (self=0x7f53dc001130, args=<optimized out>) at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:788
#34 0x00007f5403dd1fec in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::hbc01871d4ce3ef85 (self=<error reading variable: access outside bounds of object referenced via synthetic pointer>, args=<optimized out>)
#35 std::sys_common::thread::start_thread (main=<optimized out>) at libstd/sys_common/thread.rs:24
#36 std::sys::unix::thread::Thread::new::thread_start (main=0x7f53e4000d00) at libstd/sys/unix/thread.rs:90
#37 0x00007f540355461b in start_thread () from /lib64/libpthread.so.0
#38 0x00007f5403a8798f in clone () from /lib64/libc.so.6

Thread 7:

(rr) thread 7
[Switching to thread 7 (Thread 31405.31432)]
#0  0x00007f53f07f7236 in llvm::DenseMapIterator<void const*, llvm::Pass*, llvm::DenseMapInfo<void const*>, llvm::detail::DenseMapPair<void const*, llvm::Pass*>, true>::DenseMapIterator<false, void> (this=0x7f53e9971e20, I=...) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:1149
1149	      : DebugEpochBase::HandleBase(I), Ptr(I.Ptr), End(I.End) {}
(rr) bt
#0  0x00007f53f07f7236 in llvm::DenseMapIterator<void const*, llvm::Pass*, llvm::DenseMapInfo<void const*>, llvm::detail::DenseMapPair<void const*, llvm::Pass*>, true>::DenseMapIterator<false, void> (this=0x7f53e9971e20, I=...) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:1149
#1  0x00007f53f07f194c in llvm::PMDataManager::findAnalysisPass (this=0x7f53d8001130, AID=0x7f53f3ff2a08 <llvm::BasicAAWrapperPass::ID>, SearchParent=false)
    at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1096
#2  0x00007f53f07efbc0 in llvm::PMTopLevelManager::findAnalysisPass (this=0x7f53d80016d0, AID=0x7f53f3ff2a08 <llvm::BasicAAWrapperPass::ID>)
    at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:725
#3  0x00007f53f07f19cb in llvm::PMDataManager::findAnalysisPass (this=0x7f53d8001130, AID=0x7f53f3ff2a08 <llvm::BasicAAWrapperPass::ID>, SearchParent=true)
    at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1103
#4  0x00007f53f07f07ad in llvm::PMDataManager::verifyPreservedAnalysis (this=0x7f53d8001130, P=0x7f53d800e480) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:867
#5  0x00007f53f07f35d8 in llvm::FPPassManager::runOnFunction (this=0x7f53d8001110, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1529
#6  0x00007f53f07f36bc in llvm::FPPassManager::runOnModule (this=0x7f53d8001110, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1541
#7  0x00007f53f07f3a0d in (anonymous namespace)::MPPassManager::runOnModule (this=0x7f53d8001a20, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1597
#8  0x00007f53f07f40f9 in llvm::legacy::PassManagerImpl::run (this=0x7f53d8001510, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1700
#9  0x00007f53f07f42f1 in llvm::legacy::PassManager::run (this=0x7f53d800ab30, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1731
#10 0x00007f53ee0bf47e in LLVMRustWriteOutputFile (Target=0x7f53f4fbb570, PMR=0x7f53d800ab30, M=0x7f53f407de60, Path=0x7f53d800a880 "test.test2.rcgu.o", RustFileType=<optimized out>)
    at ../rustllvm/PassWrapper.cpp:530
#11 0x00007f53ede2e7a2 in rustc_trans::back::write::write_output_file (handler=0x7f53e99728e0, target=0x7f53e9971e20, pm=0x7f53e9971e40, m=0x7f53d8003b10, output=0x7f53d800b070, 
    file_type=rustc_llvm::ffi::FileType::ObjectFile) at librustc_trans/back/write.rs:102
#12 0x00007f53ede15176 in rustc_trans::back::write::codegen::{{closure}}::{{closure}} (cpm=0x7f53d800ab30) at librustc_trans/back/write.rs:773
#13 rustc_trans::back::write::codegen::with_codegen (tm=0x7f53f4fbb570, llmod=<optimized out>, no_builtins=<optimized out>, f=...) at librustc_trans/back/write.rs:639
#14 rustc_trans::back::write::codegen::{{closure}} () at librustc_trans/back/write.rs:772
#15 0x00007f53ede0e22a in rustc::util::common::time (do_it=<optimized out>, what=..., f=...) at /home/emilio/projects/moz/rust/src/librustc/util/common.rs:120
#16 0x00007f53ede3086d in rustc_trans::back::write::codegen (cgcx=<optimized out>, diag_handler=<optimized out>, mtrans=..., config=<optimized out>, timeline=<optimized out>)
    at librustc_trans/back/write.rs:695
#17 0x00007f53ede37866 in rustc_trans::back::write::execute_work_item (cgcx=0x7f53e9972ef8, work_item=..., timeline=<optimized out>) at librustc_trans/back/write.rs:1346
#18 0x00007f53ede01046 in rustc_trans::back::write::spawn_work::{{closure}} () at librustc_trans/back/write.rs:1970
#19 std::sys_common::backtrace::__rust_begin_short_backtrace (f=...) at /home/emilio/projects/moz/rust/src/libstd/sys_common/backtrace.rs:136
#20 0x00007f53ede79c2e in std::thread::Builder::spawn::{{closure}}::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:406
#21 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:293
#22 std::panicking::try::do_call (data=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:479
#23 0x00007f5403df628f in __rust_maybe_catch_panic (f=0x7f53e9971e20, data=0x7f53e9971e20 "\020\022", data_ptr=0x7f53e99736f8, vtable_ptr=0x7f53e99736f0) at libpanic_unwind/lib.rs:102
#24 0x00007f53ede79b1c in std::panicking::try (f=...) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:458
#25 0x00007f53ede0b7e9 in std::panic::catch_unwind (f=...) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:358
#26 std::thread::Builder::spawn::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:405
#27 <F as alloc::boxed::FnBox<A>>::call_box (self=0x7f53dc003260, args=<optimized out>) at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:788
#28 0x00007f5403dd1fec in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::hbc01871d4ce3ef85 (self=<error reading variable: access outside bounds of object referenced via synthetic pointer>, args=<optimized out>)
    at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:798
#29 std::sys_common::thread::start_thread (main=<optimized out>) at libstd/sys_common/thread.rs:24
#30 std::sys::unix::thread::Thread::new::thread_start (main=0x7f53d4022590) at libstd/sys/unix/thread.rs:90
#31 0x00007f540355461b in start_thread () from /lib64/libpthread.so.0
#32 0x00007f5403a8798f in clone () from /lib64/libc.so.6

Thread 8:

(rr) thread 8
[Switching to thread 8 (Thread 31405.31435)]
#0  llvm::DenseMapBase<llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >, unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::initEmpty (this=0x7f53cc025348) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:347
347	      ::new (&B->getFirst()) KeyT(EmptyKey);
(rr) bt
#0  llvm::DenseMapBase<llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >, unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::initEmpty (this=0x7f53cc025348) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:347
#1  0x00007f53ee3b6cb7 in llvm::DenseMapBase<llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >, unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::moveFromOldBuckets (this=0x7f53cc025348, OldBucketsBegin=0x7f53cc049160, OldBucketsEnd=0x7f53cc051160)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:362
#2  0x00007f53ee3b6a5e in llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::grow (this=0x7f53cc025348, AtLeast=8192) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:739
#3  0x00007f53ee3b65c4 in llvm::DenseMapBase<llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >, unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::grow (this=0x7f53cc025348, AtLeast=8192) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:502
#4  0x00007f53ee3b5da5 in llvm::DenseMapBase<llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >, unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::InsertIntoBucketImpl<unsigned int> (this=0x7f53cc025348, Key=@0x7f53e947094c: 7219, Lookup=@0x7f53e947094c: 7219, TheBucket=0x7f53cc04acd0)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:546
#5  0x00007f53ee3b4ce7 in llvm::DenseMapBase<llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >, unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::InsertIntoBucket<unsigned int> (this=0x7f53cc025348, TheBucket=0x7f53cc04acd0, Key=@0x7f53e947094c: 7219)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:512
#6  0x00007f53ee3b3ad1 in llvm::DenseMapBase<llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >, unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::FindAndConstruct (this=0x7f53cc025348, Key=@0x7f53e947094c: 7219) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:304
#7  0x00007f53ee3b20c4 in llvm::DenseMapBase<llvm::DenseMap<unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >, unsigned int, std::pair<unsigned short, unsigned short>, llvm::DenseMapInfo<unsigned int>, llvm::detail::DenseMapPair<unsigned int, std::pair<unsigned short, unsigned short> > >::operator[] (this=0x7f53cc025348, Key=@0x7f53e947094c: 7219) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/DenseMap.h:308
#8  0x00007f53ee39971b in llvm::X86InstrInfo::AddTableEntry (R2MTable=..., M2RTable=..., RegOp=7222, MemOp=7219, Flags=68)
    at /home/emilio/projects/moz/rust/src/llvm/lib/Target/X86/X86InstrInfo.cpp:3747
#9  0x00007f53ee3993cf in llvm::X86InstrInfo::X86InstrInfo (this=0x7f53cc025110, STI=...) at /home/emilio/projects/moz/rust/src/llvm/lib/Target/X86/X86InstrInfo.cpp:3715
#10 0x00007f53ee3e75eb in llvm::X86Subtarget::X86Subtarget (this=0x7f53cc024ef0, TT=..., CPU=..., FS=..., TM=..., StackAlignOverride=0)
    at /home/emilio/projects/moz/rust/src/llvm/lib/Target/X86/X86Subtarget.cpp:371
#11 0x00007f53ee3f02e0 in llvm::make_unique<llvm::X86Subtarget, llvm::Triple const&, llvm::StringRef&, llvm::StringRef&, llvm::X86TargetMachine const&, unsigned int&> (args#0=..., 
    args#1=..., args#2=..., args#3=..., args#4=@0x7f53f503f0a4: 0) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/ADT/STLExtras.h:945
#12 0x00007f53ee3ede09 in llvm::X86TargetMachine::getSubtargetImpl (this=0x7f53f503ed90, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/Target/X86/X86TargetMachine.cpp:266
#13 0x00007f53ef955b05 in (anonymous namespace)::AtomicExpand::runOnFunction (this=0x7f53cc000b20, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/CodeGen/AtomicExpandPass.cpp:200
#14 0x00007f53f07f353b in llvm::FPPassManager::runOnFunction (this=0x7f53cc0070e0, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1520
#15 0x00007f53f07f36bc in llvm::FPPassManager::runOnModule (this=0x7f53cc0070e0, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1541
#16 0x00007f53f07f3a0d in (anonymous namespace)::MPPassManager::runOnModule (this=0x7f53cc001a20, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1597
#17 0x00007f53f07f40f9 in llvm::legacy::PassManagerImpl::run (this=0x7f53cc0014f0, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1700
#18 0x00007f53f07f42f1 in llvm::legacy::PassManager::run (this=0x7f53cc00a960, M=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1731
#19 0x00007f53ee0bf47e in LLVMRustWriteOutputFile (Target=0x7f53f503ed90, PMR=0x7f53cc00a960, M=0x7f53f571c4f0, Path=0x7f53cc00a820 "test.test3.rcgu.o", RustFileType=<optimized out>)
    at ../rustllvm/PassWrapper.cpp:530
#20 0x00007f53ede2e7a2 in rustc_trans::back::write::write_output_file (handler=0x7f53e94718e0, target=0x4, pm=0x7f53cc054660, m=0xffffffff, output=0x7f53cc00c060, 
    file_type=rustc_llvm::ffi::FileType::ObjectFile) at librustc_trans/back/write.rs:102
#21 0x00007f53ede15176 in rustc_trans::back::write::codegen::{{closure}}::{{closure}} (cpm=0x7f53cc00a960) at librustc_trans/back/write.rs:773
#22 rustc_trans::back::write::codegen::with_codegen (tm=0x7f53f503ed90, llmod=<optimized out>, no_builtins=<optimized out>, f=...) at librustc_trans/back/write.rs:639
#23 rustc_trans::back::write::codegen::{{closure}} () at librustc_trans/back/write.rs:772
#24 0x00007f53ede0e22a in rustc::util::common::time (do_it=<optimized out>, what=..., f=...) at /home/emilio/projects/moz/rust/src/librustc/util/common.rs:120
#25 0x00007f53ede3086d in rustc_trans::back::write::codegen (cgcx=<optimized out>, diag_handler=<optimized out>, mtrans=..., config=<optimized out>, timeline=<optimized out>)
    at librustc_trans/back/write.rs:695
#26 0x00007f53ede37866 in rustc_trans::back::write::execute_work_item (cgcx=0x7f53e9471ef8, work_item=..., timeline=<optimized out>) at librustc_trans/back/write.rs:1346
#27 0x00007f53ede01046 in rustc_trans::back::write::spawn_work::{{closure}} () at librustc_trans/back/write.rs:1970
#28 std::sys_common::backtrace::__rust_begin_short_backtrace (f=...) at /home/emilio/projects/moz/rust/src/libstd/sys_common/backtrace.rs:136
#29 0x00007f53ede79c2e in std::thread::Builder::spawn::{{closure}}::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:406
#30 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:293
#31 std::panicking::try::do_call (data=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:479
#32 0x00007f5403df628f in __rust_maybe_catch_panic (f=0x7f53cc054668, data=0x4 <error: Cannot access memory at address 0x4>, data_ptr=0x7f53e94726f8, vtable_ptr=0x7f53e94726f0)
    at libpanic_unwind/lib.rs:102
#33 0x00007f53ede79b1c in std::panicking::try (f=...) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:458
#34 0x00007f53ede0b7e9 in std::panic::catch_unwind (f=...) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:358
#35 std::thread::Builder::spawn::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:405
#36 <F as alloc::boxed::FnBox<A>>::call_box (self=0x7f53dc003dc0, args=<optimized out>) at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:788
#37 0x00007f5403dd1fec in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::hbc01871d4ce3ef85 (self=<error reading variable: access outside bounds of object referenced via synthetic pointer>, args=<optimized out>)
    at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:798
#38 std::sys_common::thread::start_thread (main=<optimized out>) at libstd/sys_common/thread.rs:24
#39 std::sys::unix::thread::Thread::new::thread_start (main=0x7f53dc001770) at libstd/sys/unix/thread.rs:90
#40 0x00007f540355461b in start_thread () from /lib64/libpthread.so.0
#41 0x00007f5403a8798f in clone () from /lib64/libc.so.6

Thread 9:

(rr) bt
#0  0x00007f53ee416f36 in llvm::dyn_cast<llvm::InvokeInst, llvm::Instruction> (Val=0x7f53f57a1d08) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/Support/Casting.h:333
#1  0x00007f53f087faf9 in (anonymous namespace)::Verifier::verifyDominatesUse (this=0x7f53d0007720, I=..., i=0) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/Verifier.cpp:3711
#2  0x00007f53f0880887 in (anonymous namespace)::Verifier::visitInstruction (this=0x7f53d0007720, I=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/Verifier.cpp:3825
#3  0x00007f53f087c8a0 in (anonymous namespace)::Verifier::visitLoadInst (this=0x7f53d0007720, LI=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/Verifier.cpp:3133
#4  0x00007f53f088f8ab in llvm::InstVisitor<(anonymous namespace)::Verifier, void>::visitLoad (this=0x7f53d0007720, I=...)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/IR/Instruction.def:153
#5  0x00007f53f0887d77 in llvm::InstVisitor<(anonymous namespace)::Verifier, void>::visit (this=0x7f53d0007720, I=...)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/IR/Instruction.def:153
#6  0x00007f53f086ac6f in (anonymous namespace)::Verifier::visit (this=0x7f53d0007720, I=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/Verifier.cpp:534
#7  0x00007f53f089736e in llvm::InstVisitor<(anonymous namespace)::Verifier, void>::visit<llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, false> > (this=0x7f53d0007720, Start=..., End=...) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/IR/InstVisitor.h:92
#8  0x00007f53f0894c8e in llvm::InstVisitor<(anonymous namespace)::Verifier, void>::visit (this=0x7f53d0007720, BB=...)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/IR/InstVisitor.h:107
#9  0x00007f53f088f1a0 in llvm::InstVisitor<(anonymous namespace)::Verifier, void>::visit<llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, true, false, void>, false, false> > (this=0x7f53d0007720, Start=..., End=...) at /home/emilio/projects/moz/rust/src/llvm/include/llvm/IR/InstVisitor.h:92
#10 0x00007f53f0887704 in llvm::InstVisitor<(anonymous namespace)::Verifier, void>::visit (this=0x7f53d0007720, F=...)
    at /home/emilio/projects/moz/rust/src/llvm/include/llvm/IR/InstVisitor.h:103
#11 0x00007f53f086a741 in (anonymous namespace)::Verifier::verify (this=0x7f53d0007720, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/Verifier.cpp:348
#12 0x00007f53f08857d2 in (anonymous namespace)::VerifierLegacyPass::runOnFunction (this=0x7f53d0001e70, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/Verifier.cpp:4659
#13 0x00007f53f07f353b in llvm::FPPassManager::runOnFunction (this=0x7f53d0001110, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1520
#14 0x00007f53f07f32db in llvm::legacy::FunctionPassManagerImpl::run (this=0x7f53d0000c20, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1469
#15 0x00007f53f07f2ec3 in llvm::legacy::FunctionPassManager::run (this=0x7f53d0000c00, F=...) at /home/emilio/projects/moz/rust/src/llvm/lib/IR/LegacyPassManager.cpp:1393
#16 0x00007f53ee0b9050 in LLVMRustRunFunctionPassManager (PMR=0x7f53d0000c00, M=<optimized out>) at ../rustllvm/PassWrapper.cpp:478
#17 0x00007f53ede37614 in rustc_trans::back::write::optimize (diag_handler=<optimized out>, cgcx=<optimized out>, mtrans=<optimized out>, config=<optimized out>, timeline=<optimized out>)
    at librustc_trans/back/write.rs:569
#18 rustc_trans::back::write::execute_work_item (cgcx=0x7f53e8f70ef8, work_item=..., timeline=<optimized out>) at librustc_trans/back/write.rs:1301
#19 0x00007f53ede01046 in rustc_trans::back::write::spawn_work::{{closure}} () at librustc_trans/back/write.rs:1970
#20 std::sys_common::backtrace::__rust_begin_short_backtrace (f=...) at /home/emilio/projects/moz/rust/src/libstd/sys_common/backtrace.rs:136
#21 0x00007f53ede79c2e in std::thread::Builder::spawn::{{closure}}::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:406
#22 <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:293
#23 std::panicking::try::do_call (data=<optimized out>) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:479
#24 0x00007f5403df628f in __rust_maybe_catch_panic (f=0x7f53f57a1d08, data=0x7f53f57a1d08 "\200Dy\365S\177", data_ptr=0x7f53e8f716f8, vtable_ptr=0x7f53e8f716f0)
    at libpanic_unwind/lib.rs:102
#25 0x00007f53ede79b1c in std::panicking::try (f=...) at /home/emilio/projects/moz/rust/src/libstd/panicking.rs:458
#26 0x00007f53ede0b7e9 in std::panic::catch_unwind (f=...) at /home/emilio/projects/moz/rust/src/libstd/panic.rs:358
#27 std::thread::Builder::spawn::{{closure}} () at /home/emilio/projects/moz/rust/src/libstd/thread/mod.rs:405
#28 <F as alloc::boxed::FnBox<A>>::call_box (self=0x7f53dc004920, args=<optimized out>) at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:788
#29 0x00007f5403dd1fec in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::hbc01871d4ce3ef85 (self=<error reading variable: access outside bounds of object referenced via synthetic pointer>, args=<optimized out>)
    at /home/emilio/projects/moz/rust/src/liballoc/boxed.rs:798
#30 std::sys_common::thread::start_thread (main=<optimized out>) at libstd/sys_common/thread.rs:24
#31 std::sys::unix::thread::Thread::new::thread_start (main=0x7f53dc0025b0) at libstd/sys/unix/thread.rs:90
#32 0x00007f540355461b in start_thread () from /lib64/libpthread.so.0
#33 0x00007f5403a8798f in clone () from /lib64/libc.so.6
@emilio
Copy link
Contributor Author

emilio commented Feb 18, 2018

cc @michaelwoerister, since I recall he mentioned about parallelizing LLVM's execution under rustc.

@michaelwoerister
Copy link
Member

Thanks for the detailed bug report, @emilio!

@alexcrichton, do you know if we are compiling LLVM with LLVM_ENABLE_THREADS?

@emilio
Copy link
Contributor Author

emilio commented Feb 19, 2018

@alexcrichton, do you know if we are compiling LLVM with LLVM_ENABLE_THREADS?

We are. Also, the crashes I was seeing were due to the ordering of the passes I did, which broke some assumptions in LLVM. I managed to get #48346 working after all :)

@michaelwoerister
Copy link
Member

Can this issue be closed then?

@emilio
Copy link
Contributor Author

emilio commented Feb 19, 2018

No, I meant the release crashes. The debug assertions and data race with -Z time-llvm-passes are still present.

@pietroalbini pietroalbini added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. C-bug Category: This is a bug. labels Feb 20, 2018
@tmandry
Copy link
Member

tmandry commented Nov 20, 2019

I hit this assertion today. It's reproducible when compiling a single file with a "hello world" main function. Adding -Ccodegen-units=1 stops the assertion from firing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

4 participants