New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 843812 link

Starred by 2 users

Issue metadata

Status: Untriaged
Owner: ----
Cc:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug



Sign in to add a comment

data race between GetGlobalBinderRegistryForService and SetGlobalBinderForTesting

Project Member Reported by ynovikov@chromium.org, May 16 2018

Issue description

Got this in https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_tsan_rel_ng/16852

[ RUN      ] BatteryMonitorTest.NavigatorGetBatteryInfo
Xlib:  extension "RANDR" missing on display ":99".

DevTools listening on ws://127.0.0.1:37552/devtools/browser/398bf0c5-29b7-405b-8b58-c5717cd4d7ee
==================
WARNING: ThreadSanitizer: data race (pid=30225)
  Read of size 8 at 0x00000ccaeaf8 by thread T2:
    #0 operator bool buildtools/third_party/libc++/trunk/include/memory:2619:19 (content_browsertests+0x5acee30)
    #1 GetGlobalBinderRegistryForService services/service_manager/public/cpp/service_context.cc:32 (content_browsertests+0x5acee30)
    #2 service_manager::ServiceContext::OnBindInterface(service_manager::BindSourceInfo const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, mojo::ScopedHandleBase<mojo::MessagePipeHandle>, base::OnceCallback<void ()>) services/service_manager/public/cpp/service_context.cc:142 (content_browsertests+0x5acee30)
    #3 service_manager::mojom::ServiceStubDispatch::AcceptWithResponder(service_manager::mojom::Service*, mojo::Message*, std::__1::unique_ptr<mojo::MessageReceiverWithStatus, std::__1::default_delete<mojo::MessageReceiverWithStatus> >) gen/services/service_manager/public/mojom/service.mojom.cc:526:13 (content_browsertests+0x692afab)
    #4 service_manager::mojom::ServiceStub<mojo::RawPtrImplRefTraits<service_manager::mojom::Service> >::AcceptWithResponder(mojo::Message*, std::__1::unique_ptr<mojo::MessageReceiverWithStatus, std::__1::default_delete<mojo::MessageReceiverWithStatus> >) gen/services/service_manager/public/mojom/service.mojom.h:174:12 (content_browsertests+0x5ad0141)
    #5 mojo::InterfaceEndpointClient::HandleValidatedMessage(mojo::Message*) mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:394:34 (content_browsertests+0x5a8296f)
    #6 mojo::InterfaceEndpointClient::HandleIncomingMessageThunk::Accept(mojo::Message*) mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:133:18 (content_browsertests+0x5a823ca)
    #7 mojo::FilterChain::Accept(mojo::Message*) mojo/public/cpp/bindings/lib/filter_chain.cc:40:17 (content_browsertests+0x5a81dda)
    #8 mojo::InterfaceEndpointClient::HandleIncomingMessage(mojo::Message*) mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:306:19 (content_browsertests+0x5a8461a)
    #9 mojo::internal::MultiplexRouter::ProcessIncomingMessage(mojo::internal::MultiplexRouter::MessageWrapper*, mojo::internal::MultiplexRouter::ClientCallBehavior, base::SequencedTaskRunner*) mojo/public/cpp/bindings/lib/multiplex_router.cc:865:42 (content_browsertests+0x5a8f4db)
    #10 mojo::internal::MultiplexRouter::Accept(mojo::Message*) mojo/public/cpp/bindings/lib/multiplex_router.cc:589:38 (content_browsertests+0x5a8e2fa)
    #11 mojo::FilterChain::Accept(mojo::Message*) mojo/public/cpp/bindings/lib/filter_chain.cc:40:17 (content_browsertests+0x5a81dda)
    #12 mojo::Connector::ReadSingleMessage(unsigned int*) mojo/public/cpp/bindings/lib/connector.cc:443:51 (content_browsertests+0x5a7e54e)
    #13 mojo::Connector::ReadAllAvailableMessages() mojo/public/cpp/bindings/lib/connector.cc:472:10 (content_browsertests+0x5a7f367)
    #14 mojo::Connector::OnHandleReadyInternal(unsigned int) mojo/public/cpp/bindings/lib/connector.cc:373:3 (content_browsertests+0x5a7f10e)
    #15 mojo::Connector::OnWatcherHandleReady(unsigned int) mojo/public/cpp/bindings/lib/connector.cc:350:3 (content_browsertests+0x5a7f060)
    #16 Invoke<void (mojo::Connector::*)(unsigned int), mojo::Connector *, unsigned int> base/bind_internal.h:447:12 (content_browsertests+0x5a7fe4f)
    #17 MakeItSo<void (mojo::Connector::*const &)(unsigned int), mojo::Connector *, unsigned int> base/bind_internal.h:547 (content_browsertests+0x5a7fe4f)
    #18 RunImpl<void (mojo::Connector::*const &)(unsigned int), const std::__1::tuple<base::internal::UnretainedWrapper<mojo::Connector> > &, 0> base/bind_internal.h:621 (content_browsertests+0x5a7fe4f)
    #19 base::internal::Invoker<base::internal::BindState<void (mojo::Connector::*)(unsigned int), base::internal::UnretainedWrapper<mojo::Connector> >, void (unsigned int)>::Run(base::internal::BindStateBase*, unsigned int) base/bind_internal.h:603 (content_browsertests+0x5a7fe4f)
    #20 Run base/callback.h:125:12 (content_browsertests+0x288f2b8)
    #21 mojo::SimpleWatcher::DiscardReadyState(base::RepeatingCallback<void (unsigned int)> const&, unsigned int, mojo::HandleSignalsState const&) mojo/public/cpp/system/simple_watcher.h:194 (content_browsertests+0x288f2b8)
    #22 Invoke<void (*const &)(const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &), const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &> base/bind_internal.h:402:12 (content_browsertests+0x288f315)
    #23 MakeItSo<void (*const &)(const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &), const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &> base/bind_internal.h:547 (content_browsertests+0x288f315)
    #24 RunImpl<void (*const &)(const base::RepeatingCallback<void (unsigned int)> &, unsigned int, const mojo::HandleSignalsState &), const std::__1::tuple<base::RepeatingCallback<void (unsigned int)> > &, 0> base/bind_internal.h:621 (content_browsertests+0x288f315)
    #25 base::internal::Invoker<base::internal::BindState<void (*)(base::RepeatingCallback<void (unsigned int)> const&, unsigned int, mojo::HandleSignalsState const&), base::RepeatingCallback<void (unsigned int)> >, void (unsigned int, mojo::HandleSignalsState const&)>::Run(base::internal::BindStateBase*, unsigned int, mojo::HandleSignalsState const&) base/bind_internal.h:603 (content_browsertests+0x288f315)
    #26 Run base/callback.h:125:12 (content_browsertests+0x604308e)
    #27 mojo::SimpleWatcher::OnHandleReady(int, unsigned int, mojo::HandleSignalsState const&) mojo/public/cpp/system/simple_watcher.cc:274 (content_browsertests+0x604308e)
    #28 Invoke<void (mojo::SimpleWatcher::*)(int, unsigned int, const mojo::HandleSignalsState &), const base::WeakPtr<mojo::SimpleWatcher> &, const int &, const unsigned int &, const mojo::HandleSignalsState &> base/bind_internal.h:447:12 (content_browsertests+0x60437e5)
    #29 MakeItSo<void (mojo::SimpleWatcher::*const &)(int, unsigned int, const mojo::HandleSignalsState &), const base::WeakPtr<mojo::SimpleWatcher> &, const int &, const unsigned int &, const mojo::HandleSignalsState &> base/bind_internal.h:567 (content_browsertests+0x60437e5)
    #30 void base::internal::Invoker<base::internal::BindState<void (mojo::SimpleWatcher::*)(int, unsigned int, mojo::HandleSignalsState const&), base::WeakPtr<mojo::SimpleWatcher>, int, unsigned int, mojo::HandleSignalsState>, void ()>::RunImpl<void (mojo::SimpleWatcher::* const&)(int, unsigned int, mojo::HandleSignalsState const&), std::__1::tuple<base::WeakPtr<mojo::SimpleWatcher>, int, unsigned int, mojo::HandleSignalsState> const&, 0ul, 1ul, 2ul, 3ul>(void (mojo::SimpleWatcher::* const&&&)(int, unsigned int, mojo::HandleSignalsState const&), std::__1::tuple<base::WeakPtr<mojo::SimpleWatcher>, int, unsigned int, mojo::HandleSignalsState> const&&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul>) base/bind_internal.h:621 (content_browsertests+0x60437e5)
    #31 base::internal::Invoker<base::internal::BindState<void (mojo::SimpleWatcher::*)(int, unsigned int, mojo::HandleSignalsState const&), base::WeakPtr<mojo::SimpleWatcher>, int, unsigned int, mojo::HandleSignalsState>, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:603:12 (content_browsertests+0x604368e)
    #32 Run base/callback.h:96:12 (content_browsertests+0x5eee9ab)
    #33 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) base/debug/task_annotator.cc:101 (content_browsertests+0x5eee9ab)
    #34 base::internal::IncomingTaskQueue::RunTask(base::PendingTask*) base/message_loop/incoming_task_queue.cc:124:19 (content_browsertests+0x5f2d2ce)
    #35 base::MessageLoop::RunTask(base::PendingTask*) base/message_loop/message_loop.cc:319:25 (content_browsertests+0x5f2a813)
    #36 base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) base/message_loop/message_loop.cc:329:5 (content_browsertests+0x5f2acfc)
    #37 base::MessageLoop::DoWork() base/message_loop/message_loop.cc:373:16 (content_browsertests+0x5f2b095)
    #38 base::MessagePumpLibevent::Run(base::MessagePump::Delegate*) base/message_loop/message_pump_libevent.cc:210:31 (content_browsertests+0x6031a54)
    #39 base::MessageLoop::Run(bool) base/message_loop/message_loop.cc:271:12 (content_browsertests+0x5f29f07)
    #40 non-virtual thunk to base::MessageLoop::Run(bool) base/message_loop/message_loop.cc (content_browsertests+0x5f29ff4)
    #41 base::RunLoop::Run() base/run_loop.cc:131:14 (content_browsertests+0x5f6996f)
    #42 base::Thread::Run(base::RunLoop*) base/threading/thread.cc:255:13 (content_browsertests+0x5fb79bb)
    #43 content::BrowserProcessSubThread::IOThreadRun(base::RunLoop*) content/browser/browser_process_sub_thread.cc:155:11 (content_browsertests+0x4cb84f6)
    #44 content::BrowserProcessSubThread::Run(base::RunLoop*) content/browser/browser_process_sub_thread.cc:105:7 (content_browsertests+0x4cb8403)
    #45 base::Thread::ThreadMain() base/threading/thread.cc:337:3 (content_browsertests+0x5fb7f9b)
    #46 base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:76:13 (content_browsertests+0x602a208)

  Previous write of size 8 at 0x00000ccaeaf8 by main thread:
    #0 reset buildtools/third_party/libc++/trunk/include/memory:2632:20 (content_browsertests+0x5acdc4e)
    #1 operator= buildtools/third_party/libc++/trunk/include/memory:2500 (content_browsertests+0x5acdc4e)
    #2 service_manager::ServiceContext::SetGlobalBinderForTesting(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, base::RepeatingCallback<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, mojo::ScopedHandleBase<mojo::MessagePipeHandle>, service_manager::BindSourceInfo const&)> const&, scoped_refptr<base::SequencedTaskRunner> const&) services/service_manager/public/cpp/service_context.cc:53 (content_browsertests+0x5acdc4e)
    #3 content::(anonymous namespace)::BatteryMonitorTest::SetUpOnMainThread() content/browser/battery_monitor_browsertest.cc:81:5 (content_browsertests+0x1e2b34f)
    #4 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop() content/public/test/browser_test_base.cc:373:5 (content_browsertests+0x5929a23)
    #5 Invoke<void (content::BrowserTestBase::*)(), content::BrowserTestBase *> base/bind_internal.h:447:12 (content_browsertests+0x592adb8)
    #6 MakeItSo<void (content::BrowserTestBase::*const &)(), content::BrowserTestBase *> base/bind_internal.h:547 (content_browsertests+0x592adb8)
    #7 RunImpl<void (content::BrowserTestBase::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserTestBase> > &, 0> base/bind_internal.h:621 (content_browsertests+0x592adb8)
    #8 base::internal::Invoker<base::internal::BindState<void (content::BrowserTestBase::*)(), base::internal::UnretainedWrapper<content::BrowserTestBase> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:603 (content_browsertests+0x592adb8)
    #9 Run base/callback.h:125:12 (content_browsertests+0x5a28a8c)
    #10 content::ShellBrowserMainParts::PreMainMessageLoopRun() content/shell/browser/shell_browser_main_parts.cc:202 (content_browsertests+0x5a28a8c)
    #11 content::BrowserMainLoop::PreMainMessageLoopRun() content/browser/browser_main_loop.cc:961:13 (content_browsertests+0x4ca86f0)
    #12 Invoke<int (content::BrowserMainLoop::*)(), content::BrowserMainLoop *> base/bind_internal.h:447:12 (content_browsertests+0x4cabe68)
    #13 MakeItSo<int (content::BrowserMainLoop::*const &)(), content::BrowserMainLoop *> base/bind_internal.h:547 (content_browsertests+0x4cabe68)
    #14 RunImpl<int (content::BrowserMainLoop::*const &)(), const std::__1::tuple<base::internal::UnretainedWrapper<content::BrowserMainLoop> > &, 0> base/bind_internal.h:621 (content_browsertests+0x4cabe68)
    #15 base::internal::Invoker<base::internal::BindState<int (content::BrowserMainLoop::*)(), base::internal::UnretainedWrapper<content::BrowserMainLoop> >, int ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:603 (content_browsertests+0x4cabe68)
    #16 Run base/callback.h:125:12 (content_browsertests+0x5429baa)
    #17 content::StartupTaskRunner::RunAllTasksNow() content/browser/startup_task_runner.cc:44 (content_browsertests+0x5429baa)
    #18 content::BrowserMainLoop::CreateStartupTasks() content/browser/browser_main_loop.cc:874:25 (content_browsertests+0x4ca6b83)
    #19 content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner_impl.cc:139:17 (content_browsertests+0x4cac3fa)
    #20 ShellBrowserMain(content::MainFunctionParams const&, std::__1::unique_ptr<content::BrowserMainRunner, std::__1::default_delete<content::BrowserMainRunner> > const&) content/shell/browser/shell_browser_main.cc:22:32 (content_browsertests+0x5a27f6a)
    #21 content::ShellMainDelegate::RunProcess(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&) content/shell/app/shell_main_delegate.cc:335:16 (content_browsertests+0x59afed2)
    #22 content::RunNamedProcessTypeMain(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&, content::ContentMainDelegate*) content/app/content_main_runner_impl.cc:627:23 (content_browsertests+0x4b13812)
    #23 content::ContentMainRunnerImpl::Run() content/app/content_main_runner_impl.cc:942:12 (content_browsertests+0x4b1514b)
    #24 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() content/app/content_service_manager_main_delegate.cc:51:32 (content_browsertests+0x383a2bf)
    #25 service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:452:29 (content_browsertests+0x804fc77)
    #26 content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10 (content_browsertests+0x383aabe)
    #27 content::BrowserTestBase::SetUp() content/public/test/browser_test_base.cc:321:3 (content_browsertests+0x59294c3)
    #28 content::ContentBrowserTest::SetUp() content/public/test/content_browser_test.cc:100:20 (content_browsertests+0x591875b)
    #29 testing::Test::Run() third_party/googletest/src/googletest/src/gtest.cc (content_browsertests+0x32cab2b)
    #30 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2667:11 (content_browsertests+0x32cbd0c)
    #31 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2785:28 (content_browsertests+0x32cc586)
    #32 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5047:43 (content_browsertests+0x32dcb26)
    #33 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc (content_browsertests+0x32dc42b)
    #34 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2329:46 (content_browsertests+0x597fba6)
    #35 base::TestSuite::Run() base/test/test_suite.cc:275 (content_browsertests+0x597fba6)
    #36 content::ContentTestLauncherDelegate::RunTestSuite(int, char**) content/test/content_test_launcher.cc:108:48 (content_browsertests+0x591e43b)
    #37 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) content/public/test/test_launcher.cc:625:31 (content_browsertests+0x5957db9)
    #38 main content/test/content_test_launcher.cc:138:10 (content_browsertests+0x591e3cd)

  Location is global 'service_manager::(anonymous namespace)::g_overridden_binder_registries' of size 16 at 0x00000ccaeaf0 (content_browsertests+0x00000ccaeaf8)

  Thread T2 'Chrome_IOThread' (tid=30251, running) created by main thread at:
    #0 pthread_create /b/build/slave/linux_upload_clang/build/src/third_party/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:965:3 (content_browsertests+0x1d48c95)
    #1 base::(anonymous namespace)::CreateThread(unsigned long, bool, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:115:13 (content_browsertests+0x6029cb6)
    #2 base::PlatformThread::CreateWithPriority(unsigned long, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:200:10 (content_browsertests+0x6029b75)
    #3 base::Thread::StartWithOptions(base::Thread::Options const&) base/threading/thread.cc:112:15 (content_browsertests+0x5fb7105)
    #4 content::BrowserMainLoop::InitializeIOThread() content/browser/browser_main_loop.cc:1507:20 (content_browsertests+0x4ca60c6)
    #5 content::BrowserMainLoop::PostMainMessageLoopStart() content/browser/browser_main_loop.cc:663:5 (content_browsertests+0x4ca526f)
    #6 content::BrowserMainRunnerImpl::Initialize(content::MainFunctionParams const&) content/browser/browser_main_runner_impl.cc:128:19 (content_browsertests+0x4cac849)
    #7 ShellBrowserMain(content::MainFunctionParams const&, std::__1::unique_ptr<content::BrowserMainRunner, std::__1::default_delete<content::BrowserMainRunner> > const&) content/shell/browser/shell_browser_main.cc:22:32 (content_browsertests+0x5a27f6a)
    #8 content::ShellMainDelegate::RunProcess(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&) content/shell/app/shell_main_delegate.cc:335:16 (content_browsertests+0x59afed2)
    #9 content::RunNamedProcessTypeMain(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&, content::ContentMainDelegate*) content/app/content_main_runner_impl.cc:627:23 (content_browsertests+0x4b13812)
    #10 content::ContentMainRunnerImpl::Run() content/app/content_main_runner_impl.cc:942:12 (content_browsertests+0x4b1514b)
    #11 content::ContentServiceManagerMainDelegate::RunEmbedderProcess() content/app/content_service_manager_main_delegate.cc:51:32 (content_browsertests+0x383a2bf)
    #12 service_manager::Main(service_manager::MainParams const&) services/service_manager/embedder/main.cc:452:29 (content_browsertests+0x804fc77)
    #13 content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:10 (content_browsertests+0x383aabe)
    #14 content::BrowserTestBase::SetUp() content/public/test/browser_test_base.cc:321:3 (content_browsertests+0x59294c3)
    #15 content::ContentBrowserTest::SetUp() content/public/test/content_browser_test.cc:100:20 (content_browsertests+0x591875b)
    #16 testing::Test::Run() third_party/googletest/src/googletest/src/gtest.cc (content_browsertests+0x32cab2b)
    #17 testing::TestInfo::Run() third_party/googletest/src/googletest/src/gtest.cc:2667:11 (content_browsertests+0x32cbd0c)
    #18 testing::TestCase::Run() third_party/googletest/src/googletest/src/gtest.cc:2785:28 (content_browsertests+0x32cc586)
    #19 testing::internal::UnitTestImpl::RunAllTests() third_party/googletest/src/googletest/src/gtest.cc:5047:43 (content_browsertests+0x32dcb26)
    #20 testing::UnitTest::Run() third_party/googletest/src/googletest/src/gtest.cc (content_browsertests+0x32dc42b)
    #21 RUN_ALL_TESTS third_party/googletest/src/googletest/include/gtest/gtest.h:2329:46 (content_browsertests+0x597fba6)
    #22 base::TestSuite::Run() base/test/test_suite.cc:275 (content_browsertests+0x597fba6)
    #23 content::ContentTestLauncherDelegate::RunTestSuite(int, char**) content/test/content_test_launcher.cc:108:48 (content_browsertests+0x591e43b)
    #24 content::LaunchTests(content::TestLauncherDelegate*, unsigned long, int, char**) content/public/test/test_launcher.cc:625:31 (content_browsertests+0x5957db9)
    #25 main content/test/content_test_launcher.cc:138:10 (content_browsertests+0x591e3cd)

SUMMARY: ThreadSanitizer: data race buildtools/third_party/libc++/trunk/include/memory:2619:19 in operator bool
 
Cc: -roc...@chromium.org rockot@google.com

Sign in to add a comment