summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2014-07-08 12:46:30 +0000
committerKostya Serebryany <kcc@google.com>2014-07-08 12:46:30 +0000
commit7e49b06446301c65319111c5b0c72169d66a9bb4 (patch)
treee6cfdeef6556ae52b7d9a38fdb6faef936e6f38d /compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc
parentaf89c4e51fc81f9e7b488a27d9b86aa20bef0e73 (diff)
downloadbcm5719-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.cc4
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));
}
OpenPOWER on IntegriCloud