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

Issue 599410 link

Starred by 0 users

Issue metadata

Status: Fixed
Owner:
not on Chrome anymore
Closed: Jul 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

Deadlock in glFinish when closing a bubble opened by touch

Project Member Reported by m...@opera.com, Mar 31 2016

Issue description

Version: 51.0.2695.1
OS: Win10

What steps will reproduce the problem?
(1) Using touch input, open the star menu (bookmarks)
(2) When the menu opens, touch the new tab button

What do you see?

A deadlock.


 

Comment 1 by sky@chromium.org, Mar 31 2016

Cc: ananta@chromium.org tdander...@chromium.org
Can you post stacks of the threads that are deadlocked.
Do you happen to have the #top-chrome-md flag set to "Material" or "Material Hybrid" in chrome://flags?

I can't reproduce on the latest Chrome OS canary (51.0.2692.0) (regardless of the state of #top-chrome-md) so it seems this is probably Windows-specific.
Cc: varkha@chromium.org
+varkha@ since he was working on bubble code recently.

Comment 4 by msw@chromium.org, Mar 31 2016

Cc: est...@chromium.org
Evan recently changed the base class for LocationBarBubbleDelegateView (not sure if related).

Comment 5 by m...@opera.com, Jun 20 2016

We are still affected. Try to open the identity popup and press the tab add button to close it. Will result in deadlock!

Comment 6 by m...@opera.com, Jun 20 2016

--disable-direct-composition resolves the problem, the offending commit was the one enabling direct composition by default.

Comment 7 by m...@opera.com, Jun 21 2016

Please prioritize. It may just need a new entry in gpu bugs AFAICS. The problematic driver is Intel integrated GPU's if I am right.

Comment 8 by m...@opera.com, Jun 23 2016

ananta@ any clue to what is happening? Sorry for nagging but this is a big deal IMHO.

Comment 9 by sky@chromium.org, Jun 23 2016

I can't repro on win7. mboc, can you attach stacks of the threads that are deadlocked?

Comment 10 by m...@opera.com, Jun 24 2016

sky@ GPU process waits for work normally, main thread of UI waits:

>	base.dll!base::WaitableEvent::WaitMany(base::WaitableEvent * * events, unsigned int count) Line 92	C++
 	ipc.dll!IPC::SyncChannel::WaitForReply(IPC::SyncChannel::SyncContext * context, base::WaitableEvent * pump_messages_event) Line 553	C++
 	ipc.dll!IPC::SyncChannel::SendWithTimeout(IPC::Message * message, int timeout_ms) Line 534	C++
 	ipc.dll!IPC::SyncChannel::Send(IPC::Message * message) Line 489	C++
 	gpu.dll!gpu::GpuChannelHost::Send(IPC::Message * msg) Line 121	C++
 	gpu.dll!gpu::CommandBufferProxyImpl::Send(IPC::Message * msg) Line 714	C++
 	gpu.dll!gpu::CommandBufferProxyImpl::WaitForGetOffsetInRange(int start, int end) Line 364	C++
 	gpu.dll!gpu::CommandBufferHelper::WaitForGetOffsetInRange(int start, int end) Line 169	C++
 	gpu.dll!gpu::CommandBufferHelper::Finish() Line 222	C++
 	gles2_implementation.dll!gpu::gles2::GLES2Implementation::FinishHelper() Line 1421	C++
 	gles2_implementation.dll!gpu::gles2::GLES2Implementation::Finish() Line 1397	C++
 	cc.dll!cc::ResourceProvider::~ResourceProvider() Line 499	C++
 	[External Code]	
 	cc.dll!cc::LayerTreeHostImpl::~LayerTreeHostImpl() Line 305	C++
 	[External Code]	
 	cc.dll!cc::SingleThreadProxy::Stop() Line 368	C++
 	cc.dll!cc::LayerTreeHost::~LayerTreeHost() Line 360	C++
 	[External Code]	
 	compositor.dll!ui::Compositor::~Compositor() Line 241	C++
 	[External Code]	
 	aura.dll!aura::WindowTreeHost::DestroyCompositor() Line 225	C++
 	views.dll!views::DesktopWindowTreeHostWin::HandleDestroying() Line 777	C++
 	views.dll!views::HWNDMessageHandler::OnDestroy() Line 1367	C++
 	views.dll!views::HWNDMessageHandler::_ProcessWindowMessage(HWND__ * hWnd, unsigned int uMsg, unsigned int wParam, long lParam, long & lResult, unsigned long dwMsgMapID) Line 381	C++
 	views.dll!views::HWNDMessageHandler::OnWndProc(unsigned int message, unsigned int w_param, long l_param) Line 899	C++
 	gfx.dll!gfx::WindowImpl::WndProc(HWND__ * hwnd, unsigned int message, unsigned int w_param, long l_param) Line 303	C++
 	gfx.dll!base::win::WrappedWindowProc<&gfx::WindowImpl::WndProc>(HWND__ * hwnd, unsigned int message, unsigned int wparam, long lparam) Line 76	C++
 	[External Code]	
 	views.dll!views::HWNDMessageHandler::CloseNow() Line 440	C++
 	views.dll!base::internal::RunnableAdapter<void (__thiscall views::HWNDMessageHandler::*)(void)>::Run<views::HWNDMessageHandler *>(views::HWNDMessageHandler * && receiver_ptr) Line 187	C++
 	views.dll!base::internal::InvokeHelper<1,void>::MakeItSo<base::internal::RunnableAdapter<void (__thiscall views::HWNDMessageHandler::*)(void)> &,base::WeakPtr<views::HWNDMessageHandler> >(base::internal::RunnableAdapter<void (__thiscall views::HWNDMessageHandler::*)(void)> & runnable, base::WeakPtr<views::HWNDMessageHandler> weak_ptr) Line 326	C++
 	views.dll!base::internal::Invoker<base::IndexSequence<0>,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall views::HWNDMessageHandler::*)(void)>,void __cdecl(views::HWNDMessageHandler *),base::WeakPtr<views::HWNDMessageHandler> >,1,void __cdecl(void)>::Run(base::internal::BindStateBase * base) Line 363	C++
 	base.dll!base::Callback<void __cdecl(void),1>::Run() Line 397	C++
 	base.dll!base::debug::TaskAnnotator::RunTask(const char * queue_function, const base::PendingTask & pending_task) Line 53	C++
 	base.dll!base::MessageLoop::RunTask(const base::PendingTask & pending_task) Line 485	C++
 	base.dll!base::MessageLoop::DeferOrRunPendingTask(const base::PendingTask & pending_task) Line 496	C++
 	base.dll!base::MessageLoop::DoWork() Line 610	C++
 	base.dll!base::MessagePumpForUI::DoRunLoop() Line 185	C++
 	base.dll!base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate * delegate, base::MessagePumpDispatcher * dispatcher) Line 62	C++
 	base.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) Line 67	C++
 	base.dll!base::MessageLoop::RunHandler() Line 449	C++
 	base.dll!base::RunLoop::Run() Line 52	C++

Comment 11 by m...@opera.com, Jun 24 2016

I'll just add I'm on Win10 v 1511 b 10586.420

Comment 12 by m...@opera.com, Sep 9 2016

Anyone?

Comment 13 by sky@chromium.org, Sep 9 2016

Cc: -ananta@chromium.org -msw@chromium.org -tdander...@chromium.org -est...@chromium.org -varkha@chromium.org danakj@chromium.org jbau...@chromium.org piman@chromium.org
Thanks for pinging as I missed the trace pasted in in comment #10. It looks like the UI is stuck waiting on IPC from gpu. I'm trimming the cc list to just the folks that hopefully know what is going on (and keeping myself).
+piman, danakj, jbauman : any ideas on why we might be wedged here?
Can we get a backtrace of the gpu process? Personally I can't guess at what it would be waiting for, maybe others can divine more.
Cc: siev...@chromium.org sunn...@chromium.org
Summary: Deadlock in glFinish when closing a bubble opened by touch (was: Deadlock when closing a bubble opened by touch)

Comment 17 by piman@chromium.org, Sep 12 2016

We'd have to inspect what's going on in the GPU process. @#10: How hard would it be to dump a stack trace?
Components: -UI>Browser>Bubbles Internals>GPU
Owner: jbau...@chromium.org
Status: Started (was: Untriaged)
I think r418030 should fix this, in almost all cases. PeekMessage on a WS_DISABLED window seems to be trying to synchronously send touch messages to the parent window, causing this deadlock. Putting the window's message loop on a separate thread should prevent that.

I'm also looking into a more elegant fix where we have a transparent window in the browser process that intercepts touch events and handles them without letting them go to the GPU process.

Could you check and see if this is working for you in canary?
Labels: -M-51 M-55
jbauman@ does this look fixed?

Comment 20 by enne@chromium.org, Nov 8 2016

Labels: Needs-Feedback
mboc@opera.com: can you please try canary and verify if this is resolved for you?
Cc: m...@opera.com
+mboc@opera.com

Comment 22 by ajuma@chromium.org, Jan 19 2017

mboc@, please check if this is fixed for you
Labels: -Pri-1 Pri-2
This seems to be mostly working, though I'd still like to have the complete fix I mentioned in comment 18 some day.
Labels: -Needs-Feedback
Status: Fixed (was: Started)

Sign in to add a comment