diff --git a/sanitizers/suppressions/asan.supp b/sanitizers/suppressions/asan.supp index ddea8d2c02..9f335df3d5 100644 --- a/sanitizers/suppressions/asan.supp +++ b/sanitizers/suppressions/asan.supp @@ -8,8 +8,15 @@ # - stack-use-after-scope errors # - stack-buffer-overflow errors in seemingly unrelated code (e.g., std::chrono::steady_clock::now()) # - stack-buffer-underflow errors in seemingly unrelated code (e.g., xxhasher::retrieveHash(), clock_gettime) +# - bad-free errors in boost::context::basic_fixedsize_stack::deallocate (ASan loses track of +# malloc allocations after fiber/context switches, reporting "free on address not malloc()-ed") # -# These are now handled by using coroutine2 and ucontext backend. +# 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 +# - 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 diff --git a/sanitizers/suppressions/runtime-asan-options.txt b/sanitizers/suppressions/runtime-asan-options.txt index 13657248eb..b11b4ffeff 100644 --- a/sanitizers/suppressions/runtime-asan-options.txt +++ b/sanitizers/suppressions/runtime-asan-options.txt @@ -3,3 +3,4 @@ detect_stack_use_after_return=0 halt_on_error=0 print_summary=true use_sigaltstack=0 +alloc_dealloc_mismatch=0