Issue metadata
Sign in to add a comment
|
Chrome: Crash Report - [Out of Memory] base::internal::MessageLoopTaskRunner::AddToIncomingQueue |
||||||||||||||||||||
Issue descriptionreporter:pnangunoori@google.com Magic Signature: [Out of Memory] base::internal::MessageLoopTaskRunner::AddToIncomingQueue Crash link: https://crash.corp.google.com/browse?q=product_name%3D%27Chrome%27+AND+expanded_custom_data.ChromeCrashProto.ptype%3D%27browser%27+AND+expanded_custom_data.ChromeCrashProto.magic_signature_1.name%3D%27%5BOut+of+Memory%5D+base%3A%3Ainternal%3A%3AMessageLoopTaskRunner%3A%3AAddToIncomingQueue%27+AND+product.Version%3D%2770.0.3538.16%27&stbtiq=&reportid=&index=0 ------------------------------------------------------------------------------- Sample Report ------------------------------------------------------------------------------- Product name: Chrome Magic Signature : [Out of Memory] base::internal::MessageLoopTaskRunner::AddToIncomingQueue Product Version: 70.0.3538.16 Process type: browser Report ID: 8c965d7ab2325531 Report Url: https://crash.corp.google.com/8c965d7ab2325531 Report Time: 2018-09-17T04:10:39-07:00 Upload Time: 2018-09-17T04:11:35.997-07:00 Uptime: 450000 ms OS Name: Windows NT OS Version: 6.1.7601 17514 CPU Architecture: x86 CPU Info: GenuineIntel family 6 model 15 stepping 13 ------------------------------------------------------------------------------- Crashing thread: Thread index: 2. Stack Quality: 87%. Thread id: 424. ------------------------------------------------------------------------------- 0x7586b760 (KERNELBASE.dll + 0x0000b760) RaiseException 0x5bbc089c (chrome.dll - memory_win.cc: 51) base::`anonymous namespace'::OnNoMemory 0x5c00bc80 (chrome.dll - winheap_stubs_win.cc: 90) base::allocator::WinCallNewHandler(unsigned int) 0x5ac2157f (chrome.dll - allocator_shim_override_ucrt_symbols_win.h: 53) malloc 0x5ac7e502 (chrome.dll - circular_deque.h: 960) base::circular_deque<base::PendingTask>::ExpandCapacityIfNecessary(unsigned int) 0x5ac7e357 (chrome.dll - message_loop_task_runner.cc: 162) base::internal::MessageLoopTaskRunner::AddToIncomingQueue(base::Location const &,base::OnceCallback<void >,base::TimeDelta,base::Nestable) 0x5ac7e193 (chrome.dll - message_loop_task_runner.cc: 55) base::internal::MessageLoopTaskRunner::PostDelayedTask(base::Location const &,base::OnceCallback<void >,base::TimeDelta) 0x5ac4c88f (chrome.dll - task_runner.cc: 44) base::TaskRunner::PostTask(base::Location const &,base::OnceCallback<void >) 0x5b18fa76 (chrome.dll - ipc_channel_proxy.cc: 128) IPC::ChannelProxy::Context::OnMessageReceivedNoFilter(IPC::Message const &) 0x5b17c785 (chrome.dll - ipc_channel_proxy.cc: 122) IPC::ChannelProxy::Context::OnMessageReceived(IPC::Message const &) 0x5b0750c8 (chrome.dll - ipc_channel_mojo.cc: 263) IPC::ChannelMojo::OnMessageReceived(IPC::Message const &) 0x5b074e4b (chrome.dll - ipc_message_pipe_reader.cc: 107) IPC::internal::MessagePipeReader::Receive(IPC::MessageView) 0x5b073268 (chrome.dll - ipc.mojom.cc: 295) IPC::mojom::ChannelStubDispatch::Accept(IPC::mojom::Channel *,mojo::Message *) 0x5b073084 (chrome.dll - ipc.mojom.h: 328) IPC::mojom::ChannelStub<mojo::RawPtrImplRefTraits<IPC::mojom::Channel> >::Accept(mojo::Message *) 0x5c099d85 (chrome.dll - ipc_mojo_bootstrap.cc: 838) IPC::`anonymous namespace'::ChannelAssociatedGroupController::Accept 0x5acef2d0 (chrome.dll - connector.cc: 456) mojo::Connector::ReadSingleMessage(unsigned int *) 0x5acef16b (chrome.dll - connector.cc: 486) mojo::Connector::ReadAllAvailableMessages() 0x5acef11e (chrome.dll - connector.cc: 387) mojo::Connector::OnHandleReadyInternal(unsigned int) 0x5b27978e (chrome.dll - bind_internal.h: 658) base::internal::Invoker<base::internal::BindState<bool (DownloadsListTracker::*)(const download::DownloadItem &) __attribute__((thiscall)) const,base::internal::UnretainedWrapper<DownloadsListTracker> >,bool (const download::DownloadItem &)>::Run 0x5acef0f0 (chrome.dll - simple_watcher.h: 194) favicon::FaviconService::FaviconResultsCallbackRunner(base::RepeatingCallback<void > const &,std::vector<favicon_base::FaviconRawBitmapResult,std::allocator<favicon_base::FaviconRawBitmapResult> > const *) 0x5b538334 (chrome.dll - bind_internal.h: 671) base::internal::Invoker<base::internal::BindState<(anonymous namespace)::ComparisonType (*)(const base::RepeatingCallback<bool (const download::DownloadItem &)> &, const download::DownloadItem &, const download::DownloadItem &),base::RepeatingCallback<bool (const download::DownloadItem &)> >,(anonymous namespace)::ComparisonType (const download::DownloadItem &, const download::DownloadItem &)>::Run 0x5acef05c (chrome.dll - simple_watcher.cc: 273) mojo::SimpleWatcher::OnHandleReady(int,unsigned int,mojo::HandleSignalsState const &) 0x5aceefca (chrome.dll - bind_internal.h: 671) base::internal::Invoker<base::internal::BindState<void (mojo::SimpleWatcher::*)(int, unsigned int, const mojo::HandleSignalsState &) __attribute__((thiscall)),base::WeakPtr<mojo::SimpleWatcher>,int,unsigned int,mojo::HandleSignalsState>,void ()>::Run 0x5acb0e81 (chrome.dll - task_annotator.cc: 101) base::debug::TaskAnnotator::RunTask(char const *,base::PendingTask *) 0x5acb3a32 (chrome.dll - message_loop.cc: 434) base::MessageLoop::RunTask(base::PendingTask *) 0x5acb3952 (chrome.dll - message_loop.cc: 445) base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) 0x5ac3a0cb (chrome.dll - message_loop.cc: 517) base::MessageLoop::DoWork() 0x5ac39ff4 (chrome.dll - message_pump_win.cc: 494) base::MessagePumpForIO::DoRunLoop() 0x5ac39ea0 (chrome.dll - message_pump_win.cc: 52) base::MessagePumpWin::Run(base::MessagePump::Delegate *) 0x5ac39e3e (chrome.dll - message_loop.cc: 386) base::MessageLoop::Run(bool) 0x5ac39c8d (chrome.dll - run_loop.cc: 102) base::RunLoop::Run() 0x5ac39c5a (chrome.dll - thread.cc: 262) base::Thread::Run(base::RunLoop *) 0x5ac39c2d (chrome.dll - browser_process_sub_thread.cc: 175) content::BrowserProcessSubThread::IOThreadRun(base::RunLoop *) 0x5ac37af4 (chrome.dll - thread.cc: 357) base::Thread::ThreadMain() 0x5bbcc2f4 (chrome.dll - platform_thread_win.cc: 100) base::`anonymous namespace'::ThreadFunc 0x76d33c44 (kernel32.dll + 0x00053c44) BaseThreadInitThunk 0x774f37f4 (ntdll.dll + 0x000637f4) __RtlUserThreadStart 0x774f37c7 (ntdll.dll + 0x000637c7) _RtlUserThreadStart ------------------------------------------------------------------------------- Manual regression range finder link ------------------------------------------------------------------------------- https://crash.corp.google.com/browse?q=expanded_custom_data.ChromeCrashProto.magic_signature_1.name%3D%27%5BOut+of+Memory%5D+base%3A%3Ainternal%3A%3AMessageLoopTaskRunner%3A%3AAddToIncomingQueue%27+AND+expanded_custom_data.ChromeCrashProto.ptype%3D%27browser%27#-property-selector,-samplereports,+productname,+productversion:1000,+directory,-clientid,+operatingsystem,+url,+simplifiedurl,+extensions
,
Sep 17
Issue 860608 has been merged into this issue.
,
Sep 17
This is the same as issue 860608 (signature merely changed in my CL). This is an OOM on an alloc posting into the task queue, not sure we can do much about it. Looking into some of the crashes to see if this is just the alloc tipping the scale or if the task queue is really unreasonably large (e.g. not being processed for some reason) could be interesting -- I don't plan to do this at the moment.
,
Sep 17
,
Oct 30
Just to update the latest behavior of this issue in the latest channels: Still seeing 1087 crashes from 979 clients so far on latest Stable - 70.0.3538.67 on Windows OS. This crash is ranked as #29 in 'Browser' Stable crashes. 72.0.3594.0 0.04% 1 - Previous Canary 72.0.3590.0 0.30% 7 - Dev 71.0.3578.20 0.47% 11 - Beta 70.0.3538.77 46.41% 1092 - Stable Link to the list of builds: ------------------------- https://crash.corp.google.com/browse?q=product_name%3D%27Chrome%27+AND+expanded_custom_data.ChromeCrashProto.ptype%3D%27browser%27+AND+expanded_custom_data.ChromeCrashProto.magic_signature_1.name%3D%27%5BOut+of+Memory%5D+base%3A%3Ainternal%3A%3AMessageLoopTaskRunner%3A%3AAddToIncomingQueue%27 Thanks!
,
Yesterday
(26 hours ago)
Just to update the latest behavior of this issue in the latest channels: Still seeing 37 crashes from 35 clients so far on latest Beta - 72.0.3626.64 on Windows OS. This crash is ranked as #13 in 'Browser' Beta crashes. 73.0.3679.0 0.00% 1 - Canary 73.0.3673.0 0.07% 24 - Dev 72.0.3626.64 0.11% 38 - Beta 71.0.3578.98 37.97% 13340 - Stable Crashes on latest Stable spiked than earlier stable builds. Link to the list of builds: ------------------------- https://crash.corp.google.com/browse?q=product_name%3D%27Chrome%27+AND+expanded_custom_data.ChromeCrashProto.ptype%3D%27browser%27+AND+expanded_custom_data.ChromeCrashProto.magic_signature_1.name%3D%27%5BOut+of+Memory%5D+base%3A%3Ainternal%3A%3AMessageLoopTaskRunner%3A%3AAddToIncomingQueue%27#-productname:1000,productversion:100,-magicsignature:50,-magicsignature2:50,-stablesignature:50,-magicsignaturesorted:50 Thanks!
,
Today
(11 hours ago)
Wow, the task queues are humongous!! 1402802 tasks in |incoming_queue_| (multi-threaded incoming queue) and 334371 tasks in |outgoing_queue_| (single-threaded processing queue; reloaded from |incoming_queue_| when empty). That's a total of 1,737,173 pending tasks on a single thread..! @etienneb : any chance you can see this in memlog? (we had seen delayed tasks in the past but I don't recall seeing the main task queue being this full)
,
Today
(11 hours ago)
Above data from http://crash/1b18d2bfa98b87ed
,
Today
(11 hours ago)
From that crash, it looks like the UI thread is stuck trying to post back to itself and being unable to acquire the lock for its task queue (see next stack for reason). lock_impl_win.cc:36 : base::internal::LockImpl::Lock() message_loop_task_runner.cc:152 : base::internal::MessageLoopTaskRunner::AddToIncomingQueue(base::Location const &,base::OnceCallback<void >,base::TimeDelta,base::Nestable) message_loop_task_runner.cc:55 : base::internal::MessageLoopTaskRunner::PostDelayedTask(base::Location const &,base::OnceCallback<void >,base::TimeDelta) navigation_monitor_impl.cc:65 : download::NavigationMonitorImpl::NotifyNavigationFinished() navigation_monitor_impl.cc:56 : download::NavigationMonitorImpl::OnNavigationEvent(download::NavigationEvent) download_navigation_observer.cc:36 : download::DownloadNavigationObserver::DidStopLoading() web_contents_impl.cc:4977 : content::WebContentsImpl::LoadingStateChanged(bool,bool,content::LoadNotificationDetails *) web_contents_impl.cc:5628 : content::WebContentsImpl::DidStopLoading() frame_tree_node.cc:475 : content::FrameTreeNode::DidStopLoading() render_frame_host_impl.cc:3180 : content::RenderFrameHostImpl::OnDidStopLoading() ipc_message_templates.h:146 : IPC::MessageT<FrameHostMsg_DidStopLoading_Meta,std::tuple<>,void>::Dispatch<content::RenderFrameHostImpl,content::RenderFrameHostImpl,void,void (content::RenderFrameHostImpl::*)() __attribute__((thiscall))> render_frame_host_impl.cc:1271 : content::RenderFrameHostImpl::OnMessageReceived(IPC::Message const &) render_process_host_impl.cc:3373 : content::RenderProcessHostImpl::OnMessageReceived(IPC::Message const &) ipc_channel_proxy.cc:320 : IPC::ChannelProxy::Context::OnDispatchMessage(IPC::Message const &) bind_internal.h:658 : base::internal::Invoker<base::internal::BindState<base::internal::IgnoreResultHelper<bool (content::BrowserMessageFilter::Internal::*)(const IPC::Message &) __attribute__((thiscall))>,scoped_refptr<content::BrowserMessageFilter::Internal>,IPC::Message>,void ()>::RunOnce task_annotator.cc:99 : base::debug::TaskAnnotator::RunTask(char const *,base::PendingTask *) message_loop.cc:434 : base::MessageLoop::RunTask(base::PendingTask *) message_loop.cc:445 : base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) message_loop.cc:517 : base::MessageLoop::DoWork() message_pump_win.cc:179 : base::MessagePumpForUI::DoRunLoop() message_pump_win.cc:52 : base::MessagePumpWin::Run(base::MessagePump::Delegate *) message_loop.cc:386 : base::MessageLoop::Run(bool) run_loop.cc:102 : base::RunLoop::Run() chrome_browser_main.cc:1903 : ChromeBrowserMainParts::MainMessageLoopRun(int *) browser_main_loop.cc:998 : content::BrowserMainLoop::RunMainMessageLoopParts() browser_main_runner_impl.cc:165 : content::BrowserMainRunnerImpl::Run() browser_main.cc:47 : content::BrowserMain(content::MainFunctionParams const &) content_main_runner_impl.cc:535 : content::RunBrowserProcessMain(content::MainFunctionParams const &,content::ContentMainDelegate *) content_main_runner_impl.cc:900 : content::ContentMainRunnerImpl::Run(bool) content_service_manager_main_delegate.cc:53 : content::ContentServiceManagerMainDelegate::RunEmbedderProcess() main.cc:472 : service_manager::Main(service_manager::MainParams const &) content_main.cc:19 : content::ContentMain(content::ContentMainParams const &) chrome_main.cc:102 : ChromeMain Meanwhile the IO thread owns the UI thread's task lock while flushing messages via mojo::Connector::ReadAllAvailableMessages() (22569/35646 reports have mojo as the poster) : (seems like this is the core issue) memory_win.cc:51 : base::`anonymous namespace'::OnNoMemory winheap_stubs_win.cc:90 : base::allocator::WinCallNewHandler(unsigned int) allocator_shim_override_ucrt_symbols_win.h:53 : malloc circular_deque.h:960 : base::circular_deque<base::PendingTask>::ExpandCapacityIfNecessary(unsigned int) message_loop_task_runner.cc:162 : base::internal::MessageLoopTaskRunner::AddToIncomingQueue(base::Location const &,base::OnceCallback<void >,base::TimeDelta,base::Nestable) message_loop_task_runner.cc:55 : base::internal::MessageLoopTaskRunner::PostDelayedTask(base::Location const &,base::OnceCallback<void >,base::TimeDelta) task_runner.cc:44 : base::TaskRunner::PostTask(base::Location const &,base::OnceCallback<void >) ipc_mojo_bootstrap.cc:838 : IPC::`anonymous namespace'::ChannelAssociatedGroupController::Accept connector.cc:475 : mojo::Connector::ReadSingleMessage(unsigned int *) connector.cc:505 : mojo::Connector::ReadAllAvailableMessages() connector.cc:387 : mojo::Connector::OnHandleReadyInternal(unsigned int) bind_internal.h:658 : base::internal::Invoker<base::internal::BindState<bool (DownloadsListTracker::*)(const download::DownloadItem &) __attribute__((thiscall)) const,base::internal::UnretainedWrapper<DownloadsListTracker> >,bool (const download::DownloadItem &)>::Run simple_watcher.h:194 : favicon::FaviconService::FaviconResultsCallbackRunner(base::RepeatingCallback<void > const &,std::vector<favicon_base::FaviconRawBitmapResult,std::allocator<favicon_base::FaviconRawBitmapResult> > const *) bind_internal.h:671 : base::internal::Invoker<base::internal::BindState<(anonymous namespace)::ComparisonType (*)(const base::RepeatingCallback<bool (const download::DownloadItem &)> &, const download::DownloadItem &, const download::DownloadItem &),base::RepeatingCallback<bool (const download::DownloadItem &)> >,(anonymous namespace)::ComparisonType (const download::DownloadItem &, const download::DownloadItem &)>::Run simple_watcher.cc:273 : mojo::SimpleWatcher::OnHandleReady(int,unsigned int,mojo::HandleSignalsState const &) bind_internal.h:671 : base::internal::Invoker<base::internal::BindState<void (mojo::SimpleWatcher::*)(int, unsigned int, const mojo::HandleSignalsState &) __attribute__((thiscall)),base::WeakPtr<mojo::SimpleWatcher>,int,unsigned int,mojo::HandleSignalsState>,void ()>::Run task_annotator.cc:99 : base::debug::TaskAnnotator::RunTask(char const *,base::PendingTask *) message_loop.cc:434 : base::MessageLoop::RunTask(base::PendingTask *) message_loop.cc:445 : base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) message_loop.cc:517 : base::MessageLoop::DoWork() message_pump_win.cc:512 : base::MessagePumpForIO::DoRunLoop() message_pump_win.cc:52 : base::MessagePumpWin::Run(base::MessagePump::Delegate *) message_loop.cc:386 : base::MessageLoop::Run(bool) run_loop.cc:102 : base::RunLoop::Run() thread.cc:262 : base::Thread::Run(base::RunLoop *) browser_process_sub_thread.cc:174 : content::BrowserProcessSubThread::IOThreadRun(base::RunLoop *) thread.cc:357 : base::Thread::ThreadMain() platform_thread_win.cc:100 : base::`anonymous namespace'::ThreadFunc And there's also the history thread being unable to post to the UI thread (probably just a symptom) : lock_impl_win.cc:36 : base::internal::LockImpl::Lock() message_loop_task_runner.cc:152 : base::internal::MessageLoopTaskRunner::AddToIncomingQueue(base::Location const &,base::OnceCallback<void >,base::TimeDelta,base::Nestable) message_loop_task_runner.cc:55 : base::internal::MessageLoopTaskRunner::PostDelayedTask(base::Location const &,base::OnceCallback<void >,base::TimeDelta) task_runner.cc:44 : base::TaskRunner::PostTask(base::Location const &,base::OnceCallback<void >) history_backend.cc:163 : history::QueuedHistoryDBTask::DoneRun() history_backend.cc:2437 : history::HistoryBackend::ProcessDBTaskImpl() history_backend.cc:2653 : history::HistoryBackend::ProcessDBTask(std::unique_ptr<history::HistoryDBTask,std::default_delete<history::HistoryDBTask> >,scoped_refptr<base::SingleThreadTaskRunner>,base::RepeatingCallback<bool > const &) bind_internal.h:516 : base::internal::FunctorTraits<void (history::HistoryBackend::*)(std::unique_ptr<history::HistoryDBTask,std::default_delete<history::HistoryDBTask> >, scoped_refptr<base::SingleThreadTaskRunner>, const base::RepeatingCallback<bool ()> &) __attribute__((thiscall)),void>::Invoke<void (history::HistoryBackend::*)(std::unique_ptr<history::HistoryDBTask,std::default_delete<history::HistoryDBTask> >, scoped_refptr<base::SingleThreadTaskRunner>, const base::RepeatingCallback<bool ()> &) __attribute__((thiscall)),scoped_refptr<history::HistoryBackend>,std::unique_ptr<history::HistoryDBTask,std::default_delete<history::HistoryDBTask> >,scoped_refptr<base::SingleThreadTaskRunner>,base::RepeatingCallback<bool ()> > bind_internal.h:658 : base::internal::Invoker<base::internal::BindState<void (history::HistoryBackend::*)(std::unique_ptr<history::HistoryDBTask,std::default_delete<history::HistoryDBTask> >, scoped_refptr<base::SingleThreadTaskRunner>, const base::RepeatingCallback<bool ()> &) __attribute__((thiscall)),scoped_refptr<history::HistoryBackend>,std::unique_ptr<history::HistoryDBTask,std::default_delete<history::HistoryDBTask> >,scoped_refptr<base::SingleThreadTaskRunner>,base::RepeatingCallback<bool ()> >,void ()>::RunOnce task_annotator.cc:99 : base::debug::TaskAnnotator::RunTask(char const *,base::PendingTask *) message_loop.cc:434 : base::MessageLoop::RunTask(base::PendingTask *) message_loop.cc:445 : base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) message_loop.cc:517 : base::MessageLoop::DoWork() message_pump_default.cc:37 : base::MessagePumpDefault::Run(base::MessagePump::Delegate *) message_loop.cc:386 : base::MessageLoop::Run(bool) run_loop.cc:102 : base::RunLoop::Run() thread.cc:262 : base::Thread::Run(base::RunLoop *) thread.cc:357 : base::Thread::ThreadMain()
,
Today
(11 hours ago)
Another interesting crash is http://crash/9cc52053ebdb8c9c in this case the IO thread is hung with 2 tasks in |outgoing_queue_| and 3,424,806 tasks in |incoming_queue_|. The IO thread is hung in a system call to "closesocket", there aren't many instances of this particular hang and it might be a manifestation of known Windows issue with KB4338818 https://forum.filezilla-project.org/viewtopic.php?t=49308. So basically we've just discovered a new class of bugs currently all bucketed under this single signature : "Thread hangs which manifest themselves as OOMs before being caught by a hang watcher" I think we need to catch those (e.g. DCHECK tasks queue < 1M task when posting) and have server-side smarts to triage those based on the hung thread's signature like we triage hangs. |
|||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||
Comment 1 by pnangunoori@chromium.org
, Sep 17Labels: -Type-Bug -Pri-2 RegressedIn-70 TE-CrashTriage Target-70 Target-71 M-70 FoundIn-71 FoundIn-70 Pri-1 Type-Bug-Regression
Owner: gab@chromium.org
Status: Assigned (was: Untriaged)