mongo/etc/tsan.suppressions
Lynne Wang c723709b29 SERVER-123595 Suppress test-only data race on storageGlobalParams.magicRestore (#51330)
GitOrigin-RevId: 4b1eb7bfed29aac32ae3d31ade480bc0864c214e
2026-04-07 23:55:14 +00:00

87 lines
4.1 KiB
Plaintext

# Death test signal reports cause test failures because the report can't be
# parsed as JSON. Suppress those messages specifically.
signal:src/mongo/unittest/death_test.cpp
# For some reason there is a race condition in mktime and we need to not alert for that
race:tzset_internal
# WiredTiger is known to cause false positives for data races because it uses a
# nonstandard thread model that TSAN doesn't know how to deal with. We have
# already denylisted WiredTiger in TSAN, but that only affects threads created
# within the WiredTiger source. For threads that call *into* WiredTiger, we
# need to add suppressions so we still get any potential failures from
# elsewhere.
#
# This is a temporary addition for now because it's possible that these are
# real positives that we need to do something with. However, because we know
# that false positives are more likely, we're deferring them until we have
# fixed the ones we know are real.
# TODO: https://jira.mongodb.org/browse/SERVER-48599
called_from_lib:libwiredtiger.so
race:src/third_party/wiredtiger/*
race:ZSTD_*
# These functions call malloc() down the line while inside a signal handler.
# Since we've never had problems with any of the allocators we use, and since
# the process is going to exit in actual practice (unlike in some of our tests),
# we are taking the calculated risk to allow AS-unsafe calls in our signal
# handlers.
signal:abruptQuitAction
signal:abruptQuitWithAddrSignal
signal:StackTraceSigAltStackTest::tryHandler
# https://github.com/mongodb/mongo-c-driver/blob/3f2c35d97e7f12de5da4f049dce4c3f8494aba67/.tsan-suppressions#L2C1-L2C30
# This warning in the mongo-c-driver is expected to be harmless and is suppressed in the
# mongo-c-driver repo itself.
race:_mongoc_handshake_freeze
# TODO SERVER-91826
deadlock:mongo::executor::EgressConnectionCloserManager::add
deadlock:mongo::executor::EgressConnectionCloserManager::setKeepOpen
deadlock:mongo::ShardRegistry::_initConfigShard
# TODO SERVER-91827
deadlock:mongo::executor::EgressConnectionCloserManager::remove
deadlock:mongo::repl::ReplicationCoordinatorExternalStateImpl::tooStale
deadlock:mongo::RemoteCommandTargeterFactoryImpl::create
deadlock:mongo::ShardRegistry::getConfigShard
deadlock:mongo::executor::ConnectionPool::dropConnections
# TODO SERVER-91838
# deadlock:mongo::ShardRegistry::getConfigShard (relevant to this and above deadlock)
deadlock:mongo::ReplicaSetMonitorManager::getOrCreateMonitor
deadlock:mongo::ShardingTaskExecutorPoolController::ReplicaSetChangeListener::onDroppedSet
# TODO SERVER-91877 inversion b/w SSL manager and some crypto mutex
deadlock:mongo::(anonymous namespace)::SSLManagerOpenSSL::SSLManagerOpenSSL
# Each of these functions within the third-party S2 library use a counter field (query_count_,
# num_find_vertex_calls_, and candidates_created_counter_). The first two counters are used to
# toggle internal optimizations after reaching a threshold. The consequence of a data race to
# increment those counters is just slightly delaying when the optimization flips on, so there is
# no correctness issue. The third counter is just used for logging. We only expect these data races
# to be possible in the context of a partial index with a geo-related partialFilterExpression, since
# that's the only scenario when a S2 data structure will be shared across threads.
race:S2Loop::FindVertex
race:S2EdgeIndex::IncrementQueryCount
race:S2RegionCoverer::NewCandidate
# SERVER-115422: wasmtime's parallel compilation (via rayon) triggers TSan false positives.
# TSan cannot unwind Rust stacks fully, so reported frames vary across runs: sometimes
# wasmtime/rayon/cranelift-specific, sometimes bare Rust stdlib functions (core::ptr,
# core::mem, alloc::, __rustc allocator). These patterns cover all observed variants.
race:rayon_core
race:wasmtime
race:cranelift
race:__rustc
race:core::ptr
race:core::mem
# All fields read in newRecoveryUnit are set once at startup. TSAN races are test-only, as some
# tests mutate globals after startup.
race:newRecoveryUnit
# OpenSSL 1.1.x: lazy-init of shared buffer in SSL_CTX
# during handshake; harmless. See SERVER-120820.
race:ASN1_STRING_cmp