PaintLayer may have dirty position during painting |
||||
Issue descriptionTo 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()
,
Dec 15 2017
I can't reproduce this at ToT. Closing.
,
Jan 10 2018
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()
,
Jan 11 2018
Thanks, checking that example now.
,
Jan 16 2018
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.
,
Jan 16 2018
I can reproduce. Even on an empty page, the LayoutView remains without needsLayout after document initialization.
,
Jan 26 2018
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.
,
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
,
Jan 27 2018
|
||||
►
Sign in to add a comment |
||||
Comment 1 by chrishtr@chromium.org
, Dec 14 2017Status: Assigned (was: Available)