tsan: fix mutex in Go mode
authorDmitry Vyukov <dvyukov@google.com>
Fri, 6 Jun 2014 18:04:05 +0000 (18:04 +0000)
committerDmitry Vyukov <dvyukov@google.com>
Fri, 6 Jun 2014 18:04:05 +0000 (18:04 +0000)
In Go it's legal to unlock from a different goroutine.

llvm-svn: 210358

compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc

index efb41f5..4522791 100644 (file)
@@ -198,7 +198,7 @@ int MutexUnlock(ThreadState *thr, uptr pc, uptr addr, bool all) {
   TraceAddEvent(thr, thr->fast_state, EventTypeUnlock, s->GetId());
   int rec = 0;
   bool report_bad_unlock = false;
-  if (s->recursion == 0 || s->owner_tid != thr->tid) {
+  if (kCppMode && (s->recursion == 0 || s->owner_tid != thr->tid)) {
     if (flags()->report_mutex_bugs && !s->is_broken) {
       s->is_broken = true;
       report_bad_unlock = true;