I just encountered the following hang:
Call graph:
1574 Thread_16426726 DispatchQueue_1: com.apple.main-thread (serial)
+ 1574 start (in libdyld.dylib) + 1 [0x7fff59813115]
+ 1574 main (in Google Chrome) + 404 [chrome_exe_main_mac.cc:169]
+ 1574 ChromeMain (in Google Chrome Framework) + 186 [chrome_main.cc:0]
+ 1574 content::ContentMain(content::ContentMainParams const&) (in Google Chrome Framework) load address 0x10af6d000 + 0x19c5344 [content_main.cc:19]
+ 1574 service_manager::Main(service_manager::MainParams const&) (in Google Chrome Framework) load address 0x10af6d000 + 0x32dc01b [main.cc:456]
+ 1574 content::ContentMainRunnerImpl::Run() (in Google Chrome Framework) load address 0x10af6d000 + 0x19c5e00 [content_main_runner.cc:717]
+ 1574 content::BrowserMain(content::MainFunctionParams const&) (in Google Chrome Framework) load address 0x10af6d000 + 0x78015c [browser_main.cc:46]
+ 1574 content::BrowserMainRunnerImpl::Run() (in Google Chrome Framework) load address 0x10af6d000 + 0x786532 [memory:2564]
+ 1574 content::BrowserMainLoop::RunMainMessageLoopParts() (in Google Chrome Framework) load address 0x10af6d000 + 0x783b64 [browser_main_loop.cc:1238]
+ 1574 ChromeBrowserMainParts::MainMessageLoopRun(int*) (in Google Chrome Framework) load address 0x10af6d000 + 0x1a12fd8 [chrome_browser_main.cc:1977]
+ 1574 <name omitted> (in Google Chrome Framework) load address 0x10af6d000 + 0x1dfb5e5 [run_loop.cc:136]
+ 1574 base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) (in Google Chrome Framework) load address 0x10af6d000 + 0x1dd747e [message_pump_mac.mm:302]
+ 1574 base::MessagePumpNSApplication::DoRun(base::MessagePump::Delegate*) (in Google Chrome Framework) load address 0x10af6d000 + 0x1dd88fc [message_pump_mac.mm:822]
+ 1574 -[NSApplication run] (in AppKit) + 764 [0x7fff2f4ebd6d]
+ 1574 -[BrowserCrApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in Google Chrome Framework) load address 0x10af6d000 + 0x1a0d0e4 [chrome_browser_application_mac.mm:179]
+ 1574 base::mac::CallWithEHFrame(void () block_pointer) (in Google Chrome Framework) load address 0x10af6d000 + 0x1dc9afa []
+ 1574 __71-[BrowserCrApplication nextEventMatchingMask:untilDate:inMode:dequeue:]_block_invoke (in Google Chrome Framework) load address 0x10af6d000 + 0x1a0d1a0 [chrome_browser_application_mac.mm:174]
+ 1574 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (in AppKit) + 3044 [0x7fff2fc8cb4c]
+ 1574 _DPSNextEvent (in AppKit) + 2085 [0x7fff2f4f6f5f]
+ 1574 _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox) + 64 [0x7fff3122b914]
+ 1574 ReceiveNextEventCommon (in HIToolbox) + 613 [0x7fff3122bb96]
+ 1574 RunCurrentEventLoopInMode (in HIToolbox) + 286 [0x7fff3122be26]
+ 1574 CFRunLoopRunSpecific (in CoreFoundation) + 483 [0x7fff31f13d23]
+ 1574 __CFRunLoopRun (in CoreFoundation) + 1293 [0x7fff31f144bd]
+ 1574 __CFRunLoopDoSources0 (in CoreFoundation) + 208 [0x7fff31f15040]
+ 1574 __CFRunLoopDoSource0 (in CoreFoundation) + 108 [0x7fff31fec35c]
+ 1574 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ (in CoreFoundation) + 17 [0x7fff31f325a1]
+ 1574 base::MessagePumpCFRunLoopBase::RunWorkSource(void*) (in Google Chrome Framework) load address 0x10af6d000 + 0x1dd795f [message_pump_mac.mm:432]
+ 1574 base::mac::CallWithEHFrame(void () block_pointer) (in Google Chrome Framework) load address 0x10af6d000 + 0x1dc9afa []
+ 1574 base::MessagePumpCFRunLoopBase::RunWork() (in Google Chrome Framework) load address 0x10af6d000 + 0x1dd803a [message_pump_mac.mm:453]
+ 1574 base::MessageLoop::DoWork() (in Google Chrome Framework) load address 0x10af6d000 + 0x1dd6219 [message_loop.cc:455]
+ 1574 base::MessageLoop::RunTask(base::PendingTask*) (in Google Chrome Framework) load address 0x10af6d000 + 0x1dd5d14 [vector:639]
+ 1574 base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) (in Google Chrome Framework) load address 0x10af6d000 + 0x1db11cc [callback_forward.h:11]
+ 1574 content::(anonymous namespace)::ReleaseSpareCompositors() (in Google Chrome Framework) load address 0x10af6d000 + 0xbe71bb [memory:0]
+ 1574 content::RecyclableCompositorMac::~RecyclableCompositorMac() (in Google Chrome Framework) load address 0x10af6d000 + 0xbe6c4e [browser_compositor_view_mac.mm:120]
+ 1574 content::RecyclableCompositorMac::~RecyclableCompositorMac() (in Google Chrome Framework) load address 0x10af6d000 + 0xbe6bb6 [memory:2592]
+ 1574 ui::Compositor::~Compositor() (in Google Chrome Framework) load address 0x10af6d000 + 0x3701ae9 [compositor.cc:236]
+ 1574 cc::LayerTreeHost::~LayerTreeHost() (in Google Chrome Framework) load address 0x10af6d000 + 0x2d9b9de [layer_tree_host.cc:171]
+ 1574 cc::LayerTreeHost::~LayerTreeHost() (in Google Chrome Framework) load address 0x10af6d000 + 0x2d9b3d7 [memory:2592]
+ 1574 cc::SingleThreadProxy::Stop() (in Google Chrome Framework) load address 0x10af6d000 + 0x2de31db [memory:2592]
+ 1574 cc::LayerTreeHostImpl::ReleaseLayerTreeFrameSink() (in Google Chrome Framework) load address 0x10af6d000 + 0x2dae67c [layer_tree_host_impl.cc:2742]
+ 1574 cc::LayerTreeResourceProvider::~LayerTreeResourceProvider() (in Google Chrome Framework) load address 0x10af6d000 + 0x2d4c42e [layer_tree_resource_provider.cc:158]
+ 1574 cc::LayerTreeResourceProvider::~LayerTreeResourceProvider() (in Google Chrome Framework) load address 0x10af6d000 + 0x2d4c30f [memory:2592]
+ 1574 gpu::gles2::GLES2Implementation::FinishHelper() (in Google Chrome Framework) load address 0x10af6d000 + 0x2e016f5 [gles2_implementation.cc:1507]
+ 1574 gpu::CommandBufferHelper::Finish() (in Google Chrome Framework) load address 0x10af6d000 + 0x2f55ef [cmd_buffer_helper.cc:155]
+ 1574 gpu::CommandBufferProxyImpl::WaitForGetOffsetInRange(unsigned int, int, int) (in Google Chrome Framework) load address 0x10af6d000 + 0x48dd05 [command_buffer_proxy_impl.cc:715]
+ 1574 gpu::GpuChannelHost::Send(IPC::Message*) (in Google Chrome Framework) load address 0x10af6d000 + 0x490ad1 [gpu_channel_host.cc:85]
+ 1574 base::WaitableEvent::Wait() (in Google Chrome Framework) load address 0x10af6d000 + 0x1e0f3ef [waitable_event_mac.cc:107]
+ 1574 base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) (in Google Chrome Framework) load address 0x10af6d000 + 0x1e0f4c5 [waitable_event_mac.cc:149]
+ 1574 mach_msg (in libsystem_kernel.dylib) + 60 [0x7fff59958cdc]
+ 1574 mach_msg_trap (in libsystem_kernel.dylib) + 10 [0x7fff599597c2]
It looks like CommandBufferProxyImpl::WaitForGetOffsetInRange is sending a sync IPC message (to the GPU process I guess?). If the GPU process then hangs, this blocks the whole browser.
Comment 1 by bauerb@chromium.org
, Apr 9 2018