cargo: Line numbers in backtrace still do not appear on macOS for Cargo projects

Repro steps:

  1. Create a cargo project.

    cargo new --bin a && cd a && echo 'fn main() { panic!(); }' > src/main.rs 
    
  2. Run it. Note that the line numbers are missing (unexpected).

    RUST_BACKTRACE=1 cargo run
    
    Output
    thread 'main' panicked at 'explicit panic', src/main.rs:1:12
    stack backtrace:
       0: std::sys::imp::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: a::main
       7: __rust_maybe_catch_panic
       8: std::rt::lang_start
       9: main
    
  3. Run the actual hard-linked program. The line numbers now appear (expected).

    RUST_BACKTRACE=1 target/debug/deps/a-*
    
    Output
    thread 'main' panicked at 'explicit panic', src/main.rs:1:12
    stack backtrace:
       0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
                 at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
       1: std::sys_common::backtrace::_print
                 at src/libstd/sys_common/backtrace.rs:71
       2: std::panicking::default_hook::{{closure}}
                 at src/libstd/sys_common/backtrace.rs:60
                 at src/libstd/panicking.rs:381
       3: std::panicking::default_hook
                 at src/libstd/panicking.rs:397
       4: std::panicking::begin_panic
                 at src/libstd/panicking.rs:577
       5: std::panicking::begin_panic
                 at /Users/travis/build/rust-lang/rust/src/libstd/panicking.rs:538
       6: a::main
                 at src/main.rs:1
       7: panic_unwind::dwarf::eh::read_encoded_pointer
                 at src/libpanic_unwind/lib.rs:99
       8: rust_panic
                 at src/libstd/panicking.rs:459
                 at src/libstd/panic.rs:361
                 at src/libstd/rt.rs:59
       9: a::main
    

The problem is that in rust-lang/rust#44251 we did not search for the deps/ folder. The fix is either,

  1. Symlink target/debug/deps/a-«hash».dSYM to target/debug/a-«hash».dSYM (actual name irrelevant), don’t touch libstd. This may also fix #4056; or
  2. Amend rust-lang/rust#44251 to look for deps/ as well, don’t touch cargo.

cc @JohnColanduoni


Meta
$ cargo -vV
cargo 0.23.0-nightly (33250c48b 2017-09-09)
release: 0.23.0
commit-hash: 33250c48b4763b01478d780e76206484a1d5b207
commit-date: 2017-09-09

$ rustc -vV
rustc 1.22.0-nightly (539f2083d 2017-09-13)
binary: rustc
commit-hash: 539f2083de809b5c8304fe7426655cfeb0e66d5e
commit-date: 2017-09-13
host: x86_64-apple-darwin
release: 1.22.0-nightly
LLVM version: 4.0

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 20 (12 by maintainers)

Commits related to this issue

Most upvoted comments

Doesn’t work for me and it’s driving me nuts.

This is all I get, even when calling the debug binary directly from the target/debug/deps folder

thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:335:20
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::print
   2: _ZN3std9panicking12default_hook28_$u7b$$u7b$closure$u7d$$u7d$17h87a5c1996ce480feE.llvm.A7B5D2F1
   3: _ZN3std9panicking12default_hook17h99b58f5ba7dd5ae4E.llvm.A7B5D2F1
   4: std::panicking::rust_panic_with_hook
   5: _ZN3std9panicking11begin_panic17h61c0da3081a85bacE.llvm.A7B5D2F1
   6: std::panicking::begin_panic_fmt
   7: rust_begin_unwind
   8: core::panicking::panic_fmt
   9: core::panicking::panic
  10: <core::option::Option<T>>::unwrap
  11: parser::datamodel::Datamodel::_create_intermediate_objects
  12: parser::datamodel::Datamodel::insert_object
  13: parser::parser::parse_data_model
  14: objdumper::main
  15: __rust_maybe_catch_panic
  16: std::rt::lang_start
  17: main

Im running on: rustc 1.24.0-nightly (73bca2b9f 2017-11-28)