New issue
Advanced search Search tips

Issue 637066 link

Starred by 0 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

Spurious hangs while taking a screenshot with DevTools

Reported by svartme...@yandex-team.ru, Aug 11 2016

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.6.17 (KHTML, like Gecko) Version/9.1.1 Safari/601.6.17

Steps to reproduce the problem:
This is really hard to reproduce by hand.
Browser can hang while waiting for a renderer snapshot because scheduled drawing can be aborted and as a result completion callback never fires.

What is the expected behavior?
Browser doesn't hang.

What went wrong?
Browser hangs.

Did this work before? No 

Chrome version: 52.0.2743.116 (394939)  Channel: stable
OS Version: 7
Flash Version: Shockwave Flash 22.0 r0

The bug was found analytically, and has never reproduced on practice. 
But the problem is tricky and may cause flakiness issues.
 

Comment 1 by danakj@chromium.org, Aug 11 2016

Cc: danakj@chromium.org piman@chromium.org
Components: Platform>DevTools
Labels: Stability-Hang
Owner: dgozman@chromium.org
Status: Assigned (was: Unconfirmed)
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 13 2016

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

commit 751af1f9be588e97d6c37628499c421322797e18
Author: svartmetal <svartmetal@yandex-team.ru>
Date: Sat Aug 13 11:47:33 2016

Make RenderViewImpl::OnForceRedraw more robust

Before this change, RenderWidgetHostImpl::GetSnapshotFromBrowser could
spuriously fail (and callback might never be fired). The nature of
unresponsiveness is in fact that scheduled draw and swap can
be aborted by cc::Scheduler and, as a result, we have active tree
deletion with all ui::LatencyInfo data sent by browser.

BUG= 637066 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

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

[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/cc/layers/surface_layer.cc
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/cc/output/latency_info_swap_promise.cc
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/cc/output/latency_info_swap_promise.h
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/cc/output/swap_promise.h
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/cc/trees/layer_tree_host_unittest.cc
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/cc/trees/layer_tree_impl_unittest.cc
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/content/browser/devtools/protocol/page_handler.cc
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/content/browser/renderer_host/render_widget_host_impl.cc
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/content/common/view_messages.h
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/content/renderer/gpu/queue_message_swap_promise.cc
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/content/renderer/gpu/queue_message_swap_promise.h
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/content/renderer/render_view_impl.cc
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/content/renderer/render_view_impl.h
[modify] https://crrev.com/751af1f9be588e97d6c37628499c421322797e18/content/test/layouttest_support.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Aug 25 2016

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

commit 2c33a82ea31e68a16e936668c4a0f4db7b2ef20b
Author: eseckler <eseckler@chromium.org>
Date: Thu Aug 25 09:26:54 2016

Save latency info for skipped frames with the wrong size.

We observed that if a screenshot is captured while simultaneously the frame
is resized, it is possible that the screenshot is lost. This is because the latency
info (which identifies a CompositorFrame as the screenshot's frame) is sent
from the renderer within a wrongly sized CompositorFrame, which is then
skipped by DelegatedFrameHost.

For situations with an active resize lock, the latency info attached to dropped
frames is saved by the DFH and re-attached to the first frame that is not
dropped. However, this does not happen if the frame is dropped further down
the line, because it is not of the desired size of the RWHV.

This patch also saves the latency info for such wrongly sized frames in DFH,
until a correctly sized frame is submitted.

BUG= 637066 

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

[modify] https://crrev.com/2c33a82ea31e68a16e936668c4a0f4db7b2ef20b/content/browser/renderer_host/delegated_frame_host.cc

Status: Fixed (was: Assigned)

Sign in to add a comment