No backtrace symbols on MacOS w/ Apple Silicon
ramosbugs opened this issue · 4 comments
I originally filed this issue as cargo-lambda/cargo-lambda#577, but the issue is probably more closely tied to Zig.
I'm building a Lambda function by invoking:
$ RUSTFLAGS="-C strip=none" cargo lambda build --arm64
I'm running on ARM64 MacOS:
$ uname -a
Darwin Ramos-M1 23.2.0 Darwin Kernel Version 23.2.0: Wed Nov 15 21:53:18 PST 2023; root:xnu-10002.61.3~2/RELEASE_ARM64_T6000 arm64
As expected, this produces a binary that appears to contain debug symbols:
$ file ../../target/lambda/bootstrap/bootstrap
../../target/lambda/bootstrap/bootstrap: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 2.0.0, with debug_info, not stripped
However, all of the backtraces I generate via the backtrace
crate look like:
0: <unknown>
1: <unknown>
...
31: <unknown>
32: __libc_start_call_main
33: __libc_start_main_impl
Panics with RUST_BACKTRACE=1
are similarly empty:
thread 'main' panicked at 'not yet implemented', src/lib.rs:173:5
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Interestingly, everything works fine when I directly build the Lambda via the Homebrew musl-cross
toolchain:
$ export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-gcc
$ cargo build --target aarch64-unknown-linux-musl --release
Even in release mode, the Lambda built with musl-cross
prints backtrace symbols.
Is there a known issue in cargo-zigbuild
with debug symbols when cross-compiling from aarch64 Darwin to aarch64 Linux?
This has came up before in #6, the underlying problem should have been fixed in ziglang/zig#11207, I don't know if it's a regression from zig.
The output of the file
command on the binary shows with debug_info, not stripped
. Are you sure it's the same issue?
The output of the
file
command on the binary showswith debug_info, not stripped
.
That's because in #6 we added -g
flag.
I'm not saying it's the same issue, just that the missing debuginfo issue was fixed in #6 and zig, so if backtrace is empty, it might be a zig issue/regression assuming you are not using a super old zig version.
Thanks, I filed this issue as ziglang/zig#18280.