diff options
author | Alexey Samsonov <vonosmas@gmail.com> | 2014-07-08 20:17:19 +0000 |
---|---|---|
committer | Alexey Samsonov <vonosmas@gmail.com> | 2014-07-08 20:17:19 +0000 |
commit | a23f33bb20043f95685f3fc8c0cfc23f499f8faa (patch) | |
tree | c4f0438d1d347fc5c4e257587e545338308c42c0 /lib/tsan/rtl/tsan_sync.cc | |
parent | 75e8a9117af00bc1ffe2a64c1a4232554fc506f4 (diff) |
[TSan] Revert r212531 and r212532.
They cause "check-tsan" command to hang. Details in r212532 review thread.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@212562 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_sync.cc')
-rw-r--r-- | lib/tsan/rtl/tsan_sync.cc | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/tsan/rtl/tsan_sync.cc b/lib/tsan/rtl/tsan_sync.cc index 15392c957..8c48cadfb 100644 --- a/lib/tsan/rtl/tsan_sync.cc +++ b/lib/tsan/rtl/tsan_sync.cc @@ -46,6 +46,7 @@ void SyncVar::Reset() { is_recursive = 0; is_broken = 0; is_linker_init = 0; + next = 0; clock.Zero(); read_clock.Reset(); @@ -133,7 +134,7 @@ SyncVar* MetaMap::GetAndLock(ThreadState *thr, uptr pc, u32 myidx = 0; SyncVar *mys = 0; for (;;) { - u32 idx = idx0; + u32 idx = *meta; for (;;) { if (idx == 0) break; @@ -156,10 +157,8 @@ SyncVar* MetaMap::GetAndLock(ThreadState *thr, uptr pc, } if (!create) return 0; - if (*meta != idx0) { - idx0 = *meta; + if (*meta != idx0) continue; - } if (myidx == 0) { const u64 uid = atomic_fetch_add(&uid_gen_, 1, memory_order_relaxed); |