# TSAN suppressions file for Tokio # TSAN does not understand fences and `Arc::drop` is implemented using a fence. # This causes many false positives. race:Arc*drop race:Weak*drop # `std` mpsc is not used in any Tokio code base. This race is triggered by some # rust runtime logic. race:std*mpsc_queue race:std*lang_start race:drop*std::thread* # Probably more fences in std. race:__call_tls_dtors # The epoch-based GC uses fences. race:crossbeam_epoch # Push and steal operations in crossbeam-deque may cause data races, but such # data races are safe. If a data race happens, the value read by `steal` is # forgotten and the steal operation is then retried. race:crossbeam_deque*push race:crossbeam_deque*steal # This filters out expected data race in the Treiber stack implementations. # Treiber stacks are inherently racy. The pop operation will attempt to access # the "next" pointer on the node it is attempting to pop. However, at this # point it has not gained ownership of the node and another thread might beat # it and take ownership of the node first (touching the next pointer). The # original pop operation will fail due to the ABA guard, but tsan still picks # up the access on the next pointer. race:Backup::next_sleeper race:Backup::set_next_sleeper race:WorkerEntry::set_next_sleeper # This ignores a false positive caused by `thread::park()`/`thread::unpark()`. # See: https://github.com/rust-lang/rust/pull/54806#issuecomment-436193353 race:pthread_cond_destroy