Make folly pass TSAN checks
[folly.git] / folly / test / SpinLockTest.cpp
index b2387ea7b966e04998acf11b76c376a5c08ce686..67279a700f82367151b122f673fcb118616c2617 100644 (file)
@@ -68,16 +68,19 @@ template <typename LOCK>
 void trylockTestThread(TryLockState<LOCK>* state, size_t count) {
   while (true) {
     folly::asm_pause();
 void trylockTestThread(TryLockState<LOCK>* state, size_t count) {
   while (true) {
     folly::asm_pause();
+    bool ret = state->lock2.try_lock();
     SpinLockGuardImpl<LOCK> g(state->lock1);
     if (state->obtained >= count) {
     SpinLockGuardImpl<LOCK> g(state->lock1);
     if (state->obtained >= count) {
+      if (ret) {
+        state->lock2.unlock();
+      }
       break;
     }
 
       break;
     }
 
-    bool ret = state->lock2.try_lock();
-    EXPECT_NE(state->locked, ret);
 
     if (ret) {
       // We got lock2.
 
     if (ret) {
       // We got lock2.
+      EXPECT_NE(state->locked, ret);
       ++state->obtained;
       state->locked = true;
 
       ++state->obtained;
       state->locked = true;