From 2f60ce71ffd7eca85a9516871cd407481fca2e5d Mon Sep 17 00:00:00 2001 From: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> Date: Thu, 19 Feb 2026 16:55:50 +0000 Subject: [PATCH] ignore alloc-dealloc mismatch for gcc and removed detect_stack_use_after_return=0 Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com> --- .github/workflows/reusable-build-test-config.yml | 6 +++++- sanitizers/suppressions/asan.supp | 5 ++--- sanitizers/suppressions/runtime-asan-options.txt | 1 - 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/reusable-build-test-config.yml b/.github/workflows/reusable-build-test-config.yml index 0a6db6c199..6b6b5404a8 100644 --- a/.github/workflows/reusable-build-test-config.yml +++ b/.github/workflows/reusable-build-test-config.yml @@ -206,7 +206,11 @@ jobs: - name: Set sanitizer options if: ${{ !inputs.build_only && env.SANITIZERS_ENABLED == 'true' }} run: | - echo "ASAN_OPTIONS=include=${GITHUB_WORKSPACE}/sanitizers/suppressions/runtime-asan-options.txt:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/asan.supp" >> ${GITHUB_ENV} + ASAN_OPTS="include=${GITHUB_WORKSPACE}/sanitizers/suppressions/runtime-asan-options.txt:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/asan.supp" + if [[ "${{ inputs.config_name }}" == *gcc* ]]; then + ASAN_OPTS="${ASAN_OPTS}:alloc_dealloc_mismatch=0" + fi + echo "ASAN_OPTIONS=${ASAN_OPTS}" >> ${GITHUB_ENV} echo "TSAN_OPTIONS=include=${GITHUB_WORKSPACE}/sanitizers/suppressions/runtime-tsan-options.txt:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/tsan.supp" >> ${GITHUB_ENV} echo "UBSAN_OPTIONS=include=${GITHUB_WORKSPACE}/sanitizers/suppressions/runtime-ubsan-options.txt:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/ubsan.supp" >> ${GITHUB_ENV} echo "LSAN_OPTIONS=include=${GITHUB_WORKSPACE}/sanitizers/suppressions/runtime-lsan-options.txt:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/lsan.supp" >> ${GITHUB_ENV} diff --git a/sanitizers/suppressions/asan.supp b/sanitizers/suppressions/asan.supp index 9f335df3d5..8610e90386 100644 --- a/sanitizers/suppressions/asan.supp +++ b/sanitizers/suppressions/asan.supp @@ -1,6 +1,6 @@ # The idea is to empty this file gradually by fixing the underlying issues and removing suppresions. # -# ASAN_OPTIONS="suppressions=sanitizers/suppressions/asan.supp:halt_on_error=0:detect_stack_use_after_return=0" +# ASAN_OPTIONS="suppressions=sanitizers/suppressions/asan.supp:include=sanitizers/suppressions/runtime-asan-options.txt" # # Boost coroutines cause multiple ASAN false positives due to swapcontext/fiber stack switching. # ASAN cannot correctly track stack memory across coroutine context switches, leading to: @@ -14,11 +14,10 @@ # These are now handled by: # 1. Using Boost.Coroutine2 with the ucontext backend (BOOST_USE_ASAN + BOOST_USE_UCONTEXT) # 2. Runtime options in runtime-asan-options.txt: -# - alloc_dealloc_mismatch=0: Suppresses false "bad-free" errors from fiber stack deallocation +# - alloc_dealloc_mismatch=0: Suppresses false "bad-free" errors from fiber stack deallocation, on GCC. For Clang we don't instrument boost # - detect_stack_use_after_return=0: Prevents false positives from fake stack tracking # - use_sigaltstack=0: Avoids conflicts with coroutine stack switching interceptor_name:clock_gettime interceptor_name:__bzero interceptor_name:nudb -interceptor_name:boost # Suppress any flackiness diff --git a/sanitizers/suppressions/runtime-asan-options.txt b/sanitizers/suppressions/runtime-asan-options.txt index 13657248eb..f877e8678f 100644 --- a/sanitizers/suppressions/runtime-asan-options.txt +++ b/sanitizers/suppressions/runtime-asan-options.txt @@ -1,5 +1,4 @@ detect_container_overflow=0 -detect_stack_use_after_return=0 halt_on_error=0 print_summary=true use_sigaltstack=0