From ae448abdad164f3abb56c343cdc1163b61786602 Mon Sep 17 00:00:00 2001 From: synqa Date: Mon, 16 Feb 2026 18:49:50 +0900 Subject: [PATCH] Add Thread Sanitizer suppressions for FreeTick64 and UnixLock - Add suppression for FreeTick64 (#2221). - Add suppression for UnixLock (#2219). --- tsan_suppressions.txt | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tsan_suppressions.txt b/tsan_suppressions.txt index bc2943fa..fc128a69 100644 --- a/tsan_suppressions.txt +++ b/tsan_suppressions.txt @@ -2,11 +2,27 @@ # For the specification, refer to: https://github.com/google/sanitizers/wiki/threadsanitizersuppressions + +## Set/Wait +# This provides synchronization equivalent to a lock, but Thread Sanitizer cannot recognize it. + +# Thread Sanitizer reports data race on Halt in TK64. +# https://github.com/SoftEtherVPN/SoftEtherVPN/pull/2221 +race_top:FreeTick64 + # Thread Sanitizer reports data races on Finished and NoDelayFlag in CONNECT_SERIAL_PARAM, # shared between BindConnectThreadForIPv4, BindConnectThreadForIPv6, and BindConnectEx5. -# These are benign data races: the Set/Wait on FinishEvent provides synchronization -# equivalent to a lock, but TSan cannot recognize it. # https://github.com/SoftEtherVPN/SoftEtherVPN/pull/2222 race_top:BindConnectThreadForIPv4 race_top:BindConnectThreadForIPv6 race_top:BindConnectEx5 + + +## Manual PTHREAD_MUTEX_RECURSIVE +# The Lock/Unlock mechanism on Unix is a manual, hand-coded implementation of PTHREAD_MUTEX_RECURSIVE. +# We avoid using the PTHREAD_MUTEX_RECURSIVE directly because it exhibits critical bugs, such as deadlocks +# on certain older systems(Linux, Solaris, or macOS). While Thread Sanitizer will report data races, +# these warnings should be ignored as the logic has been carefully implemented to ensure thread safety. +# https://github.com/SoftEtherVPN/SoftEtherVPN/pull/2219 +race_top:UnixLock +race_top:UnixUnlockEx