diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 3357bf59..5ada12e0 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -37,7 +37,9 @@ jobs: - name: Install packages run: | sudo apt-get update - sudo apt-get install -y libjavascriptcoregtk-4.1-dev libcurl4-openssl-dev ninja-build clang + # llvm provides the unversioned llvm-symbolizer the sanitizer runtimes look for; without + # it every frame in an ASan/TSan report is a bare address. + sudo apt-get install -y libjavascriptcoregtk-4.1-dev libcurl4-openssl-dev ninja-build clang llvm - name: Configure CMake run: | @@ -56,7 +58,9 @@ jobs: working-directory: Build/ubuntu/Tests/UnitTests run: ./UnitTests env: - TSAN_OPTIONS: ${{ inputs.enable-thread-sanitizer && format('suppressions={0}/.github/tsan_suppressions.txt', github.workspace) || '' }} + TSAN_OPTIONS: ${{ inputs.enable-thread-sanitizer && format('suppressions={0}/.github/tsan_suppressions.txt:external_symbolizer_path=/usr/bin/llvm-symbolizer', github.workspace) || '' }} + ASAN_OPTIONS: ${{ inputs.enable-sanitizers && 'external_symbolizer_path=/usr/bin/llvm-symbolizer' || '' }} + UBSAN_OPTIONS: ${{ inputs.enable-sanitizers && 'print_stacktrace=1:external_symbolizer_path=/usr/bin/llvm-symbolizer' || '' }} # JSC's concurrent GC on Linux uses SIGUSR1 + sem_wait to suspend mutator # threads at safepoints. TSan's signal interception delays SIGUSR1 delivery # indefinitely, deadlocking the Collector Thread's sem_wait. Disabling the