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

Issue 689869 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Regression: Chrome becomes un-responsive on ending GPU process

Project Member Reported by sc00335...@techmahindra.com, Feb 8 2017

Issue description

Chrome Version: 58.0.3006.0 
OS: Ubuntu 14.04,Windows

What steps will reproduce the problem?
(1)LAunch chrome and open some tabs >> Hit Shift+esc for task manager
(2)End Gpu process and try using opened tabs
(3)Maxmise and restore task manager and observe

Expected: 
Step-2: Opened tabs should be responsive.
Step-3: MAximise and restore should be smooth.

Actual:
Step-2: Tabs becomes un responsive.
Step-3: Weird traces are seen on maximising and restoring task manager.

This is a regression issue broken in M58.

Good Build: 58.0.3005.2 dev 
Bad Build: 58.0.3006.0 dev
 
Actual_GPU.ogv
2.5 MB View Download

Comment 1 by ajha@chromium.org, Feb 8 2017

Labels: OS-Mac
Status: Untriaged (was: Unconfirmed)
Able to reproduce the issue on the latest canary(58.0.3006.0) on Mac OS 10.12.2 as well. I had to enable '#ignore GPU blacklist' to see the gpu process under Task Manager.
Cc: hdodda@chromium.org
Labels: -Needs-Bisect hasbisect-per-revision
Owner: staraz@chromium.org
Status: Assigned (was: Untriaged)
Using the per-revision bisect providing the bisect results,
Good Build: 58.0.3005.2 dev (revision : 448507)
Bad Build: 58.0.3006.0 dev (revision : 448862)

You are probably looking for a change made after 448730 (known good), but no later than 448731 (first known bad).

CHANGELOG URL:

The script might not always return single CL as suspect as some perf builds might get missing due to failure.

 https://chromium.googlesource.com/chromium/src/+log/5a2beb655d42509edec55b7438bf6887a6454d0a..c405416053b99aa4d6f98f3126608c660773f6b4

From the CL above, assigning the issue to the concern owner 

@staraz - Could you please check whether this is caused with respect to your change, if not please help us in assigning it to the right owner.

Review-Url: https://codereview.chromium.org/2612083002

Thanks!
Status: Started (was: Assigned)
Cc: fsam...@chromium.org
With my change, the Display is initialized with CompositorFrameSinkSupport as its DisplayClient instead of DirectCompositorFrameSink. The problem is that CompositorFrameSinkSupport::DisplayOutputSurfaceLost() doesn't do anything to inform its client.

I'm working on a fix.
I feel like CompositorFrameSinkSupport should not be holding a cc::Display and it should not be a cc::DisplayClient. Once that change is made, things will automagically work again I think.
Project Member

Comment 7 by bugdroid1@chromium.org, Feb 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/04c49bf4845979aeff2c740a168de0a936b015af

commit 04c49bf4845979aeff2c740a168de0a936b015af
Author: staraz <staraz@chromium.org>
Date: Fri Feb 10 23:10:31 2017

Move display_ From CompositorFrameSinkSupport To GpuDisplayCompositorFrameSink

With FrameGenerator and GpuDisplayCompositorFrameSink having a DisplayPrivate
interface, CompositorFrameSinkSupport doesn't need to know about cc::Display.

cc::Display::SetLocalSurfaceId() checks and early returns if
neither local surface id nor device scale factor has changed.
Therefore, FrameGenerator's calling SetLocalSurfaceId() before
every SubmitCompositorFrame() doesn't result in extra work.

This CL also fixes  bug 689869 . The bug was caused by
https://codereview.chromium.org/2612083002/.
In the previous CL, cc::Display::Initialize() was called inside
CompositorFrameSinkSupport(), where CompositorFrameSinkSupport
was passed as DisplayClient.
CompositorFrameSinkSupport::DisplayOutputSurfaceLost() wasn't
doing anything so the CompositorFrameSinkClient didn't get
notified when we lost CompositorFrameSink.

For  bug 676070 ,  689916  (flaky tests):
The two bugs are caused by CompositorFrameSinkSupport doesn't stop
observing BeginFrameSource when it should. By notifying client on output
surface lost correctly, DirectCompositorFrameSink detaches from client
and destroys CompositorFrameSinkSupport (and hence stop observing
BeginFrameSource) at the right time.

BUG= 688042 ,  689869 ,  676070 ,  689916 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2683583005
Cr-Commit-Position: refs/heads/master@{#449777}

[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/cc/ipc/display_compositor.mojom
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/cc/surfaces/compositor_frame_sink_support.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/cc/surfaces/compositor_frame_sink_support.h
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/cc/surfaces/compositor_frame_sink_support_unittest.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_compositor_frame_sink.h
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_display_compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_display_compositor_frame_sink.h
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_offscreen_compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/exo/compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/exo/surface.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/services/ui/ws/frame_generator.cc

Comment 8 by staraz@chromium.org, Feb 13 2017

Status: Fixed (was: Started)
Labels: TE-Verified-M58 TE-Verified-58.0.3012.0
Tested the issue on Latest Dev# 58.0.3012.0 on Windows, Mac and Linux and found the issue is not reproducible.
Attaching screencast for reference. Hence adding TE-Verified Labels.
Thank You.
689869.mov
7.7 MB Download

Sign in to add a comment