Improve Linux panic reporting (#22202)

- [x] Upload separate debug symbols for Linux binaries to DigitalOcean
- [x] Send raw offsets with panic report JSON on Linux
- [x] Update `symbolicate` script to handle Linux crashes
- [x] Demangle backtraces 🎉 
- [x] Check that it works
- [x] Improve deduplication (?)
 
Release Notes:

- N/A

---------

Co-authored-by: Conrad <conrad@zed.dev>
This commit is contained in:
Cole MillerandConrad authored and GitHub committed 2024-12-22 08:20:17 +00:00
1 parent 342a8ec0c8
commit a6dc262bb4
9 files changed
+173 -55

No files matched your search

+18 -5
View File
@@ -1,6 +1,7 @@
#!/usr/bin/env bash
set -euxo pipefail
source script/lib/blob-store.sh
# Function for displaying help info
help_info() {
@@ -61,12 +62,24 @@ if [[ "$remote_server_triple" == "$musl_triple" ]]; then
fi
cargo build --release --target "${remote_server_triple}" --package remote_server
# Strip the binary of all debug symbols
# Later, we probably want to do something like this: https://github.com/GabrielMajeri/separate-symbols
strip --strip-debug "${target_dir}/${target_triple}/release/zed"
strip --strip-debug "${target_dir}/${target_triple}/release/cli"
strip --strip-debug "${target_dir}/${remote_server_triple}/release/remote_server"
# Strip debug symbols and save them for upload to DigitalOcean
objcopy --only-keep-debug "${target_dir}/${target_triple}/release/zed" "${target_dir}/${target_triple}/release/zed.dbg"
objcopy --only-keep-debug "${target_dir}/${remote_server_triple}/release/remote_server" "${target_dir}/${remote_server_triple}/release/remote_server.dbg"
objcopy --strip-debug "${target_dir}/${target_triple}/release/zed"
objcopy --strip-debug "${target_dir}/${target_triple}/release/cli"
objcopy --strip-debug "${target_dir}/${remote_server_triple}/release/remote_server"
gzip "${target_dir}/${target_triple}/release/zed.dbg"
upload_to_blob_store_public \
"zed-debug-symbols" \
"${target_dir}/${target_triple}/release/zed.dbg.gz" \
"$channel/zed-$version-${target_triple}.dbg.gz"
gzip "${target_dir}/${remote_server_triple}/release/remote_server.dbg"
upload_to_blob_store_public \
"zed-debug-symbols" \
"${target_dir}/${remote_server_triple}/release/remote_server.dbg.gz" \
"$channel/remote_server-$version-${remote_server_triple}.dbg.gz"
# Ensure that remote_server does not depend on libssl nor libcrypto, as we got rid of these deps.
if ldd "${target_dir}/${remote_server_triple}/release/remote_server" | grep -q 'libcrypto\|libssl'; then