New issue
Advanced search Search tips

Issue 770324 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

PaintLayer may have dirty position during painting

Project Member Reported by wangxianzhu@chromium.org, Sep 29 2017

Issue description

To reproduce:
1. Add showLayerTree(GetLayoutView()->Layer()) in LocalFrameView::PaintTree().
2. Build debug version of content_shell.
3. Run out/Debug/content_shell --run-layout-test paint/invalidation/video-mute-repaint.html

content_shell crahses:

[1:1:0929/125017.419868:3104004103200:FATAL:PaintLayer.h(274)] Check failed: !needs_position_update_. 
#0 0x7f53e31f905d base::debug::StackTrace::StackTrace()
#1 0x7f53e31f742c base::debug::StackTrace::StackTrace()
#2 0x7f53e328892a logging::LogMessage::~LogMessage()
#3 0x7f53db06d7e3 blink::PaintLayer::Location()
#4 0x7f53db933c09 blink::PaintLayer::Rect()
#5 0x7f53db931cb3 blink::ExternalRepresentation()
#6 0x7f53db931bbb blink::ExternalRepresentation()
#7 0x7f53dbc368c0 showLayerTree()
#8 0x7f53db19dd95 blink::LocalFrameView::PaintTree()
#9 0x7f53db19c255 blink::LocalFrameView::UpdateLifecyclePhasesInternal()
#10 0x7f53db19b932 blink::LocalFrameView::UpdateAllLifecyclePhases()

 
Owner: chrishtr@chromium.org
Status: Assigned (was: Available)
Status: WontFix (was: Assigned)
I can't reproduce this at ToT. Closing.
Status: Assigned (was: WontFix)
Just encountered this with another test with verbose paint logging:

content_shell --run-layout-test "--vmodule=*/paint/*=3,*/graphics/*=3" external/wpt/css/css-transforms/matrix/svg-matrix-036.html

[1:1:0110/154545.909543:FATAL:PaintLayer.cpp(3038)] Check failed: !needs_position_update_. 
#0 0x00000311424c base::debug::StackTrace::StackTrace()
#1 0x000003132a9c logging::LogMessage::~LogMessage()
#2 0x00000592d218 blink::PaintLayer::Location()
#3 0x000005731217 blink::ExternalRepresentation()
#4 0x00000573115f blink::ExternalRepresentation()
#5 0x00000592e987 showLayerTree()
#6 0x0000059546af blink::PrePaintTreeWalk::Walk()
#7 0x000005200abe blink::LocalFrameView::PrePaint()
#8 0x0000051fee91 blink::LocalFrameView::UpdateLifecyclePhasesInternal()
#9 0x0000051fe987 blink::LocalFrameView::UpdateAllLifecyclePhases()
#10 0x0000058af00e blink::PageAnimator::UpdateAllLifecyclePhases()
#11 0x000005276b42 blink::WebViewImpl::UpdateAllLifecyclePhases()
#12 0x000006b21e44 test_runner::WebWidgetTestClient::AnimateNow()

Thanks, checking that example now.
I found why we couldn't reproduce the issue before 1/9: we are using PaintLayer::RectIgnoringNeedsPositionUpdate() to avoid the crash during showLayerTree() etc., but https://chromium-review.googlesource.com/c/chromium/src/+/854628 made showLayerTree() depend on needs_position_update_.

The dirty position issue is always there.
I can reproduce. Even on an empty page, the LayoutView remains without
needsLayout after document initialization.
Update: setting needsLayout on the LayoutView at document initialization time
had not-clearly-ok side-effects, because it appears to impact the timing of when
the document starts pumping frames. I don't think I can just make that change.
Still investigating.
Project Member

Comment 8 by bugdroid1@chromium.org, Jan 27 2018

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

commit 82f67f9fb5a22f82bd51b9e46b9aa5540824c38c
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Sat Jan 27 05:20:17 2018

The LayoutView does not need position update, mark it as such.

Bug:  770324 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ib33f369309e59128a134e8f4120e46f647373d16
Reviewed-on: https://chromium-review.googlesource.com/869136
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532159}
[modify] https://crrev.com/82f67f9fb5a22f82bd51b9e46b9aa5540824c38c/third_party/WebKit/Source/core/paint/PaintLayer.cpp

Status: Fixed (was: Assigned)

Sign in to add a comment