diff --git a/ci/tsan b/ci/tsan index 62c5d67f3..8c7e23fc9 100644 --- a/ci/tsan +++ b/ci/tsan @@ -8,3 +8,6 @@ race:crossbeam_epoch # forgotten and the steal operation is then retried. race:crossbeam_deque*push race:crossbeam_deque*steal + +# AtomicCell::compare_exchange uses fences if it is not lock-free. +race:crossbeam_utils::atomic::atomic_cell::AtomicCell::compare_exchange diff --git a/crossbeam-channel/tests/tick.rs b/crossbeam-channel/tests/tick.rs index 5dc87306f..470dfdf8f 100644 --- a/crossbeam-channel/tests/tick.rs +++ b/crossbeam-channel/tests/tick.rs @@ -127,6 +127,7 @@ fn recv() { assert_eq!(r.try_recv(), Err(TryRecvError::Empty)); } +#[cfg(not(feature = "sanitize"))] // TODO: assertions failed due to tsan is slow #[test] fn recv_timeout() { let start = Instant::now(); @@ -251,6 +252,7 @@ fn select() { assert_eq!(hits.load(Ordering::SeqCst), 8); } +#[cfg(not(feature = "sanitize"))] // TODO: assertions failed due to tsan is slow #[test] fn ready() { const THREADS: usize = 4; diff --git a/crossbeam-epoch/src/collector.rs b/crossbeam-epoch/src/collector.rs index 8224e1184..de6060a40 100644 --- a/crossbeam-epoch/src/collector.rs +++ b/crossbeam-epoch/src/collector.rs @@ -199,6 +199,7 @@ mod tests { .unwrap(); } + #[cfg(not(feature = "sanitize"))] #[test] fn incremental() { const COUNT: usize = 100_000;