Closed
Description
With LTO enabled, using rustc 1.9.0-dev (1a019dc86 2016-03-11)
on ARM, leads to a segfault in llvm:
gdb --args rustc parity/main.rs --crate-name parity --crate-type bin -C opt-level=3 -C lto --cfg feature=\"default\" --cfg feature=\"rpc\" --cfg feature=\"ethcore-rpc\" --out-dir /parity-master/target/release --emit=dep-info,link -L dependency=/parity-master/target/release -L dependency=/parity-master/target/release/deps --extern number_prefix=/parity-master/target/release/deps/libnumber_prefix-79886f004b9e099f.rlib --extern time=/parity-master/target/release/deps/libtime-78927599ef4c022b.rlib --extern ethcore_devtools=/parity-master/target/release/deps/libethcore_devtools-355c9d1ce0259a79.rlib --extern docopt=/parity-master/target/release/deps/libdocopt-3f1c0f9fd1bf4032.rlib --extern fdlimit=/parity-master/target/release/deps/libfdlimit-6385d001b4486604.rlib --extern log=/parity-master/target/release/deps/liblog-659d4388b7b05ff7.rlib --extern ethcore_rpc=/parity-master/target/release/deps/libethcore_rpc-a8be65bc1cfc0bb1.rlib --extern ethsync=/parity-master/target/release/deps/libethsync-34b8e56f1ab0d84e.rlib --extern rustc_serialize=/parity-master/target/release/deps/librustc_serialize-1ef07a8e16df0706.rlib --extern daemonize=/parity-master/target/release/deps/libdaemonize-86dcb9667bdf6652.rlib --extern rpassword=/parity-master/target/release/deps/librpassword-1b41f4e45c6c82f7.rlib --extern ctrlc=/parity-master/target/release/deps/libctrlc-c47f25746b88525b.rlib --extern ethcore_util=/parity-master/target/release/deps/libethcore_util-768aab1a12414a14.rlib --extern ethcore=/parity-master/target/release/deps/libethcore-76e1745e5ee2119f.rlib --extern ethminer=/parity-master/target/release/deps/libethminer-ed103fb72dcfe84a.rlib --extern env_logger=/parity-master/target/release/deps/libenv_logger-39002267300f4443.rlib -L native=/parity-master/target/release/build/sha3-852cf4d9ea9f3e73/out -L native=/parity-master/target/release/build/rust-crypto-a5c15010484ab93b/out -L native=/parity-master/target/release/build/librocksdb-sys-d6ed37f49ed8bf2a/out/lib -L native=/parity-master/target/release/build/eth-secp256k1-67c0faf4bfdaa4d4/out
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb2ea72a0 (LWP 32136)]
0xb4360cc0 in llvm::BasicAAResult::getModRefInfo(llvm::ImmutableCallSite, llvm::MemoryLocation const&) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
(gdb) bt
#0 0xb4360cc0 in llvm::BasicAAResult::getModRefInfo(llvm::ImmutableCallSite, llvm::MemoryLocation const&) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#1 0xb433ff2c in llvm::AAResults::getModRefInfo(llvm::ImmutableCallSite, llvm::MemoryLocation const&) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#2 0xb443c150 in llvm::MemoryDependenceAnalysis::getSimplePointerDependencyFrom(llvm::MemoryLocation const&, bool, llvm::ilist_iterator<llvm::Instruction>, llvm::BasicBlock*, llvm::Instruction*) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#3 0xb443c220 in llvm::MemoryDependenceAnalysis::getPointerDependencyFrom(llvm::MemoryLocation const&, bool, llvm::ilist_iterator<llvm::Instruction>, llvm::BasicBlock*, llvm::Instruction*) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#4 0xb443fe80 in llvm::MemoryDependenceAnalysis::GetNonLocalInfoForBlock(llvm::Instruction*, llvm::MemoryLocation const&, bool, llvm::BasicBlock*, std::vector<llvm::NonLocalDepEntry, std::allocator<llvm::NonLocalDepEntry> >*, unsigned int) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#5 0xb4443018 in llvm::MemoryDependenceAnalysis::getNonLocalPointerDepFromBB(llvm::Instruction*, llvm::PHITransAddr const&, llvm::MemoryLocation const&, bool, llvm::BasicBlock*, llvm::SmallVectorImpl<llvm::NonLocalDepResult>&, llvm::DenseMap<llvm::BasicBlock*, llvm::Value*, llvm::DenseMapInfo<llvm::BasicBlock*>, llvm::detail::DenseMapPair<llvm::BasicBlock*, llvm::Value*> >&, bool) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#6 0xb4444b88 in llvm::MemoryDependenceAnalysis::getNonLocalPointerDependency(llvm::Instruction*, llvm::SmallVectorImpl<llvm::NonLocalDepResult>&) () from /rust/bin/../lib/librustc_llvm-9026086f.so
#7 0xb4045318 in (anonymous namespace)::GVN::processNonLocalLoad(llvm::LoadInst*) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#8 0xb4047658 in (anonymous namespace)::GVN::processInstruction(llvm::Instruction*) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#9 0xb4048f10 in (anonymous namespace)::GVN::runOnFunction(llvm::Function&) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#10 0xb4749a14 in llvm::FPPassManager::runOnFunction(llvm::Function&) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#11 0xb4749cd0 in llvm::legacy::PassManagerImpl::run(llvm::Module&) ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#12 0xb464819c in LLVMRunPassManager ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
#13 0xb64ca818 in back::lto::run::h808941f87b30ef02Uzc ()
from /rust/bin/../lib/librustc_trans-9026086f.so
#14 0xb64d4da8 in back::write::execute_work_item::h5f42fc708a2638a1NOd ()
from /rust/bin/../lib/librustc_trans-9026086f.so
#15 0xb64cfe80 in back::write::run_passes::hfb1b468fd61a27acEAd ()
from /rust/bin/../lib/librustc_trans-9026086f.so
#16 0xb6eb93c0 in driver::phase_5_run_llvm_passes::h0d65899dcc6974e772a ()
from /rust/bin/../lib/librustc_driver-9026086f.so
#17 0xb6e8ffdc in driver::compile_input::h54981c39b9ca87cePca ()
from /rust/bin/../lib/librustc_driver-9026086f.so
#18 0xb6e7df08 in run_compiler::h52667a7f69c30bb9lQc ()
from /rust/bin/../lib/librustc_driver-9026086f.so
#19 0xb6e7b818 in sys_common::unwind::try::try_fn::h603405978117307818 () from /rust/bin/../lib/librustc_driver-9026086f.so
#20 0xb6bb5744 in sys_common::unwind::inner_try::h2b978c83a7e39f6dbuu () from /rust/bin/../lib/libstd-9026086f.so
#21 0xb6e7bff8 in boxed::F.FnBox$LT$A$GT$::call_box::h12017000814557942895 () from /rust/bin/../lib/librustc_driver-9026086f.so
#22 0xb6bd3570 in sys_common::thread::start_thread::hf54e8edfec0a0d71Cgu () from /rust/bin/../lib/libstd-9026086f.so
#23 0xb6bba020 in sys::thread::Thread::new::thread_start::hb5ad3f0368306661Kwz () from /rust/bin/../lib/libstd-9026086f.so
#24 0xb31c9fbc in start_thread (arg=0xb2ea72a0) at pthread_create.c:314
#25 0xb6a7d20c in ?? () at ../ports/sysdeps/unix/sysv/linux/arm/nptl/../clone.S:92 from /lib/arm-linux-gnueabihf/libc.so.6
or
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb2ea72a0 (LWP 32457)]
0xb43a39d4 in llvm::DemandedBits::performAnalysis() [clone .part.111] ()
from /rust/bin/../lib/librustc_llvm-9026086f.so
(gdb) bt
#0 0xb43a39d4 in llvm::DemandedBits::performAnalysis() [clone .part.111] () from /rust/bin/../lib/librustc_llvm-9026086f.so
#1 0xb43a7784 in llvm::DemandedBits::isInstructionDead(llvm::Instruction*) () from /rust/bin/../lib/librustc_llvm-9026086f.so
#2 0xb4024a88 in (anonymous namespace)::BDCE::runOnFunction(llvm::Function&) [clone .part.25] () from /rust/bin/../lib/librustc_llvm-9026086f.so
#3 0xb4749a14 in llvm::FPPassManager::runOnFunction(llvm::Function&) () from /rust/bin/../lib/librustc_llvm-9026086f.so
#4 0xb4749cd0 in llvm::legacy::PassManagerImpl::run(llvm::Module&) () from /rust/bin/../lib/librustc_llvm-9026086f.so
#5 0xb464819c in LLVMRunPassManager () from /rust/bin/../lib/librustc_llvm-9026086f.so
#6 0xb64ca818 in back::lto::run::h808941f87b30ef02Uzc () from /rust/bin/../lib/librustc_trans-9026086f.so
#7 0xb64d4da8 in back::write::execute_work_item::h5f42fc708a2638a1NOd () from /rust/bin/../lib/librustc_trans-9026086f.so
#8 0xb64cfe80 in back::write::run_passes::hfb1b468fd61a27acEAd () from /rust/bin/../lib/librustc_trans-9026086f.so
#9 0xb6eb93c0 in driver::phase_5_run_llvm_passes::h0d65899dcc6974e772a () from /rust/bin/../lib/librustc_driver-9026086f.so
#10 0xb6e8ffdc in driver::compile_input::h54981c39b9ca87cePca () from /rust/bin/../lib/librustc_driver-9026086f.so
#11 0xb6e7df08 in run_compiler::h52667a7f69c30bb9lQc () from /rust/bin/../lib/librustc_driver-9026086f.so
#12 0xb6e7b818 in sys_common::unwind::try::try_fn::h603405978117307818 () from /rust/bin/../lib/librustc_driver-9026086f.so
#13 0xb6bb5744 in sys_common::unwind::inner_try::h2b978c83a7e39f6dbuu () from /rust/bin/../lib/libstd-9026086f.so
#14 0xb6e7bff8 in boxed::F.FnBox$LT$A$GT$::call_box::h12017000814557942895 () from /rust/bin/../lib/librustc_driver-9026086f.so
#15 0xb6bd3570 in sys_common::thread::start_thread::hf54e8edfec0a0d71Cgu () from /rust/bin/../lib/libstd-9026086f.so
#16 0xb6bba020 in sys::thread::Thread::new::thread_start::hb5ad3f0368306661Kwz () from /rust/bin/../lib/libstd-9026086f.so
#17 0xb31c9fbc in start_thread (arg=0xb2ea72a0) at pthread_create.c:314
#18 0xb6a7d20c in ?? () at ../ports/sysdeps/unix/sysv/linux/arm/nptl/../clone.S:92 from /lib/arm-linux-gnueabihf/libc.so.6
Even though the traces differ, the crash happens every time.
Interestingly, it doesn't reproduce on i686.
https://github.com/ethcore/parity/ , having enabled lto
and opt-level=3
in Cargo.toml and used overrides for nix/mio