Suppress a data race on vfptr in ipc/ipc_sync_channel_unittest.cc
This race was already suppressed, but the existing suppression doesn't
work if the order of accesses is different. We can prepare a suppression to make TSAN bots silent
but it will be way too wide. I think adding one line of annotation with comment (twice) is better in terms of precision.
BUG=25841
Review URL: http://codereview.chromium.org/339008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30181 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: 8a734428831e1ef29b0201e01457b41140bd079e
diff --git a/ipc/ipc_sync_channel_unittest.cc b/ipc/ipc_sync_channel_unittest.cc
index 3219000..007f354 100644
--- a/ipc/ipc_sync_channel_unittest.cc
+++ b/ipc/ipc_sync_channel_unittest.cc
@@ -8,6 +8,7 @@
 #include <vector>
 
 #include "base/basictypes.h"
+#include "base/dynamic_annotations.h"
 #include "base/logging.h"
 #include "base/message_loop.h"
 #include "base/platform_thread.h"
@@ -39,7 +40,13 @@
         ipc_thread_((thread_name + "_ipc").c_str()),
         listener_thread_((thread_name + "_listener").c_str()),
         overrided_thread_(NULL),
-        shutdown_event_(true, false) { }
+        shutdown_event_(true, false) {
+    // The data race on vfptr is real but is very hard
+    // to suppress using standard Valgrind mechanism (suppressions).
+    // We have to use ANNOTATE_BENIGN_RACE to hide the reports and
+    // make ThreadSanitizer bots green.
+    ANNOTATE_BENIGN_RACE(this, "Race on vfptr, http://crbug.com/25841");
+  }
 
   // Will create a named channel and use this name for the threads' name.
   Worker(const std::string& channel_name, Channel::Mode mode)
@@ -50,7 +57,13 @@
         ipc_thread_((channel_name + "_ipc").c_str()),
         listener_thread_((channel_name + "_listener").c_str()),
         overrided_thread_(NULL),
-        shutdown_event_(true, false) { }
+        shutdown_event_(true, false) {
+    // The data race on vfptr is real but is very hard
+    // to suppress using standard Valgrind mechanism (suppressions).
+    // We have to use ANNOTATE_BENIGN_RACE to hide the reports and
+    // make ThreadSanitizer bots green.
+    ANNOTATE_BENIGN_RACE(this, "Race on vfptr, http://crbug.com/25841");
+  }
 
   // The IPC thread needs to outlive SyncChannel, so force the correct order of
   // destruction.