diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2014-07-08 20:37:16 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2014-07-08 20:37:16 +0000 |
commit | c212f82219e7463adf999a1688876fb7ec416ad1 (patch) | |
tree | fd4f3e8122a203f05d7887afe481cd980325b81e /lib/tsan/tests | |
parent | a23f33bb20043f95685f3fc8c0cfc23f499f8faa (diff) |
tsan: reapply 212531 and 212532 with a fix
don't reset s->addr as well
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@212565 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/tests')
-rw-r--r-- | lib/tsan/tests/unit/tsan_sync_test.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/tsan/tests/unit/tsan_sync_test.cc b/lib/tsan/tests/unit/tsan_sync_test.cc index 664ce7f0d..6f36c64a5 100644 --- a/lib/tsan/tests/unit/tsan_sync_test.cc +++ b/lib/tsan/tests/unit/tsan_sync_test.cc @@ -108,4 +108,16 @@ TEST(MetaMap, MoveMemory) { m->FreeRange(thr, 0, (uptr)&block2[0], 4 * sizeof(u64)); } +TEST(MetaMap, ResetSync) { + ThreadState *thr = cur_thread(); + MetaMap *m = &ctx->metamap; + u64 block[1] = {}; // fake malloc block + m->AllocBlock(thr, 0, (uptr)&block[0], 1 * sizeof(u64)); + SyncVar *s = m->GetOrCreateAndLock(thr, 0, (uptr)&block[0], true); + s->Reset(); + s->mtx.Unlock(); + uptr sz = m->FreeBlock(thr, 0, (uptr)&block[0]); + EXPECT_EQ(sz, 1 * sizeof(u64)); +} + } // namespace __tsan |