cc: fix a deadlock in scheduler state machine w/wait_for_all_pipeline_stages_before_draw
- we rasterize and activate a tree with active_tree_needs_first_draw; - we don't draw the tree because we're not within the frame deadline [1] - a commit happens meanwhile, which resets active_tree_is_ready_to_draw_ [2] Now we can't draw, because we have a pending tree [3] and we can't activate the pending tree, because active_tree_needs_first_draw [4]; So we don't produce a frame. The next attempt to commit hangs the main thread, as it waits on the completion event [5]. 1: https://source.chromium.org/chromium/chromium/src/+/master:cc/scheduler/scheduler_state_machine.cc;drc=51f3bdaec86288604ea075cf6e445e7ab3cbcc88;l=387 2: https://source.chromium.org/chromium/chromium/src/+/master:cc/scheduler/scheduler_state_machine.cc;drc=51f3bdaec86288604ea075cf6e445e7ab3cbcc88;l=877 3: https://source.chromium.org/chromium/chromium/src/+/master:cc/scheduler/scheduler_state_machine.cc;drc=51f3bdaec86288604ea075cf6e445e7ab3cbcc88;l=393 4: https://source.chromium.org/chromium/chromium/src/+/master:cc/scheduler/scheduler_state_machine.cc;drc=51f3bdaec86288604ea075cf6e445e7ab3cbcc88;l=420 5: https://source.chromium.org/chromium/chromium/src/+/master:cc/trees/proxy_main.cc;drc=cd2804d00d64031d9fd6397f6e9bc6093a2b2ef8;l=370 Bug: b/160032351 Change-Id: Ib89a513e2ab277742cea6c64ef14f945710c851a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2301202 Commit-Queue: Andrey Kosyakov <caseq@chromium.org> Reviewed-by:Eric Seckler <eseckler@chromium.org> Reviewed-by:
Sunny Sachanandani <sunnyps@chromium.org> Cr-Commit-Position: refs/heads/master@{#789745}
Showing
Please register or sign in to comment