From 6e3c66ee6c103b7618764e83f9df53fbcff2e8d4 Mon Sep 17 00:00:00 2001 From: Thom Chiovoloni Date: Sat, 7 Aug 2021 14:44:08 -0700 Subject: [PATCH] Fix Ordering on WordLock (tsan detected) --- core/src/word_lock.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/src/word_lock.rs b/core/src/word_lock.rs index 450e9855..453030d8 100644 --- a/core/src/word_lock.rs +++ b/core/src/word_lock.rs @@ -154,7 +154,7 @@ impl WordLock { if let Err(x) = self.state.compare_exchange_weak( state, state.with_queue_head(thread_data), - Ordering::Release, + Ordering::AcqRel, Ordering::Relaxed, ) { return x; @@ -189,7 +189,7 @@ impl WordLock { match self.state.compare_exchange_weak( state, state | QUEUE_LOCKED_BIT, - Ordering::Acquire, + Ordering::AcqRel, Ordering::Relaxed, ) { Ok(_) => break, @@ -230,7 +230,7 @@ impl WordLock { match self.state.compare_exchange_weak( state, state & !QUEUE_LOCKED_BIT, - Ordering::Release, + Ordering::AcqRel, Ordering::Relaxed, ) { Ok(_) => return, @@ -249,7 +249,7 @@ impl WordLock { match self.state.compare_exchange_weak( state, state & LOCKED_BIT, - Ordering::Release, + Ordering::AcqRel, Ordering::Relaxed, ) { Ok(_) => break,