diff options
author | 2022-04-15 22:46:40 +0200 | |
---|---|---|
committer | 2022-04-15 22:46:40 +0200 | |
commit | 547a32033ec60edc143da33c6c0fbde9d845e91a (patch) | |
tree | a537584d35b2c46fef9b463382c1ecc1d50590b2 /src/bytes.rs | |
parent | 724476982b35f094b59d160ecc02c042082ac604 (diff) | |
download | bytes-547a32033ec60edc143da33c6c0fbde9d845e91a.tar.gz bytes-547a32033ec60edc143da33c6c0fbde9d845e91a.tar.zst bytes-547a32033ec60edc143da33c6c0fbde9d845e91a.zip |
Add TSAN support (#541)
Diffstat (limited to 'src/bytes.rs')
-rw-r--r-- | src/bytes.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/bytes.rs b/src/bytes.rs index 24c2137..1afab33 100644 --- a/src/bytes.rs +++ b/src/bytes.rs @@ -13,7 +13,7 @@ use alloc::{ use crate::buf::IntoIter; #[allow(unused)] use crate::loom::sync::atomic::AtomicMut; -use crate::loom::sync::atomic::{self, AtomicPtr, AtomicUsize, Ordering}; +use crate::loom::sync::atomic::{AtomicPtr, AtomicUsize, Ordering}; use crate::Buf; /// A cheaply cloneable and sliceable chunk of contiguous memory. @@ -1095,7 +1095,10 @@ unsafe fn release_shared(ptr: *mut Shared) { // > "acquire" operation before deleting the object. // // [1]: (www.boost.org/doc/libs/1_55_0/doc/html/atomic/usage_examples.html) - atomic::fence(Ordering::Acquire); + // + // Thread sanitizer does not support atomic fences. Use an atomic load + // instead. + (*ptr).ref_cnt.load(Ordering::Acquire); // Drop the data Box::from_raw(ptr); |