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

Issue 599535 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Apr 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

Massive data race reports from components/scheduler/base/time_domain.cc on TSan trybot

Project Member Reported by glider@chromium.org, Mar 31 2016

Issue description

See https://chromium-swarm.appspot.com/user/task/2de60ac1756e1c10:

[ RUN      ] DevToolsProtocolTest.NavigationPreservesMessages
[3091:3091:0331/081644:2790115282:ERROR:browser_main_loop.cc(219)] Running without the SUID sandbox! See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the sandbox on.
Xlib:  extension "RANDR" missing on display ":9".
[3091:3091:0331/081645:2791182237:WARNING:shell.cc(299)] Instance: exe:chrome attempting to register an instance for a process it created for target: exe:chrome_renderer without the mojo:shell{client_process} capability class.
LaunchProcess: failed to execvp:
[3149:3149:0331/081646:2791356475:WARNING:ipc_message_attachment_set.cc(57)] MessageAttachmentSet destroyed with unconsumed descriptors: 0/1
LaunchProcess: failed to execvp:
[3091:3091:0331/081646:2792283913:WARNING:shell.cc(299)] Instance: exe:chrome attempting to register an instance for a process it created for target: exe:chrome_renderer without the mojo:shell{client_process} capability class.
==================
WARNING: ThreadSanitizer: data race (pid=3192)
  Read of size 8 at 0x7d0c00006a50 by thread T8 (mutexes: write M2510):
    #0 __lower_bound<scheduler::internal::TaskQueueImpl *> buildtools/third_party/libc++/trunk/include/__tree:2093:58 (content_browsertests+0x000005213df7)
    #1 find<scheduler::internal::TaskQueueImpl *> buildtools/third_party/libc++/trunk/include/__tree:2017 (content_browsertests+0x000005213df7)
    #2 find buildtools/third_party/libc++/trunk/include/set:654 (content_browsertests+0x000005213df7)
    #3 scheduler::TimeDomain::RegisterAsUpdatableTaskQueue(scheduler::internal::TaskQueueImpl*) components/scheduler/base/time_domain.cc:105 (content_browsertests+0x000005213df7)
    #4 scheduler::internal::TaskQueueImpl::PushOntoImmediateIncomingQueueLocked(scheduler::internal::TaskQueueImpl::Task&&) components/scheduler/base/task_queue_impl.cc:245:5 (content_browsertests+0x0000052200d2)
    #5 scheduler::internal::TaskQueueImpl::PostImmediateTaskImpl(tracked_objects::Location const&, base::Callback<void (), (base::internal::CopyMode)1> const&, scheduler::internal::TaskQueueImpl::TaskType) components/scheduler/base/task_queue_impl.cc:169:3 (content_browsertests+0x00000521fb5d)
    #6 scheduler::internal::TaskQueueImpl::PostDelayedTask(tracked_objects::Location const&, base::Callback<void (), (base::internal::CopyMode)1> const&, base::TimeDelta) components/scheduler/base/task_queue_impl.cc:143:12 (content_browsertests+0x00000521fa9a)
    #7 base::TaskRunner::PostTask(tracked_objects::Location const&, base::Callback<void (), (base::internal::CopyMode)1> const&) base/task_runner.cc:45:10 (content_browsertests+0x0000011d9ed3)
    #8 scheduler::WebTaskRunnerImpl::postTask(blink::WebTraceLocation const&, blink::WebTaskRunner::Task*) components/scheduler/child/web_task_runner_impl.cc:24:3 (content_browsertests+0x00000521cc23)
    #9 blink::WebTaskRunner::postTask(blink::WebTraceLocation const&, WTF::PassOwnPtr<WTF::Function<void (), (WTF::FunctionThreadAffinity)0> >) third_party/WebKit/Source/platform/WebTaskRunner.cpp:13:5 (content_browsertests+0x0000027e1e5e)
    #10 blink::BackgroundHTMLParser::updateDocument(WTF::String const&) third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp:159:9 (content_browsertests+0x0000041d59d5)
    #11 blink::BackgroundHTMLParser::appendRawBytesFromMainThread(WTF::PassOwnPtr<WTF::Vector<char, 0ul, WTF::PartitionAllocator> >) third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp:129:5 (content_browsertests+0x0000041d5b47)
    #12 void WTF::FunctionWrapper<void (blink::BackgroundHTMLParser::*)(WTF::PassOwnPtr<WTF::Vector<char, 0ul, WTF::PartitionAllocator> >)>::operator()<WTF::PassOwnPtr<WTF::Vector<char, 0ul, WTF::PartitionAllocator> >&>(WTF::WeakPtr<blink::BackgroundHTMLParser> const&, WTF::PassOwnPtr<WTF::Vector<char, 0ul, WTF::PartitionAllocator> >&) third_party/WebKit/Source/wtf/Functional.h:148:16 (content_browsertests+0x000004125211)
    #13 callInternal<0, 1> third_party/WebKit/Source/wtf/Functional.h:284:16 (content_browsertests+0x000004125142)
    #14 WTF::PartBoundFunctionImpl<(WTF::FunctionThreadAffinity)0, std::__1::tuple<WTF::WeakPtr<blink::BackgroundHTMLParser> const&, WTF::PassOwnPtr<WTF::Vector<char, 0ul, WTF::PartitionAllocator> >&&>, WTF::FunctionWrapper<void (blink::BackgroundHTMLParser::*)(WTF::PassOwnPtr<WTF::Vector<char, 0ul, WTF::PartitionAllocator> >)>>::operator()() third_party/WebKit/Source/wtf/Functional.h:275 (content_browsertests+0x000004125142)
    #15 blink::CrossThreadTask::run() third_party/WebKit/Source/platform/Task.h:77:9 (content_browsertests+0x0000027e2164)
    #16 scheduler::WebTaskRunnerImpl::runTask(std::__1::unique_ptr<blink::WebTaskRunner::Task, std::__1::default_delete<blink::WebTaskRunner::Task> >) components/scheduler/child/web_task_runner_impl.cc:68:3 (content_browsertests+0x00000521cc6d)
    #17 Run<std::__1::unique_ptr<blink::WebTaskRunner::Task, std::__1::default_delete<blink::WebTaskRunner::Task> > > base/bind_internal.h:159:12 (content_browsertests+0x00000521d170)
...

  Previous write of size 8 at 0x7d0c00006a50 by main thread (mutexes: write M2459):
    #0 __tree_right_rotate<std::__1::__tree_node_base<void *> *> buildtools/third_party/libc++/trunk/include/__tree:225:33 (content_browsertests+0x00000053a181)
    #1 void std::__1::__tree_balance_after_insert<std::__1::__tree_node_base<void*>*>(std::__1::__tree_node_base<void*>*, std::__1::__tree_node_base<void*>*) buildtools/third_party/libc++/trunk/include/__tree:270 (content_browsertests+0x00000053a181)
    #2 __insert_node_at buildtools/third_party/libc++/trunk/include/__tree:1706:5 (content_browsertests+0x000005214e4c)
    #3 std::__1::__tree<scheduler::internal::TaskQueueImpl*, std::__1::less<scheduler::internal::TaskQueueImpl*>, std::__1::allocator<scheduler::internal::TaskQueueImpl*> >::__insert_unique(scheduler::internal::TaskQueueImpl* const&) buildtools/third_party/libc++/trunk/include/__tree:1862 (content_browsertests+0x000005214e4c)
    #4 insert buildtools/third_party/libc++/trunk/include/set:602:17 (content_browsertests+0x000005213817)
    #5 scheduler::TimeDomain::MigrateQueue(scheduler::internal::TaskQueueImpl*, scheduler::TimeDomain*) components/scheduler/base/time_domain.cc:66 (content_browsertests+0x000005213817)
    #6 scheduler::internal::TaskQueueImpl::SetTimeDomain(scheduler::TimeDomain*) components/scheduler/base/task_queue_impl.cc:641:3 (content_browsertests+0x00000522493a)
    #7 scheduler::ThrottlingHelper::DecreaseThrottleRefCount(scheduler::TaskQueue*) components/scheduler/renderer/throttling_helper.cc:77:5 (content_browsertests+0x000005210d1b)
    #8 scheduler::WebFrameSchedulerImpl::setPageVisible(bool) components/scheduler/renderer/web_frame_scheduler_impl.cc:95:5 (content_browsertests+0x000005233305)
    #9 scheduler::WebViewSchedulerImpl::setPageVisible(bool) components/scheduler/renderer/web_view_scheduler_impl.cc:51:5 (content_browsertests+0x00000521e312)
    #10 blink::WebViewImpl::setVisibilityState(blink::WebPageVisibilityState, bool) third_party/WebKit/Source/web/WebViewImpl.cpp:4492:5 (content_browsertests+0x00000343fc61)
    #11 content::RenderViewImpl::OnWasShown(bool, ui::LatencyInfo const&) content/renderer/render_view_impl.cc:2841:5 (content_browsertests+0x000000a3bf4a)
    #12 DispatchToMethodImpl<content::RenderWidget *, void (content::RenderWidget::*)(bool, const ui::LatencyInfo &), bool, ui::LatencyInfo, 0, 1> base/tuple.h:166:3 (content_browsertests+0x000000a4a347)
    #13 DispatchToMethod<content::RenderWidget *, void (content::RenderWidget::*)(bool, const ui::LatencyInfo &), bool, ui::LatencyInfo> base/tuple.h:173 (content_browsertests+0x000000a4a347)
    #14 DispatchToMethod<content::RenderWidget, void (content::RenderWidget::*)(bool, const ui::LatencyInfo &), void, std::__1::tuple<bool, ui::LatencyInfo> > ipc/ipc_message_templates.h:26 (content_browsertests+0x000000a4a347)
    #15 bool IPC::MessageT<ViewMsg_WasShown_Meta, std::__1::tuple<bool, ui::LatencyInfo>, void>::Dispatch<content::RenderWidget, content::RenderWidget, void, void (content::RenderWidget::*)(bool, ui::LatencyInfo const&)>(IPC::Message const*, content::RenderWidget*, content::RenderWidget*, void*, void (content::RenderWidget::*)(bool, ui::LatencyInfo const&)) ipc/ipc_message_templates.h:121 (content_browsertests+0x000000a4a347)
    #16 content::RenderWidget::OnMessageReceived(IPC::Message const&) content/renderer/render_widget.cc:475:5 (content_browsertests+0x000000a4789f)
    #17 content::RenderViewImpl::OnMessageReceived(IPC::Message const&) content/renderer/render_view_impl.cc:1403:5 (content_browsertests+0x000000a29e15)
    #18 IPC::MessageRouter::RouteMessage(IPC::Message const&) ipc/message_router.cc:52:10 (content_browsertests+0x00000212798b)
    #19 content::ChildThreadImpl::ChildThreadMessageRouter::RouteMessage(IPC::Message const&) content/child/child_thread_impl.cc:305:18 (content_browsertests+0x0000051585d0)
    #20 IPC::MessageRouter::OnMessageReceived(IPC::Message const&) ipc/message_router.cc:44:10 (content_browsertests+0x000002127875)
    #21 content::ChildThreadImpl::OnMessageReceived(IPC::Message const&) content/child/child_thread_impl.cc:636:10 (content_browsertests+0x00000515ba71)
    #22 IPC::ChannelProxy::Context::OnDispatchMessage(IPC::Message const&) ipc/ipc_channel_proxy.cc:282:3 (content_browsertests+0x000002112814)
    #23 Run<IPC::ChannelProxy::Context, const IPC::Message &> base/bind_internal.h:186:12 (content_browsertests+0x00000211505a)
    #24 MakeItSo<const scoped_refptr<IPC::ChannelProxy::Context> &, const IPC::Message &> base/bind_internal.h:311 (content_browsertests+0x00000211505a)
    #25 base::internal::Invoker<base::IndexSequence<0ul, 1ul>, base::internal::BindState<base::internal::RunnableAdapter<void (IPC::ChannelProxy::Context::*)(IPC::Message const&)>, void (IPC::ChannelProxy::Context*, IPC::Message const&), IPC::ChannelProxy::Context*, IPC::Message const&>, base::internal::InvokeHelper<false, void, base::internal::RunnableAdapter<void (IPC::ChannelProxy::Context::*)(IPC::Message const&)> >, void ()>::Run(base::internal::BindStateBase*) base/bind_internal.h:362 (content_browsertests+0x00000211505a)
    #26 Run base/callback.h:397:12 (content_browsertests+0x00000123039d)
...

  Location is heap block of size 40 at 0x7d0c00006a50 allocated by main thread:
    #0 operator new(unsigned long) <null> (content_browsertests+0x0000004fdece)
    #1 __allocate buildtools/third_party/libc++/trunk/include/new:168:10 (content_browsertests+0x000005214db1)
    #2 allocate buildtools/third_party/libc++/trunk/include/memory:1729 (content_browsertests+0x000005214db1)
    #3 allocate buildtools/third_party/libc++/trunk/include/memory:1488 (content_browsertests+0x000005214db1)
    #4 __construct_node<scheduler::internal::TaskQueueImpl *const &> buildtools/third_party/libc++/trunk/include/__tree:1719 (content_browsertests+0x000005214db1)
    #5 std::__1::__tree<scheduler::internal::TaskQueueImpl*, std::__1::less<scheduler::internal::TaskQueueImpl*>, std::__1::allocator<scheduler::internal::TaskQueueImpl*> >::__insert_unique(scheduler::internal::TaskQueueImpl* const&) buildtools/third_party/libc++/trunk/include/__tree:1861 (content_browsertests+0x000005214db1)
    #6 insert buildtools/third_party/libc++/trunk/include/set:602:17 (content_browsertests+0x000005213085)
    #7 scheduler::TimeDomain::RegisterQueue(scheduler::internal::TaskQueueImpl*) components/scheduler/base/time_domain.cc:29 (content_browsertests+0x000005213085)
    #8 scheduler::internal::TaskQueueImpl::TaskQueueImpl(scheduler::TaskQueueManager*, scheduler::TimeDomain*, scheduler::TaskQueue::Spec const&, char const*, char const*) components/scheduler/base/task_queue_impl.cc:38:3 (content_browsertests+0x00000521efef)
    #9 scheduler::TaskQueueManager::NewTaskQueue(scheduler::TaskQueue::Spec const&) components/scheduler/base/task_queue_manager.cc:99:30 (content_browsertests+0x000005229961)
    #10 scheduler::SchedulerHelper::NewTaskQueue(scheduler::TaskQueue::Spec const&) components/scheduler/child/scheduler_helper.cc:67:10 (content_browsertests+0x00000521a1f0)
    #11 scheduler::RendererSchedulerImpl::NewLoadingTaskRunner(char const*) components/scheduler/renderer/renderer_scheduler_impl.cc:189:47 (content_browsertests+0x000005206f5f)
    #12 scheduler::RendererSchedulerImpl::RendererSchedulerImpl(scoped_refptr<scheduler::SchedulerTqmDelegate>) components/scheduler/renderer/renderer_scheduler_impl.cc:69:34 (content_browsertests+0x000005205906)
    #13 scheduler::RendererScheduler::Create() components/scheduler/renderer/renderer_scheduler.cc:43:11 (content_browsertests+0x000005204d5c)
    #14 content::RendererMain(content::MainFunctionParams const&) content/renderer/renderer_main.cc:177:7 (content_browsertests+0x0000060e1b34)
    #15 content::RunZygote(content::MainFunctionParams const&, content::ContentMainDelegate*) content/app/content_main_runner.cc:315:14 (content_browsertests+0x000005e8e725)
    #16 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.cc:401:12 (content_browsertests+0x000005e8f2fd)
    #17 content::ContentMainRunnerImpl::Run() content/app/content_main_runner.cc:754:12 (content_browsertests+0x000005e90149)
    #18 content::ContentMain(content::ContentMainParams const&) content/app/content_main.cc:19:15 (content_browsertests+0x000005e8e0ce)
    #19 content::LaunchTests(content::TestLauncherDelegate*, int, int, char**) content/public/test/test_launcher.cc:523:12 (content_browsertests+0x000000db1861)
    #20 main content/test/content_test_launcher.cc:131:10 (content_browsertests+0x000000d04c62)

  Mutex M2510 (0x7d4800009918) created at:
    #0 pthread_mutex_init <null> (content_browsertests+0x0000004a1473)
    #1 base::internal::LockImpl::LockImpl() base/synchronization/lock_impl_posix.cc:29:3 (content_browsertests+0x0000011d51bb)
    #2 base::Lock::Lock() base/synchronization/lock.cc:15:16 (content_browsertests+0x0000011d4ebc)
    #3 scheduler::internal::TaskQueueImpl::TaskQueueImpl(scheduler::TaskQueueManager*, scheduler::TimeDomain*, scheduler::TaskQueue::Spec const&, char const*, char const*) components/scheduler/base/task_queue_impl.cc:15:16 (content_browsertests+0x00000521ed5c)
    #4 scheduler::TaskQueueManager::NewTaskQueue(scheduler::TaskQueue::Spec const&) components/scheduler/base/task_queue_manager.cc:99:30 (content_browsertests+0x000005229961)
    #5 scheduler::SchedulerHelper::NewTaskQueue(scheduler::TaskQueue::Spec const&) components/scheduler/child/scheduler_helper.cc:67:10 (content_browsertests+0x00000521a1f0)
    #6 scheduler::RendererSchedulerImpl::NewLoadingTaskRunner(char const*) components/scheduler/renderer/renderer_scheduler_impl.cc:189:47 (content_browsertests+0x000005206f5f)
    #7 scheduler::WebFrameSchedulerImpl::loadingTaskRunner() components/scheduler/renderer/web_frame_scheduler_impl.cc:49:9 (content_browsertests+0x000005232d65)
    #8 blink::Document::loadingTaskRunner() const third_party/WebKit/Source/core/dom/Document.cpp:5921:16 (content_browsertests+0x000003d4127e)
    #9 blink::HTMLDocumentParser::HTMLDocumentParser(blink::HTMLDocument&, bool, blink::ParserSynchronizationPolicy) third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp:118:36 (content_browsertests+0x0000041139b8)
    #10 create third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h:75:39 (content_browsertests+0x000003d3ca51)
    #11 blink::Document::createParser() third_party/WebKit/Source/core/dom/Document.cpp:2418 (content_browsertests+0x000003d3ca51)
    #12 blink::Document::implicitOpen(blink::ParserSynchronizationPolicy) third_party/WebKit/Source/core/dom/Document.cpp:2520:16 (content_browsertests+0x000003d3d212)
    #13 DocumentWriter third_party/WebKit/Source/core/loader/DocumentWriter.cpp:57:16 (content_browsertests+0x00000465a559)
    #14 blink::DocumentWriter::create(blink::Document*, blink::ParserSynchronizationPolicy, WTF::AtomicString const&, WTF::AtomicString const&) third_party/WebKit/Source/core/loader/DocumentWriter.cpp:48 (content_browsertests+0x00000465a559)
    #15 blink::DocumentLoader::createWriterFor(blink::DocumentInit const&, WTF::AtomicString const&, WTF::AtomicString const&, bool, blink::ParserSynchronizationPolicy) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:688:12 (content_browsertests+0x00000464bb27)
    #16 blink::DocumentLoader::ensureWriter(WTF::AtomicString const&, blink::KURL const&) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:453:16 (content_browsertests+0x00000464b8cc)
    #17 blink::DocumentLoader::commitData(char const*, unsigned long) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:468:5 (content_browsertests+0x000004649b3b)
    #18 blink::DocumentLoader::finishedLoading(double) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:281:13 (content_browsertests+0x00000464987b)
    #19 blink::DocumentLoader::maybeLoadEmpty() third_party/WebKit/Source/core/loader/DocumentLoader.cpp:621:5 (content_browsertests+0x00000464c2b8)
    #20 blink::DocumentLoader::startLoadingMainResource() third_party/WebKit/Source/core/loader/DocumentLoader.cpp:633:9 (content_browsertests+0x00000464c370)
    #21 blink::FrameLoader::init() third_party/WebKit/Source/core/loader/FrameLoader.cpp:203:5 (content_browsertests+0x0000046685b8)
    #22 init third_party/WebKit/Source/core/frame/LocalFrame.h:236:5 (content_browsertests+0x000003408f0b)
    #23 blink::WebLocalFrameImpl::initializeCoreFrame(blink::FrameHost*, blink::FrameOwner*, WTF::AtomicString const&, WTF::AtomicString const&) third_party/WebKit/Source/web/WebLocalFrameImpl.cpp:1558 (content_browsertests+0x000003408f0b)
    #24 blink::WebViewImpl::setMainFrame(blink::WebFrame*) third_party/WebKit/Source/web/WebViewImpl.cpp:371:5 (content_browsertests+0x00000343ebab)
    #25 content::RenderFrameImpl::CreateMainFrame(content::RenderViewImpl*, int, int, bool, blink::WebScreenInfo const&, content::CompositorDependencies*, blink::WebFrame*) content/renderer/render_frame_impl.cc:839:3 (content_browsertests+0x0000009d02d6)
    #26 content::RenderViewImpl::Initialize(ViewMsg_New_Params const&, bool) content/renderer/render_view_impl.cc:712:26 (content_browsertests+0x000000a23884)
    #27 content::RenderViewImpl::Create(content::CompositorDependencies*, ViewMsg_New_Params const&, bool) content/renderer/render_view_impl.cc:1131:3 (content_browsertests+0x000000a278b7)
    #28 content::RenderThreadImpl::OnCreateNewView(ViewMsg_New_Params const&) content/renderer/render_thread_impl.cc:1851:3 (content_browsertests+0x000000a195c9)
    #29 DispatchToMethodImpl<content::RenderThreadImpl *, void (content::RenderThreadImpl::*)(const ViewMsg_New_Params &), ViewMsg_New_Params, 0> base/tuple.h:166:3 (content_browsertests+0x000000a1943a)
    #30 DispatchToMethod<content::RenderThreadImpl *, void (content::RenderThreadImpl::*)(const ViewMsg_New_Params &), ViewMsg_New_Params> base/tuple.h:173 (content_browsertests+0x000000a1943a)
    #31 DispatchToMethod<content::RenderThreadImpl, void (content::RenderThreadImpl::*)(const ViewMsg_New_Params &), void, std::__1::tuple<ViewMsg_New_Params> > ipc/ipc_message_templates.h:26 (content_browsertests+0x000000a1943a)
...

  Mutex M2459 (0x7d4800009c18) created at:
    #0 pthread_mutex_init <null> (content_browsertests+0x0000004a1473)
    #1 base::internal::LockImpl::LockImpl() base/synchronization/lock_impl_posix.cc:29:3 (content_browsertests+0x0000011d51bb)
    #2 base::Lock::Lock() base/synchronization/lock.cc:15:16 (content_browsertests+0x0000011d4ebc)
    #3 scheduler::internal::TaskQueueImpl::TaskQueueImpl(scheduler::TaskQueueManager*, scheduler::TimeDomain*, scheduler::TaskQueue::Spec const&, char const*, char const*) components/scheduler/base/task_queue_impl.cc:15:16 (content_browsertests+0x00000521ed5c)
    #4 scheduler::TaskQueueManager::NewTaskQueue(scheduler::TaskQueue::Spec const&) components/scheduler/base/task_queue_manager.cc:99:30 (content_browsertests+0x000005229961)
    #5 scheduler::SchedulerHelper::NewTaskQueue(scheduler::TaskQueue::Spec const&) components/scheduler/child/scheduler_helper.cc:67:10 (content_browsertests+0x00000521a1f0)
    #6 scheduler::RendererSchedulerImpl::NewTimerTaskRunner(char const*) components/scheduler/renderer/renderer_scheduler_impl.cc:205:7 (content_browsertests+0x00000520721f)
    #7 scheduler::WebFrameSchedulerImpl::timerTaskRunner() components/scheduler/renderer/web_frame_scheduler_impl.cc:63:9 (content_browsertests+0x000005232fdb)
    #8 blink::Document::timerTaskRunner() const third_party/WebKit/Source/core/dom/Document.cpp:5932:16 (content_browsertests+0x000003d2ab2e)
    #9 blink::Document::Document(blink::DocumentInit const&, unsigned char) third_party/WebKit/Source/core/dom/Document.cpp:460:16 (content_browsertests+0x000003d29e11)
    #10 blink::HTMLDocument::HTMLDocument(blink::DocumentInit const&, unsigned char) third_party/WebKit/Source/core/html/HTMLDocument.cpp:71:7 (content_browsertests+0x000003ffb599)
    #11 create third_party/WebKit/Source/core/html/HTMLDocument.h:39:39 (content_browsertests+0x000003eec81d)
    #12 blink::DOMImplementation::createDocument(WTF::String const&, blink::DocumentInit const&, bool) third_party/WebKit/Source/core/dom/DOMImplementation.cpp:257 (content_browsertests+0x000003eec81d)
    #13 blink::LocalDOMWindow::createDocument(WTF::String const&, blink::DocumentInit const&, bool) third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp:343:20 (content_browsertests+0x000004502823)
    #14 blink::LocalDOMWindow::installNewDocument(WTF::String const&, blink::DocumentInit const&, bool) third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp:357:18 (content_browsertests+0x0000045029ef)
    #15 blink::DocumentLoader::createWriterFor(blink::DocumentInit const&, WTF::AtomicString const&, WTF::AtomicString const&, bool, blink::ParserSynchronizationPolicy) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:684:45 (content_browsertests+0x00000464bafc)
    #16 blink::DocumentLoader::ensureWriter(WTF::AtomicString const&, blink::KURL const&) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:453:16 (content_browsertests+0x00000464b8cc)
    #17 blink::DocumentLoader::commitData(char const*, unsigned long) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:468:5 (content_browsertests+0x000004649b3b)
    #18 blink::DocumentLoader::finishedLoading(double) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:281:13 (content_browsertests+0x00000464987b)
    #19 blink::DocumentLoader::maybeLoadEmpty() third_party/WebKit/Source/core/loader/DocumentLoader.cpp:621:5 (content_browsertests+0x00000464c2b8)
    #20 blink::DocumentLoader::startLoadingMainResource() third_party/WebKit/Source/core/loader/DocumentLoader.cpp:633:9 (content_browsertests+0x00000464c370)
    #21 blink::FrameLoader::init() third_party/WebKit/Source/core/loader/FrameLoader.cpp:203:5 (content_browsertests+0x0000046685b8)
    #22 init third_party/WebKit/Source/core/frame/LocalFrame.h:236:5 (content_browsertests+0x000003408f0b)
    #23 blink::WebLocalFrameImpl::initializeCoreFrame(blink::FrameHost*, blink::FrameOwner*, WTF::AtomicString const&, WTF::AtomicString const&) third_party/WebKit/Source/web/WebLocalFrameImpl.cpp:1558 (content_browsertests+0x000003408f0b)
    #24 blink::WebViewImpl::setMainFrame(blink::WebFrame*) third_party/WebKit/Source/web/WebViewImpl.cpp:371:5 (content_browsertests+0x00000343ebab)
    #25 content::RenderFrameImpl::CreateMainFrame(content::RenderViewImpl*, int, int, bool, blink::WebScreenInfo const&, content::CompositorDependencies*, blink::WebFrame*) content/renderer/render_frame_impl.cc:839:3 (content_browsertests+0x0000009d02d6)
    #26 content::RenderViewImpl::Initialize(ViewMsg_New_Params const&, bool) content/renderer/render_view_impl.cc:712:26 (content_browsertests+0x000000a23884)
    #27 content::RenderViewImpl::Create(content::CompositorDependencies*, ViewMsg_New_Params const&, bool) content/renderer/render_view_impl.cc:1131:3 (content_browsertests+0x000000a278b7)
    #28 content::RenderThreadImpl::OnCreateNewView(ViewMsg_New_Params const&) content/renderer/render_thread_impl.cc:1851:3 (content_browsertests+0x000000a195c9)
    #29 DispatchToMethodImpl<content::RenderThreadImpl *, void (content::RenderThreadImpl::*)(const ViewMsg_New_Params &), ViewMsg_New_Params, 0> base/tuple.h:166:3 (content_browsertests+0x000000a1943a)
...

  Thread T8 'HTMLParserThread' (tid=3266, running) created by main thread at:
    #0 pthread_create <null> (content_browsertests+0x0000004a0455)
    #1 base::(anonymous namespace)::CreateThread(unsigned long, bool, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:107:13 (content_browsertests+0x0000011e51b5)
    #2 base::PlatformThread::CreateWithPriority(unsigned long, base::PlatformThread::Delegate*, base::PlatformThreadHandle*, base::ThreadPriority) base/threading/platform_thread_posix.cc:188:10 (content_browsertests+0x0000011e5065)
    #3 base::Thread::StartWithOptions(base::Thread::Options const&) base/threading/thread.cc:116:10 (content_browsertests+0x0000011ebeb5)
    #4 scheduler::WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler(char const*, base::Thread::Options) components/scheduler/child/webthread_impl_for_worker_scheduler.cc:29:18 (content_browsertests+0x00000520328e)
    #5 scheduler::WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler(char const*) components/scheduler/child/webthread_impl_for_worker_scheduler.cc:23:7 (content_browsertests+0x000005203162)
    #6 content::BlinkPlatformImpl::createThread(char const*) content/child/blink_platform_impl.cc:479:11 (content_browsertests+0x00000514c540)
    #7 blink::WebThreadSupportingGC::WebThreadSupportingGC(char const*, blink::WebThread*) third_party/WebKit/Source/platform/WebThreadSupportingGC.cpp:34:35 (content_browsertests+0x000006395503)
    #8 blink::WebThreadSupportingGC::create(char const*) third_party/WebKit/Source/platform/WebThreadSupportingGC.cpp:15:25 (content_browsertests+0x0000063953e9)
    #9 blink::HTMLParserThread::postTask(WTF::PassOwnPtr<WTF::Function<void (), (WTF::FunctionThreadAffinity)0> >) third_party/WebKit/Source/core/html/parser/HTMLParserThread.cpp:94:20 (content_browsertests+0x00000412a257)
    #10 blink::HTMLDocumentParser::startBackgroundParser() third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp:790:5 (content_browsertests+0x00000411a903)
    #11 blink::HTMLDocumentParser::appendBytes(char const*, unsigned long) third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp:1089:13 (content_browsertests+0x00000411e8fb)
    #12 blink::DocumentWriter::addData(char const*, unsigned long) third_party/WebKit/Source/core/loader/DocumentWriter.cpp:93:5 (content_browsertests+0x00000465a8ad)
    #13 blink::DocumentLoader::commitData(char const*, unsigned long) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:478:5 (content_browsertests+0x000004649ba1)
    #14 blink::DocumentLoader::processData(char const*, unsigned long) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:532:5 (content_browsertests+0x00000464bef1)
    #15 blink::DocumentLoader::dataReceived(blink::Resource*, char const*, unsigned long) third_party/WebKit/Source/core/loader/DocumentLoader.cpp:507:5 (content_browsertests+0x00000464bc96)
    #16 blink::RawResource::appendData(char const*, unsigned long) third_party/WebKit/Source/core/fetch/RawResource.cpp:100:9 (content_browsertests+0x000004486da9)
    #17 blink::ResourceLoader::didReceiveData(blink::WebURLLoader*, char const*, int, int) third_party/WebKit/Source/core/fetch/ResourceLoader.cpp:321:5 (content_browsertests+0x0000044abaf7)
    #18 content::WebURLLoaderImpl::Context::OnReceivedData(std::__1::unique_ptr<content::RequestPeer::ReceivedData, std::__1::default_delete<content::RequestPeer::ReceivedData> >) content/child/web_url_loader_impl.cc:715:5 (content_browsertests+0x0000051dccd8)
    #19 content::WebURLLoaderImpl::RequestPeerImpl::OnReceivedData(std::__1::unique_ptr<content::RequestPeer::ReceivedData, std::__1::default_delete<content::RequestPeer::ReceivedData> >) content/child/web_url_loader_impl.cc:884:3 (content_browsertests+0x0000051dd58f)
    #20 content::ResourceDispatcher::OnReceivedData(int, int, int, int) content/child/resource_dispatcher.cc:282:5 (content_browsertests+0x0000051b2ac2)
    #21 DispatchToMethodImpl<content::ResourceDispatcher *, void (content::ResourceDispatcher::*)(int, int, int, int), int, int, int, int, 0, 1, 2, 3> base/tuple.h:166:3 (content_browsertests+0x0000051b52bf)
    #22 DispatchToMethod<content::ResourceDispatcher *, void (content::ResourceDispatcher::*)(int, int, int, int), int, int, int, int> base/tuple.h:173 (content_browsertests+0x0000051b52bf)
    #23 DispatchToMethod<content::ResourceDispatcher, void (content::ResourceDispatcher::*)(int, int, int, int), void, std::__1::tuple<int, int, int, int> > ipc/ipc_message_templates.h:26 (content_browsertests+0x0000051b52bf)
    #24 bool IPC::MessageT<ResourceMsg_DataReceived_Meta, std::__1::tuple<int, int, int, int>, void>::Dispatch<content::ResourceDispatcher, content::ResourceDispatcher, void, void (content::ResourceDispatcher::*)(int, int, int, int)>(IPC::Message const*, content::ResourceDispatcher*, content::ResourceDispatcher*, void*, void (content::ResourceDispatcher::*)(int, int, int, int)) ipc/ipc_message_templates.h:121 (content_browsertests+0x0000051b52bf)
    #25 content::ResourceDispatcher::DispatchMessage(IPC::Message const&) content/child/resource_dispatcher.cc:510:5 (content_browsertests+0x0000051b09c4)
    #26 content::ResourceDispatcher::OnMessageReceived(IPC::Message const&) content/child/resource_dispatcher.cc:123:3 (content_browsertests+0x0000051b0008)
    #27 DispatchMessage content/child/resource_scheduling_filter.cc:98:3 (content_browsertests+0x0000051b7bb1)
...

SUMMARY: ThreadSanitizer: data race buildtools/third_party/libc++/trunk/include/__tree:2093:58 in __lower_bound<scheduler::internal::TaskQueueImpl *>
==================

Please either remove the unprotected accesses to shared maps or protect them with locks.


 
Oh interesting.  If I've read that right the race is between these:

TimeDomain::MigrateQueue
...
registered_task_queues_.erase(queue);

And

TimeDomain::RegisterAsUpdatableTaskQueue
...
DCHECK(registered_task_queues_.find(queue) != registered_task_queues_.end());

We probably don't need all those DCHECKs anymore, they where put there while tracking down a UAF which we've fixed.
Project Member

Comment 2 by bugdroid1@chromium.org, Apr 1 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6c6e2a5feb305732656ece32e0eac30c33673345

commit 6c6e2a5feb305732656ece32e0eac30c33673345
Author: alexclarke <alexclarke@chromium.org>
Date: Fri Apr 01 16:33:35 2016

Remove registered_task_queues_ and associated DCHECKS from TimeDomain

TSAN is complaining about the usage of |registered_task_queues_| and
since they where added purely to diagnose a UAF which we've fixed we
might as well rip them out again.

BUG= 599535 

Review URL: https://codereview.chromium.org/1855453002

Cr-Commit-Position: refs/heads/master@{#384603}

[modify] https://crrev.com/6c6e2a5feb305732656ece32e0eac30c33673345/components/scheduler/base/time_domain.cc
[modify] https://crrev.com/6c6e2a5feb305732656ece32e0eac30c33673345/components/scheduler/base/time_domain.h

Status: Fixed (was: Assigned)

Comment 4 by glider@chromium.org, Apr 22 2016

Thank you!

Sign in to add a comment