Skip to content

Commit 679e2c5

Browse files
authored
Suppress TSAN false positives in crossbeam crate due to use of memory fences (#8464)
## Summary This PR adds a few additional ThreadSanitizer suppressions to deal with false positives caused by `crossbeam`. They have been surfaced by #8454 and in other cases in the past. Signed-off-by: Adam Gutglick <adam@spiraldb.com>
1 parent 1726f5e commit 679e2c5

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

vortex-ffi/tsan_suppressions.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,23 @@
66
# where ordering is correct but uses an explicit fence and not relaxed load
77
race:oneshot-*/src/channel.rs
88
race:oneshot-*/src/lib.rs
9+
10+
# https://github.com/google/sanitizers/issues/1415
11+
# crossbeam-epoch's epoch-based reclamation synchronizes through SeqCst fences,
12+
# which TSan does not fully model. Its process-global collector frees a retired
13+
# bag/node on one thread while another thread pops from the same GC queue, both
14+
# inside `Global::collect`; the epoch protocol makes this safe but TSan reports a
15+
# benign race. Surfaced through moka's cache (the vortex-file MultiFileSession
16+
# footer cache) when one session's cache is dropped while another session's cache
17+
# is queried on a parallel thread.
18+
race:crossbeam_epoch*collect
19+
20+
# Taken from crossbeam's CI - https://github.com/crossbeam-rs/crossbeam/blob/05f9478b333ead58c0bf8e5a37d9ef9bd3b5bf17/ci/tsan#L1
21+
# Push and steal operations in crossbeam-deque may cause data races, but such
22+
# data races are safe. If a data race happens, the value read by `steal` is
23+
# forgotten and the steal operation is then retried.
24+
race:crossbeam_deque*push
25+
race:crossbeam_deque*steal
26+
27+
# Non-lock-free AtomicCell uses SeqLock which uses fences.
28+
race:crossbeam_utils::atomic::atomic_cell::atomic_compare_exchange_weak

0 commit comments

Comments
 (0)