New issue
Advanced search Search tips

Issue 831204 link

Starred by 1 user

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

cc::Scheduler: Implement flow debug labels

Project Member Reported by fsam...@chromium.org, Apr 10 2018

Issue description

Stack traces in cc are typically not very useful because they tend to start at the cc::Scheduler, and it's never clear what caused the scheduler to get into that state. Perhaps we should implement "flows"?

In other words, whenever one or more action initiates a state transition cc::Scheduler allocates a flow_id along with a flow debug label.

When we crash as a result of a state transition, we output the flow debug label in the crash log. This should make root causing bugs and races in cc much simpler.

This can probably also apply to the display scheduler, and gpu scheduler too.
 

Comment 1 by danakj@chromium.org, Apr 13 2018

Random idea: What if cc schedule state transitions stayed on the stack, as they were nested function calls.
how do we keep them on the stack if things happen later?

Comment 3 by danakj@chromium.org, Apr 13 2018

I was assuming that these flows meant multiple scheduler actions happening in a row in ProcessScheduledActions.  Your new comment makes me think otherwise, so I don't know that I understand the intent here.

0x0000564808f82581	(chrome -client_layer_tree_frame_sink.cc:137 )	viz::ClientLayerTreeFrameSink::SubmitCompositorFrame(viz::CompositorFrame)
0x00005648089c9df3	(chrome -layer_tree_host_impl.cc:2000 )	cc::LayerTreeHostImpl::DrawLayers(cc::LayerTreeHostImpl::FrameData*)
0x0000564808a50941	(chrome -single_thread_proxy.cc:614 )	cc::SingleThreadProxy::DoComposite(cc::LayerTreeHostImpl::FrameData*)
0x0000564808a515cf	(chrome -single_thread_proxy.cc:803 )	non-virtual thunk to cc::SingleThreadProxy::ScheduledActionDrawIfPossible()
0x0000564808a49ab9	(chrome -scheduler.cc:655 )	cc::Scheduler::ProcessScheduledActions()
0x0000564808a48ff6	(chrome -scheduler.cc:643 )	cc::Scheduler::OnBeginImplFrameDeadline()
0x0000564807cf1107	(chrome -callback.h:95 )	base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*)

What flipped the CanDraw bit? I'd love to know in this crash log...
Best bet here is to copy the necessary information on the stack, and
base::debug::Alias it so that it can be inspected in minidumps.
Owner: akaba@google.com
Status: Assigned (was: Available)
Owner: akaba@chromium.org
Owner: ----
Status: Available (was: Assigned)

Sign in to add a comment