Skip to content

Commit 76ec03f

Browse files
committed
ci: symbolize sanitizer leak reports
1 parent e249191 commit 76ec03f

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,10 @@ jobs:
321321
env:
322322
RUSTFLAGS: "-Z sanitizer=${{ matrix.sanitizer }}"
323323
RUSTDOCFLAGS: "-Z sanitizer=${{ matrix.sanitizer }}"
324+
# Keep source locations in sanitizer backtraces. The repository-wide
325+
# default is optimized for normal CI logs, but an unsymbolized LSan
326+
# report cannot identify the leaking test/helper.
327+
CARGO_PROFILE_DEV_DEBUG: 2
324328
# AddressSanitizer enables leak detection by default. Leak checks run in
325329
# the dedicated leak sanitizer job, where third-party suppressions are
326330
# applied explicitly.
@@ -329,6 +333,13 @@ jobs:
329333
TSAN_OPTIONS: "suppressions=${{ github.workspace }}/.github/tsan.supp"
330334
run: |
331335
set -o pipefail
336+
sanitizer_sysroot="$(rustc +${SANITIZER_TOOLCHAIN} --print sysroot)"
337+
rust_llvm_symbolizer="$sanitizer_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/bin/llvm-symbolizer"
338+
if [[ -x "$rust_llvm_symbolizer" ]]; then
339+
export ASAN_SYMBOLIZER_PATH="$rust_llvm_symbolizer"
340+
elif command -v llvm-symbolizer >/dev/null 2>&1; then
341+
export ASAN_SYMBOLIZER_PATH="$(command -v llvm-symbolizer)"
342+
fi
332343
if [[ "${{ matrix.sanitizer }}" == "leak" || "${{ matrix.sanitizer }}" == "thread" ]]; then
333344
# RocksDB/libstdc++ trigger sanitizer reports and timing instability
334345
# in storage integration test binaries. The net crate's end-to-end

0 commit comments

Comments
 (0)