diff options
| author | Kostya Serebryany <kcc@google.com> | 2014-07-08 12:46:30 +0000 |
|---|---|---|
| committer | Kostya Serebryany <kcc@google.com> | 2014-07-08 12:46:30 +0000 |
| commit | 7e49b06446301c65319111c5b0c72169d66a9bb4 (patch) | |
| tree | e6cfdeef6556ae52b7d9a38fdb6faef936e6f38d /compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc | |
| parent | af89c4e51fc81f9e7b488a27d9b86aa20bef0e73 (diff) | |
| download | bcm5719-llvm-7e49b06446301c65319111c5b0c72169d66a9bb4.tar.gz bcm5719-llvm-7e49b06446301c65319111c5b0c72169d66a9bb4.zip | |
[tsan] fix pthread_rwlock_tryrdlock interceptor, don't try to detect deadlocks when reporting bad unlock
llvm-svn: 212526
Diffstat (limited to 'compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc')
| -rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc b/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc index 4522791262a..789010547a2 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc +++ b/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc @@ -215,7 +215,7 @@ int MutexUnlock(ThreadState *thr, uptr pc, uptr addr, bool all) { } } thr->mset.Del(s->GetId(), true); - if (flags()->detect_deadlocks && s->recursion == 0) { + if (flags()->detect_deadlocks && s->recursion == 0 && !report_bad_unlock) { Callback cb(thr, pc); ctx->dd->MutexBeforeUnlock(&cb, &s->dd, true); } @@ -224,7 +224,7 @@ int MutexUnlock(ThreadState *thr, uptr pc, uptr addr, bool all) { // Can't touch s after this point. if (report_bad_unlock) ReportMutexMisuse(thr, pc, ReportTypeMutexBadUnlock, addr, mid); - if (flags()->detect_deadlocks) { + if (flags()->detect_deadlocks && !report_bad_unlock) { Callback cb(thr, pc); ReportDeadlock(thr, pc, ctx->dd->GetReport(&cb)); } |

