diff options
Diffstat (limited to 'ipc/ipc_sync_channel_unittest.cc')
-rw-r--r-- | ipc/ipc_sync_channel_unittest.cc | 17 |
1 files changed, 15 insertions, 2 deletions
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 @@ class Worker : public Channel::Listener, public Message::Sender { 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 @@ class Worker : public Channel::Listener, public Message::Sender { 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. |