Repository navigation
Crash building libstd on FreeBSD after miri const eval changes. #48888
Copy link
Copy link
Closed
Labels
A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)Area: Constant evaluation, covers all const contexts (static, const fn, ...)C-bugCategory: This is a bug.Category: This is a bug.I-crashIssue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Bisecting it seems to be an issue with #46882.
It appears this may be a double crash? Like it's hitting some error and then unwinding improperly and crashing again. Not familiar enough with the traces to know.
Building stage1 std artifacts (x86_64-unknown-freebsd -> x86_64-unknown-freebsd)
c Sysroot { compiler: Compiler { stage: 1, host: "x86_64-unknown-freebsd" } }
Dirty - /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std
c Sysroot { compiler: Compiler { stage: 1, host: "x86_64-unknown-freebsd" } }
c Sysroot { compiler: Compiler { stage: 1, host: "x86_64-unknown-freebsd" } }
c Sysroot { compiler: Compiler { stage: 1, host: "x86_64-unknown-freebsd" } }
running: "/root/git/rust/rust/build/x86_64-unknown-freebsd/stage0/bin/cargo" "build" "--target" "x86_64-unknown-freebsd" "-j" "16" "--release" "--features" "panic-unwind jemalloc backtrace" "--manifest-path" "/root/git/rust/rust/src/libstd/Cargo.toml" "--message-format" "json"
Compiling cfg-if v0.1.2
Compiling core v0.0.0 (file:///root/git/rust/rust/src/libcore)
Compiling unwind v0.0.0 (file:///root/git/rust/rust/src/libunwind)
Compiling libc v0.2.39
Compiling cc v1.0.4
Compiling filetime v0.1.15
Compiling build_helper v0.1.0 (file:///root/git/rust/rust/src/build_helper)
Compiling std v0.0.0 (file:///root/git/rust/rust/src/libstd)
Compiling alloc_jemalloc v0.0.0 (file:///root/git/rust/rust/src/liballoc_jemalloc)
Compiling compiler_builtins v0.0.0 (file:///root/git/rust/rust/src/rustc/compiler_builtins_shim)
Compiling std_unicode v0.0.0 (file:///root/git/rust/rust/src/libstd_unicode)
Compiling libc v0.0.0 (file:///root/git/rust/rust/src/rustc/libc_shim)
Compiling alloc v0.0.0 (file:///root/git/rust/rust/src/liballoc)
Compiling panic_abort v0.0.0 (file:///root/git/rust/rust/src/libpanic_abort)
Compiling panic_unwind v0.0.0 (file:///root/git/rust/rust/src/libpanic_unwind)
Compiling alloc_system v0.0.0 (file:///root/git/rust/rust/src/liballoc_system)
error: Could not compile `std`.
Caused by:
process didn't exit successfully: `/root/git/rust/rust/build/bootstrap/debug/rustc --crate-name std libstd/lib.rs --error-format json --crate-type dylib --crate-type rlib --emit=dep-info,link -C prefer-dynamic -C opt-level=2 --cfg feature="alloc_jemalloc" --cfg feature="backtrace
" --cfg feature="jemalloc" --cfg feature="panic-unwind" --cfg feature="panic_unwind" -C metadata=e8572c2cb37bf2cb -C extra-filename=-e8572c2cb37bf2cb --out-dir /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps --target x86_64-unknown-fr
eebsd -L dependency=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps -L dependency=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/release/deps --extern alloc_jemalloc=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1
-std/x86_64-unknown-freebsd/release/deps/liballoc_jemalloc-cf2d57f8dace9f40.rlib --extern panic_unwind=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps/libpanic_unwind-60b856e8a64e8b13.rlib --extern libc=/root/git/rust/rust/build/x86_6
4-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps/liblibc-592e5c24413ae3ae.rlib --extern unwind=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps/libunwind-a0476c58d58d35a6.rlib --extern std_unicode=/root/git/rust/rust/bu
ild/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps/libstd_unicode-91afc60c4ed4ab41.rlib --extern compiler_builtins=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps/libcompiler_builtins-ec7788b40c37f4ab.rlib --ext
ern alloc=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps/liballoc-07f2cf36f01b1079.rlib --extern core=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps/libcore-2ea65697d9edc883.rlib --ext
ern alloc_system=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps/liballoc_system-ab04d18a01831de1.rlib --extern panic_abort=/root/git/rust/rust/build/x86_64-unknown-freebsd/stage1-std/x86_64-unknown-freebsd/release/deps/libpanic_abort
-e572d5139a455f8f.rlib -L native=/root/git/rust/rust/build/x86_64-unknown-freebsd/native/libbacktrace/.libs -l static=backtrace -l execinfo -l pthread -L native=/root/git/rust/rust/build/x86_64-unknown-freebsd/native/jemalloc/lib -L native=/root/git/rust/rust/build/x86_64-unknown-f
reebsd/stage1-std/x86_64-unknown-freebsd/release/build/compiler_builtins-ecd678163c4f0137/out` (signal: 11, SIGSEGV: invalid memory reference)
thread 'main' panicked at 'command did not execute successfully: "/root/git/rust/rust/build/x86_64-unknown-freebsd/stage0/bin/cargo" "build" "--target" "x86_64-unknown-freebsd" "-j" "16" "--release" "--features" "panic-unwind jemalloc backtrace" "--manifest-path" "/root/git/rust/ru
st/src/libstd/Cargo.toml" "--message-format" "json"
expected success, got: exit code: 101', bootstrap/compile.rs:1092:9
stack backtrace:
0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
1: std::sys_common::backtrace::_print
2: std::panicking::default_hook::{{closure}}
3: std::panicking::default_hook
4: std::panicking::rust_panic_with_hook
5: std::panicking::begin_panic
6: std::panicking::begin_panic_fmt
7: bootstrap::compile::run_cargo
8: <bootstrap::compile::Std as bootstrap::builder::Step>::run
at bootstrap/compile.rs:109
9: bootstrap::builder::Builder::ensure
at bootstrap/builder.rs:846
10: <bootstrap::compile::Test as bootstrap::builder::Step>::run
11: bootstrap::builder::Builder::ensure
at bootstrap/builder.rs:846
12: <bootstrap::compile::Rustc as bootstrap::builder::Step>::run
13: bootstrap::builder::Builder::ensure
at bootstrap/builder.rs:846
14: <bootstrap::compile::Assemble as bootstrap::builder::Step>::run
15: bootstrap::builder::Builder::ensure
at bootstrap/builder.rs:846
16: bootstrap::builder::Builder::compiler
at bootstrap/builder.rs:423
17: <bootstrap::compile::Std as bootstrap::builder::Step>::make_run
at bootstrap/compile.rs:56
18: bootstrap::builder::StepDescription::maybe_run
at bootstrap/builder.rs:185
19: bootstrap::builder::StepDescription::run
at bootstrap/builder.rs:205
20: bootstrap::builder::Builder::run
at bootstrap/builder.rs:410
21: bootstrap::Build::build
at bootstrap/lib.rs:392
22: bootstrap::main
at bootstrap/bin/main.rs:29
23: std::rt::lang_start::{{closure}}
at /checkout/src/libstd/rt.rs:74
24: std::panicking::try::do_call
25: __rust_maybe_catch_panic
at libpanic_unwind/lib.rs:102
26: std::rt::lang_start_internal
#0 libunwind::LocalAddressSpace::get64 (this=<optimized out>, addr=<optimized out>) at /usr/src/contrib/llvm/projects/libunwind/src/AddressSpace.hpp:137
137 memcpy(&val, (void *)addr, sizeof(val));
[Current thread is 1 (LWP 102119)]
(gdb) bt #0 libunwind::LocalAddressSpace::get64 (this=<optimized out>, addr=<optimized out>) at /usr/src/contrib/llvm/projects/libunwind/src/AddressSpace.hpp:137
#1 libunwind::LocalAddressSpace::getP (this=<optimized out>, addr=<optimized out>) at /usr/src/contrib/llvm/projects/libunwind/src/AddressSpace.hpp:166
#2 libunwind::DwarfInstructions<libunwind::LocalAddressSpace, libunwind::Registers_x86_64>::getSavedRegister (addressSpace=..., registers=..., cfa=16, savedReg=...) at /usr/src/contrib/llvm/projects/libunwind/src/DwarfInstructions.hpp:86
#3 0x00000008012a284b in libunwind::DwarfInstructions<libunwind::LocalAddressSpace, libunwind::Registers_x86_64>::stepWithDwarf (addressSpace=..., pc=<optimized out>, fdeStart=<optimized out>, registers=...)
at /usr/src/contrib/llvm/projects/libunwind/src/DwarfInstructions.hpp:191
#4 0x00000008012a228d in libunwind::UnwindCursor<libunwind::LocalAddressSpace, libunwind::Registers_x86_64>::stepWithDwarfFDE (this=0x7fffdffeffd0) at /usr/src/contrib/llvm/projects/libunwind/src/UnwindCursor.hpp:465
#5 libunwind::UnwindCursor<libunwind::LocalAddressSpace, libunwind::Registers_x86_64>::step (this=0x7fffdffeffd0) at /usr/src/contrib/llvm/projects/libunwind/src/UnwindCursor.hpp:1337
#6 0x00000008012994d6 in _Unwind_Backtrace (callback=0x8058aee60 <backtrace::backtrace::libunwind::trace::trace_fn>, ref=0x7fffdfff0168) at /usr/src/contrib/llvm/projects/libunwind/src/UnwindLevel1-gcc-ext.c:128
#7 0x00000008058b0b1d in backtrace::backtrace::trace () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#8 0x00000008058aded3 in backtrace::capture::Backtrace::new_unresolved () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#9 0x000000080563a5d3 in <rustc::mir::interpret::error::EvalError<'tcx> as core::convert::From<rustc::mir::interpret::error::EvalErrorKind<'tcx>>>::from () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#10 0x000000080482f977 in <rustc_mir::interpret::eval_context::EvalContext<'a, 'mir, 'tcx, M>>::write_value () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_mir-00858990fbea75d7.so
#11 0x0000000804845d9b in rustc_mir::interpret::terminator::<impl rustc_mir::interpret::eval_context::EvalContext<'a, 'mir, 'tcx, M>>::eval_fn_call () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_mir-00858990fbea75d7.so
#12 0x000000080484385a in rustc_mir::interpret::step::<impl rustc_mir::interpret::eval_context::EvalContext<'a, 'mir, 'tcx, M>>::step () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_mir-00858990fbea75d7.so
#13 0x00000008048c6b62 in rustc_mir::interpret::const_eval::eval_body_and_ecx () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_mir-00858990fbea75d7.so
#14 0x00000008048ca0e2 in rustc_mir::interpret::const_eval::const_eval_provider () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_mir-00858990fbea75d7.so
#15 0x0000000805193097 in rustc::ty::maps::<impl rustc::ty::maps::queries::const_eval<'tcx>>::compute_result () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#16 0x000000080585b51e in rustc::dep_graph::graph::DepGraph::with_task_impl () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#17 0x000000080521edc8 in rustc_errors::Handler::track_diagnostics () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#18 0x000000080549e0f8 in rustc::ty::maps::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::cycle_check () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#19 0x000000080519315f in rustc::ty::maps::<impl rustc::ty::maps::queries::const_eval<'tcx>>::force () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#20 0x0000000805193a50 in rustc::ty::maps::<impl rustc::ty::maps::queries::const_eval<'tcx>>::try_get () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#21 0x00000008054c655b in rustc::ty::maps::TyCtxtAt::const_eval () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#22 0x00000008054c2cb5 in rustc::ty::maps::<impl rustc::ty::context::TyCtxt<'a, 'tcx, 'lcx>>::const_eval () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#23 0x000000080478dd83 in rustc_mir::monomorphize::collector::collect_items_rec () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_mir-00858990fbea75d7.so
#24 0x000000080478e674 in rustc_mir::monomorphize::collector::collect_items_rec () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_mir-00858990fbea75d7.so
#25 0x000000080478e674 in rustc_mir::monomorphize::collector::collect_items_rec () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_mir-00858990fbea75d7.so
#26 0x000000080478d3eb in rustc_mir::monomorphize::collector::collect_crate_mono_items () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_mir-00858990fbea75d7.so
#27 0x000000080901dc4f in rustc::util::common::time () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/rustlib/x86_64-unknown-freebsd/codegen-backends/librustc_trans-llvm.so
#28 0x000000080903179b in rustc_trans::base::collect_and_partition_translation_items () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/rustlib/x86_64-unknown-freebsd/codegen-backends/librustc_trans-llvm.so
#29 0x00000008058388ac in rustc::dep_graph::graph::DepGraph::with_task_impl () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#30 0x0000000805230629 in rustc_errors::Handler::track_diagnostics () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#31 0x0000000805484298 in rustc::ty::maps::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::cycle_check () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#32 0x0000000805202f2e in rustc::ty::maps::<impl rustc::ty::maps::queries::collect_and_partition_translation_items<'tcx>>::force () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#33 0x0000000805203527 in rustc::ty::maps::<impl rustc::ty::maps::queries::collect_and_partition_translation_items<'tcx>>::try_get () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#34 0x00000008054cb298 in rustc::ty::maps::TyCtxtAt::collect_and_partition_translation_items () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#35 0x00000008054c3f7f in rustc::ty::maps::<impl rustc::ty::context::TyCtxt<'a, 'tcx, 'lcx>>::collect_and_partition_translation_items () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc-65547986dd27258e.so
#36 0x000000080902fbd3 in rustc_trans::base::trans_crate () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/rustlib/x86_64-unknown-freebsd/codegen-backends/librustc_trans-llvm.so
#37 0x0000000809052c48 in <rustc_trans::LlvmTransCrate as rustc_trans_utils::trans_crate::TransCrate>::trans_crate () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/rustlib/x86_64-unknown-freebsd/codegen-backends/librustc_trans-llvm.so
#38 0x0000000801569631 in rustc::util::common::time () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#39 0x00000008014aad56 in rustc_driver::driver::phase_4_translate_to_llvm () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#40 0x00000008015372ca in rustc_driver::driver::compile_input::{{closure}} () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#41 0x000000080153065d in <std::thread::local::LocalKey<T>>::with () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#42 0x000000080152fbb4 in <std::thread::local::LocalKey<T>>::with () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#43 0x000000080159c8ed in rustc::ty::context::TyCtxt::create_and_enter () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#44 0x00000008014a4220 in rustc_driver::driver::compile_input () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#45 0x0000000801550e37 in rustc_driver::run_compiler () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#46 0x0000000801469ba9 in std::sys_common::backtrace::__rust_begin_short_backtrace () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#47 0x000000080191a49f in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#48 0x00000008014cf9e8 in <F as alloc::boxed::FnBox<A>>::call_box () from /root/git/rust/rust/build/x86_64-unknown-freebsd/stage1/lib/librustc_driver-37a825abd95bc4d6.so
#49 0x00000008019052e8 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::h0e4b66c3d8f91271 () at /root/git/rust/rust/src/liballoc/boxed.rs:793
#50 std::sys_common::thread::start_thread () at libstd/sys_common/thread.rs:24
#51 0x00000008018d8e99 in std::sys::unix::thread::Thread::new::thread_start () at libstd/sys/unix/thread.rs:90
#52 0x0000000801274426 in thread_start (curthread=0x801357500) at /usr/src/lib/libthr/thread/thr_create.c:291
#53 0x0000000000000000 in ?? ()
Backtrace stopped: Cannot access memory at address 0x7fffdfffe000
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)Area: Constant evaluation, covers all const contexts (static, const fn, ...)C-bugCategory: This is a bug.Category: This is a bug.I-crashIssue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Activity
Aaron1011 commentedon Mar 11, 2018
The root error seems to be a crash from
libunwind- everything else is a result of that.oli-obk commentedon Mar 12, 2018
The issue is with the
backtracecrate. Miri's errors generate a true backtrace (not const eval backtrace, but from within the compiler).cc @alexcrichton
You can work around this issue for now by not passing
RUST_BACKTRACE(https://github.com/rust-lang/rust/blob/master/src/librustc/mir/interpret/error.rs#L23)Not sure what the correct course of action is here (except for fixing
backtraceon FreeBSD of course, but I can't do that). Should we simply not generate backtraces on bsd?alexcrichton commentedon Mar 12, 2018
Ah this is unfortunate :(
But yeah the "best" solution for now is probably to avoid backtrace generation on freebsd
oli-obk commentedon Mar 12, 2018
@alexcrichton should that be disabled in rustc or in the backtrace crate?
alexcrichton commentedon Mar 12, 2018
Either's fine by me, but I'd probably recommend rustc
gnzlbg commentedon Mar 14, 2018
I prefer the backtrace crate. There is a lot of code that depends on
backtraceand will fail on these platforms anyways. Ifbacktracedoesn't support some platform, it should probably, silently, just write backtraces that state "platform not supported" or similar instead of crashing or failing to compile.Rollup merge of rust-lang#49083 - oli-obk:mopsgeschwindigkeit, r=mich…