[llvm-commits] [compiler-rt] r162024 - in /compiler-rt/trunk/lib/tsan/rtl: tsan_flags.cc tsan_flags.h tsan_rtl_mutex.cc

Dmitry Vyukov dvyukov at google.com
Thu Aug 16 08:12:35 PDT 2012


Author: dvyukov
Date: Thu Aug 16 10:12:35 2012
New Revision: 162024

URL: http://llvm.org/viewvc/llvm-project?rev=162024&view=rev
Log:
tsan: add flag to disable reporting of destruction of locked mutexes (some programs use that on a regular basis)

Modified:
    compiler-rt/trunk/lib/tsan/rtl/tsan_flags.cc
    compiler-rt/trunk/lib/tsan/rtl/tsan_flags.h
    compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_mutex.cc

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_flags.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_flags.cc?rev=162024&r1=162023&r2=162024&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_flags.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_flags.cc Thu Aug 16 10:12:35 2012
@@ -40,6 +40,7 @@
   f->suppress_equal_stacks = true;
   f->suppress_equal_addresses = true;
   f->report_thread_leaks = true;
+  f->report_destroy_locked = true;
   f->report_signal_unsafe = true;
   f->force_seq_cst_atomics = false;
   f->strip_path_prefix = "";
@@ -62,6 +63,7 @@
   ParseFlag(env, &f->suppress_equal_stacks, "suppress_equal_stacks");
   ParseFlag(env, &f->suppress_equal_addresses, "suppress_equal_addresses");
   ParseFlag(env, &f->report_thread_leaks, "report_thread_leaks");
+  ParseFlag(env, &f->report_destroy_locked, "report_destroy_locked");
   ParseFlag(env, &f->report_signal_unsafe, "report_signal_unsafe");
   ParseFlag(env, &f->force_seq_cst_atomics, "force_seq_cst_atomics");
   ParseFlag(env, &f->strip_path_prefix, "strip_path_prefix");

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_flags.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_flags.h?rev=162024&r1=162023&r2=162024&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_flags.h (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_flags.h Thu Aug 16 10:12:35 2012
@@ -33,6 +33,8 @@
   bool suppress_equal_addresses;
   // Report thread leaks at exit?
   bool report_thread_leaks;
+  // Report destruction of a locked mutex?
+  bool report_destroy_locked;
   // Report violations of async signal-safety
   // (e.g. malloc() call from a signal handler).
   bool report_signal_unsafe;

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=162024&r1=162023&r2=162024&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_mutex.cc (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_rtl_mutex.cc Thu Aug 16 10:12:35 2012
@@ -12,6 +12,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "tsan_rtl.h"
+#include "tsan_flags.h"
 #include "tsan_sync.h"
 #include "tsan_report.h"
 #include "tsan_symbolize.h"
@@ -43,7 +44,9 @@
     return;
   if (!s->is_linker_init) {
     MemoryWrite1Byte(thr, pc, addr);
-    if (s->owner_tid != SyncVar::kInvalidTid && !s->is_broken) {
+    if (flags()->report_destroy_locked
+        && s->owner_tid != SyncVar::kInvalidTid
+        && !s->is_broken) {
       s->is_broken = true;
       ScopedReport rep(ReportTypeMutexDestroyLocked);
       rep.AddMutex(s);





More information about the llvm-commits mailing list