[llvm-commits] [compiler-rt] r162169 - in /compiler-rt/trunk/lib/tsan/rtl: tsan_rtl_mutex.cc tsan_sync.cc
Dmitry Vyukov
dvyukov at google.com
Sat Aug 18 04:49:01 PDT 2012
Author: dvyukov
Date: Sat Aug 18 06:49:00 2012
New Revision: 162169
URL: http://llvm.org/viewvc/llvm-project?rev=162169&view=rev
Log:
tsan: proper handling of linker initialized mutexes
Modified:
compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_mutex.cc
compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc
Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_mutex.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_mutex.cc?rev=162169&r1=162168&r2=162169&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_mutex.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_mutex.cc Sat Aug 18 06:49:00 2012
@@ -42,23 +42,21 @@
SyncVar *s = ctx->synctab.GetAndRemove(thr, pc, addr);
if (s == 0)
return;
- if (!s->is_linker_init) {
- MemoryWrite1Byte(thr, pc, addr);
- if (flags()->report_destroy_locked
- && s->owner_tid != SyncVar::kInvalidTid
- && !s->is_broken) {
- s->is_broken = true;
- ScopedReport rep(ReportTypeMutexDestroyLocked);
- rep.AddMutex(s);
- StackTrace trace;
- trace.ObtainCurrent(thr, pc);
- rep.AddStack(&trace);
- FastState last(s->last_lock);
- RestoreStack(last.tid(), last.epoch(), &trace);
- rep.AddStack(&trace);
- rep.AddLocation(s->addr, 1);
- OutputReport(rep);
- }
+ MemoryWrite1Byte(thr, pc, addr);
+ if (flags()->report_destroy_locked
+ && s->owner_tid != SyncVar::kInvalidTid
+ && !s->is_broken) {
+ s->is_broken = true;
+ ScopedReport rep(ReportTypeMutexDestroyLocked);
+ rep.AddMutex(s);
+ StackTrace trace;
+ trace.ObtainCurrent(thr, pc);
+ rep.AddStack(&trace);
+ FastState last(s->last_lock);
+ RestoreStack(last.tid(), last.epoch(), &trace);
+ rep.AddStack(&trace);
+ rep.AddLocation(s->addr, 1);
+ OutputReport(rep);
}
DestroyAndFree(s);
}
Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc?rev=162169&r1=162168&r2=162169&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_sync.cc Sat Aug 18 06:49:00 2012
@@ -123,6 +123,8 @@
res = *prev;
while (res) {
if (res->addr == addr) {
+ if (res->is_linker_init)
+ return 0;
*prev = res->next;
break;
}
@@ -147,6 +149,8 @@
res = *prev;
while (res) {
if (res->addr == addr) {
+ if (res->is_linker_init)
+ return 0;
*prev = res->next;
break;
}
More information about the llvm-commits
mailing list