From e967876f1167e630263555c985c4723f7df9167a Mon Sep 17 00:00:00 2001 From: Martin Martin Date: Thu, 9 Jun 2016 11:53:14 -0700 Subject: [PATCH] Fix a data race found by TSAN in folly::fibers::Baton Summary: Fix a data race found by TSAN in folly::fibers::Baton by changing a memory_order_relaxed to memory_order_acquire. Nathan Bronson says that TSAN is correct and the C++ memory model requires _acquire here. Reviewed By: andriigrynenko Differential Revision: D3412519 fbshipit-source-id: bd0043b41d145e689a97fc7ef47aa6e116ea9194 --- folly/fibers/Baton.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/folly/fibers/Baton.cpp b/folly/fibers/Baton.cpp index 7161f9fb..5f5a104c 100644 --- a/folly/fibers/Baton.cpp +++ b/folly/fibers/Baton.cpp @@ -58,7 +58,7 @@ void Baton::waitThread() { waitingFiber_.compare_exchange_strong(fiber, THREAD_WAITING))) { do { folly::detail::MemoryIdler::futexWait(futex_.futex, THREAD_WAITING); - fiber = waitingFiber_.load(std::memory_order_relaxed); + fiber = waitingFiber_.load(std::memory_order_acquire); } while (fiber == THREAD_WAITING); } -- 2.34.1