Jank detected in ViewHostMsg::ClosePage |
||
Issue descriptionSlow-reports are showing cases where processing the IPC message ViewHostMsg_ClosePage_ACK on the main thread can be really slow. Example: 56edb55fdb1dc208 88d77babaed890fa 2fb07335a67b678e Unfortunately, there is not enough context yet to figure out where the time is spent. At a glance, lot of code seems to run under: content::WebContentsImpl::~WebContentsImpl() content::WebContentsImpl::~WebContentsImpl Let wait for more reports.
,
Oct 15
From this slow-report: ab527d6e2112bc54 The main thread is stalled for 11 seconds on NtWaitForMultipleObjects off:0x13ed - KERNELBASE.dll [6B725CF1E7AA49458B4007B0387504652] off:0x106f - KERNEL32.dll [A49C2B8068D747D5B88373C92E68D42C2] base::WaitableEvent::WaitMany(base::WaitableEvent * *,unsigned __int64) mojo::WaitSet::State::Wait(base::WaitableEvent * *,unsigned __int64 *,mojo::Handle *,unsigned int *,MojoHandleSignalsState *) mojo::SyncHandleRegistry::Wait(bool const * * const,unsigned __int64) mojo::SyncEventWatcher::SyncWatch(bool const * *,unsigned __int64) mojo::SequenceLocalSyncEventWatcher::SyncWatch(bool const *) mojo::InterfaceEndpointClient::AcceptWithResponder(mojo::Message *,std::unique_ptr<mojo::MessageReceiver,std::default_delete<mojo::MessageReceiver> >) viz::mojom::FrameSinkManagerProxy::DestroyCompositorFrameSink(viz::FrameSinkId const &) viz::HostFrameSinkManager::InvalidateFrameSinkId(viz::FrameSinkId const &) ui::Compositor::~Compositor() ui::Compositor::~Compositor views::HWNDMessageHandler::OnDestroy() views::HWNDMessageHandler::_ProcessWindowMessage(HWND__ *,unsigned int,unsigned __int64,__int64,__int64 &,unsigned long) views::HWNDMessageHandler::OnWndProc(unsigned int,unsigned __int64,__int64) base::win::WrappedWindowProc<&gfx::WindowImpl::WndProc(HWND__ *,unsigned int,unsigned __int64,__int64)>(HWND__ *,unsigned int,unsigned __int64,__int64) off:0x24fd - USER32.dll [61561D337B0E4DE3ADB457CF090DD3BA2] off:0x3af2 - USER32.dll [61561D337B0E4DE3ADB457CF090DD3BA2] off:0x3bbe - USER32.dll [61561D337B0E4DE3ADB457CF090DD3BA2] KiUserCallbackDispatcherContinue off:0x12ca - USER32.dll [61561D337B0E4DE3ADB457CF090DD3BA2] base::debug::TaskAnnotator::RunTask(char const *,base::PendingTask *) base::MessageLoop::RunTask(base::PendingTask *) base::MessageLoop::DoWork() base::MessagePumpForUI::DoRunLoop() base::MessagePumpWin::Run(base::MessagePump::Delegate *) base::RunLoop::Run() ChromeBrowserMainParts::MainMessageLoopRun(int *) content::BrowserMainLoop::RunMainMessageLoopParts() content::BrowserMainRunnerImpl::Run() content::BrowserMain(content::MainFunctionParams const &) content::RunBrowserProcessMain(content::MainFunctionParams const &,content::ContentMainDelegate *) content::ContentMainRunnerImpl::Run(bool) service_manager::Main(service_manager::MainParams const &) content::ContentMain(content::ContentMainParams const &) ChromeMain MainDllLoader::Launch(HINSTANCE__ *,base::TimeTicks) wWinMain __scrt_common_main_seh off:0x13d2 - KERNEL32.dll [A49C2B8068D747D5B88373C92E68D42C2] RtlUserThreadStart
,
Oct 15
,
Oct 15
From this slow-report: 7f003c801957abf7 The main thread is stalled for 15 seconds. "off:0x69e5a - ntdll.dll [E9EB7F399DB7487BA5F91125568619991] off:0x1430 - KERNELBASE.dll [CBABF941FF9C4D0F9E807CA8B21645D22] off:0x106c0 - kernel32.dll [217F00226BC642DD86DD676FF93BD6932] base::WaitableEvent::WaitMany(base::WaitableEvent * *,unsigned __int64) mojo::WaitSet::State::Wait(base::WaitableEvent * *,unsigned __int64 *,mojo::Handle *,unsigned int *,MojoHandleSignalsState *) mojo::SyncHandleRegistry::Wait(bool const * * const,unsigned __int64) mojo::SyncEventWatcher::SyncWatch(bool const * *,unsigned __int64) mojo::SequenceLocalSyncEventWatcher::SyncWatch(bool const *) mojo::InterfaceEndpointClient::AcceptWithResponder(mojo::Message *,std::unique_ptr<mojo::MessageReceiver,std::default_delete<mojo::MessageReceiver> >) viz::mojom::FrameSinkManagerProxy::DestroyCompositorFrameSink(viz::FrameSinkId const &) viz::HostFrameSinkManager::InvalidateFrameSinkId(viz::FrameSinkId const &) ui::Compositor::~Compositor() ui::Compositor::~Compositor views::HWNDMessageHandler::OnDestroy()
,
Oct 15
From this slow-report: ebb5a721ef176d88 The GPU process is not involved.
,
Oct 15
Looking to the code, this is pointing to: https://cs.chromium.org/chromium/src/components/viz/host/host_frame_sink_manager.cc?l=92 if (data.has_created_compositor_frame_sink && data.is_root) { // This synchronous call ensures that the GL context/surface that draw to // the platform window (eg. XWindow or HWND) get destroyed before the // platform window is destroyed. mojo::SyncCallRestrictions::ScopedAllowSyncCall allow_sync_call; frame_sink_manager_->DestroyCompositorFrameSink(frame_sink_id); }
,
Oct 15
From UMA sampling profiler, it seems that most of the time is spent in the destructor is for waiting for something. |
||
►
Sign in to add a comment |
||
Comment 1 by etienneb@chromium.org
, Oct 15407 KB
407 KB Download
32.5 KB
32.5 KB View Download