Issue metadata
Sign in to add a comment
|
Regression : Task manager window goes unresponsive on terminating "gpu process".
Reported by
avsha...@etouch.net,
Jun 22 2017
|
||||||||||||||||||||||
Issue descriptionChrome Version : 61.0.3138.0 (Official Build) d2d3a3975e9c7f3c5c62ef0ecad2683332894600-refs/heads/master@{#481386} 32/64 bit OS : Windows(7,8,10), Linux(14.04 LTS) What steps will reproduce the problem? 1. Launch chrome, open NTP and hit 'Shift' + 'Esc' keys to open task manager. 2. Minimize the browser and in task manager, select "GPU Process" and kill it. 3. Observe the task manager window. Actual Result : Weird behavior is seen in task manager after terminating "GPU Process" (i.e task manager window turns black) Expected Result : Task manager should restart "GPU Process" again and task manager window should not turn black. This is a regression issue broken in ‘M-61’, below is the Manual Regression range and will soon update other info. Good build : 61.0.3125.0 Bad build : 61.0.3126.0 Note : 1. In Win-10 OS, task manager turns blank but in Windows(7,8,8.1) and Linux(14.04 LTS) OS, on terminating "GPU Process", the task manager becomes unresponsive. 2. Issue is not reproducible in Mac(10.11.6, 10.12.3) OS.
,
Jun 26 2017
This seems to be related to 680777. boliu@: Could you take a look?
,
Jun 26 2017
No, I don't work on desktop. Plus it landed on your CL
,
Jun 26 2017
I checked out the revision before my CL and the regression persists. jbauman@: It seems that the GPU channel is not re-established when the browser window is minimized but the task manager is visible. Could you take a look?
,
Jun 26 2017
I'm getting the same bisect as rbasuvula - that r478389 is at fault.
,
Jun 26 2017
I checked out and built the parent of r478389 (https://chromium.googlesource.com/chromium/src/+/21886543a0cbedeb869fb68944e13ef613cedceb) and was able to reproduce the same problem 10/10.
,
Jun 27 2017
Linux
,
Jun 27 2017
If I move GetSurfaceManager()->RegisterBeginFrameSource(begin_frame_source, compositor->frame_sink_id()); below the creation of the DirectCompositorFrameSink then it works. Is it possible the BeginFrameSource isn't being properly connected when it's first created?
,
Jun 27 2017
Before I moved BeginFrameSource out of Display, there was a comment in cc::Display::Initialzie saying "This (RegisterBFS) must be done in Initialize() so that the caller can delay this until they are ready to receive a BeginFrameSource. (https://chromium-review.googlesource.com/c/527478/9/cc/surfaces/display.cc#b89) Instead of "BeginFrameSource isn't being properly connected when it's first created", I'm suspecting that by registering the BFS before creating the DirectLayerTreeFrameSink, we miss the first BeginFrame after restarting the GPU process. I uploaded a CL for this change.
,
Jun 27 2017
,
Jun 27 2017
,
Jun 28 2017
After killing the gpu process while the browser window minimized, the gpu process restarts but the task manager window isn't getting BeginFrames until the browser window is visible again. Having the browser window in the background but without a renderer (i.e. displaying the sad tab) would lead to the same unresponsive task manager.
,
Jun 28 2017
Registering BeginFrameSource after creating DirectLayerTreeFrameSink doesn't seem to fix it for me anymore.
,
Jun 28 2017
My suggestion: Checkout back to a revision where it does, and use that to debug down to the root cause, as you can see what is different with/without that change, and from there to TOT as well.
,
Jul 4 2017
Note: The bug is not reproducible while chromoting.
,
Jul 4 2017
I suspect Chromoting uses software compositing?
,
Jul 4 2017
The bug is fixed if I move RegisterBeginFramesource from GpuProcessTransportFactory::EstablishedGpuChannel to DirectLayerTreeFrameSink::BindToClient (experimental CL: https://chromium-review.googlesource.com/c/550235/7. I didn't change the Android code so Android bots are likely to fail). We didn't do this in the first place because we wanted register and unregister inside one class. I'll continue looking for an appropriate place to put these.
,
Jul 4 2017
I'd like to understand what the problem is? We can find a better solution if we understand the problem?
,
Jul 4 2017
I'm still looking for a clear explanation for the cause, but I believe it has something to do with a comment that used to be in cc::Display::Initialize (where we used to call RegisterBeginFrameSource): "This (RegisterBFS) must be done in Initialize() so that the caller can delay this until they are ready to receive a BeginFrameSource." (See comment #10) From the comment, the explanation would be the caller (client) is not ready to receive BeginFrame when the BFS is registered. I'll dig deeper and see what "not ready" means here
,
Jul 10 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1c17648285c4edd77a7148e21c32918e5c46c82c commit 1c17648285c4edd77a7148e21c32918e5c46c82c Author: Alex Zhang <staraz@chromium.org> Date: Mon Jul 10 02:17:56 2017 Do not remove entry from |frame_sink_source_map_| when client is unregistered. Currently, FrameSinkManager::UnregisterFrameSinkManagerClient removes the entry associated with |frame_sink_id| from |frame_sink_source_map_| if the |frame_sink_id| does not have any children. This would result in a client not connected with a BeginFrameSource when it is unregistered and re-registered with the same FrameSinkId. This CL removes the lines that removes the entry from |frame_sink_source_map_| if the |frame_sink_id| has no child in FrameSinkManager::UnregisterFrameSinkManagerClient. It also adds a unit test to verify that the client gets reconnected to the BeginFrameSource after unregistering and re-registering. Bug: 735805 Change-Id: I93ae860b1192e23aa116749d0bbcdb553ddc2246 Reviewed-on: https://chromium-review.googlesource.com/563705 Commit-Queue: Xingyu Zhang <staraz@chromium.org> Reviewed-by: Fady Samuel <fsamuel@chromium.org> Reviewed-by: enne <enne@chromium.org> Cr-Commit-Position: refs/heads/master@{#485172} [modify] https://crrev.com/1c17648285c4edd77a7148e21c32918e5c46c82c/cc/surfaces/frame_sink_manager.cc [modify] https://crrev.com/1c17648285c4edd77a7148e21c32918e5c46c82c/cc/surfaces/frame_sink_manager_unittest.cc
,
Jul 11 2017
|
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by rbasuvula@chromium.org
, Jun 22 2017Labels: hasbisect-per-revision ReleaseBlock-Stable
Owner: staraz@chromium.org
Status: Assigned (was: Unconfirmed)