Skip to content

Line numbers in backtrace still do not appear on macOS for Cargo projects #4490

Closed
@kennytm

Description

@kennytm

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 No deterministic/easily findable name for debug symbol directory on macOS #4056; or
  2. Amend Add libbacktrace support for Apple platforms (resubmitted) 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-debuggingArea: debug builds and debugging generated codeC-bugCategory: bugO-macosOS: macOS

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions