Regression: Chrome becomes un-responsive on ending GPU process |
||||||
Issue descriptionChrome 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
,
Feb 8 2017
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!
,
Feb 8 2017
,
Feb 8 2017
,
Feb 8 2017
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.
,
Feb 8 2017
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.
,
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
,
Feb 13 2017
,
Feb 14 2017
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. |
||||||
►
Sign in to add a comment |
||||||
Comment 1 by ajha@chromium.org
, Feb 8 2017Status: Untriaged (was: Unconfirmed)