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
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);
}