DCHECK failure when composited scrolling layer gets pointer-events: none |
|||||||||||||||||
Issue descriptionChrome Version: 62.0.3195.0 (Developer Build) OS: ChromeOS 9817.0.2017_08_08_1110 What steps will reproduce the problem? (1) Open a internal page (Settings, History, chrome://net-internals ...) (2) Open chrome developer tools (F12 or ctrl+shift+i) (3) Click the "Sources" tab What is the expected result? It will work fine. What happens instead? The developer tools close. Log: [1:1:0824/134015.904533:FATAL:FindPaintOffsetAndVisualRectNeedingUpdate.h(107)] Check failed: (old_visual_rect_.IsEmpty() && new_visual_rect.IsEmpty()) || object_.EnclosingLayer()->SubtreeIsInvisible() || old_visual_rect_ == new_visual_rect || (InflatedRect(old_visual_rect_).Contains(new_visual_rect) && InflatedRect(new_visual_rect).Contains(old_visual_rect_)). Visual rect changed without needing update object="LayoutBlockFlow DIV" old="0,0 18x6509" new="0,-4671 18x6509" #0 0x7f19f33f396d base::debug::StackTrace::StackTrace() #1 0x7f19f33f1eec base::debug::StackTrace::StackTrace() #2 0x7f19f347b37d logging::LogMessage::~LogMessage() #3 0x7f19de6fee5f blink::FindVisualRectNeedingUpdateScopeBase::CheckVisualRect() #4 0x7f19df3845cb blink::FindObjectVisualRectNeedingUpdateScope::~FindObjectVisualRectNeedingUpdateScope() #5 0x7f19df383c31 blink::PaintInvalidator::UpdateVisualRectIfNeeded() #6 0x7f19df382247 blink::PaintInvalidator::InvalidatePaint() #7 0x7f19df3e8bdc blink::PrePaintTreeWalk::Walk() #8 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #9 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #10 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #11 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #12 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #13 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #14 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #15 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #16 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #17 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #18 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #19 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #20 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #21 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #22 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #23 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #24 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #25 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #26 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #27 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #28 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #29 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #30 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #31 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #32 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #33 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #34 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #35 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #36 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #37 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #38 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #39 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #40 0x7f19df3e8975 blink::PrePaintTreeWalk::Walk() #41 0x7f19df3e87c2 blink::PrePaintTreeWalk::Walk() #42 0x7f19de9b961d blink::LocalFrameView::PrePaint() #43 0x7f19de9b7f30 blink::LocalFrameView::UpdateLifecyclePhasesInternal() #44 0x7f19de9b76f2 blink::LocalFrameView::UpdateAllLifecyclePhases() #45 0x7f19df2deb17 blink::PageAnimator::UpdateAllLifecyclePhases() #46 0x7f19df2e40b5 blink::PageWidgetDelegate::UpdateAllLifecyclePhases() #47 0x7f19de92a840 blink::WebViewImpl::UpdateAllLifecyclePhases() #48 0x7f19dea51bc1 blink::WebViewFrameWidget::UpdateAllLifecyclePhases() #49 0x7f19ee54c79b content::RenderWidget::UpdateVisualState() #50 0x7f19ee37eeda content::RenderWidgetCompositor::UpdateLayerTreeHost() #51 0x7f19eb4d93ca cc::LayerTreeHost::RequestMainFrameUpdate() #52 0x7f19eb5bc107 cc::ProxyMain::BeginMainFrame() #53 0x7f19eb5b8d8e _ZN4base8internal13FunctorTraitsIMN2cc9ProxyMainEFvNSt3__110unique_ptrINS2_28BeginMainFrameAndCommitStateENS4_14default_deleteIS6_EEEEEvE6InvokeINS_7WeakPtrIS3_EEJS9_EEEvSB_OT_DpOT0_ #54 0x7f19eb5b8b85 _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIMN2cc9ProxyMainEFvNSt3__110unique_ptrINS4_28BeginMainFrameAndCommitStateENS6_14default_deleteIS8_EEEEENS_7WeakPtrIS5_EEJSB_EEEvOT_OT0_DpOT1_ #55 0x7f19eb5b8a36 _ZN4base8internal7InvokerINS0_9BindStateIMN2cc9ProxyMainEFvNSt3__110unique_ptrINS3_28BeginMainFrameAndCommitStateENS5_14default_deleteIS7_EEEEEJNS_7WeakPtrIS4_EENS0_13PassedWrapperISA_EEEEEFvvEE7RunImplISC_NS5_5tupleIJSE_SG_EEEJLm0ELm1EEEEvOT_OT0_NS5_16integer_sequenceImJXspT1_EEEE #56 0x7f19eb5b8929 _ZN4base8internal7InvokerINS0_9BindStateIMN2cc9ProxyMainEFvNSt3__110unique_ptrINS3_28BeginMainFrameAndCommitStateENS5_14default_deleteIS7_EEEEEJNS_7WeakPtrIS4_EENS0_13PassedWrapperISA_EEEEEFvvEE7RunOnceEPNS0_13BindStateBaseE #57 0x7f19f33a19d1 _ZNO4base8CallbackIFvvELNS_8internal8CopyModeE0ELNS2_10RepeatModeE0EE3RunEv #58 0x7f19f33f82cd base::debug::TaskAnnotator::RunTask() #59 0x7f19dd0c567a blink::scheduler::TaskQueueManager::ProcessTaskFromWorkQueue() #60 0x7f19dd0c0c0c blink::scheduler::TaskQueueManager::DoWork() #61 0x7f19dd0cc987 _ZN4base8internal13FunctorTraitsIMN5blink9scheduler16TaskQueueManagerEFvbEvE6InvokeIRKNS_7WeakPtrIS4_EEJRKbEEEvS6_OT_DpOT0_ Received signal 6 #0 0x7f19f33f396d base::debug::StackTrace::StackTrace() #1 0x7f19f33f1eec base::debug::StackTrace::StackTrace() #2 0x7f19f33f3367 base::debug::(anonymous namespace)::StackDumpSignalHandler() #3 0x7f19f3a2e330 <unknown> #4 0x7f19d846ec37 gsignal #5 0x7f19d8472028 abort #6 0x7f19f33ef006 base::debug::(anonymous namespace)::DebugBreak() #7 0x7f19f33eefe8 base::debug::BreakDebugger() #8 0x7f19f347bfd9 logging::LogMessage::~LogMessage() #9 0x7f19de6fee5f blink::FindVisualRectNeedingUpdateScopeBase::CheckVisualRect() #10 0x7f19df3845cb blink::FindObjectVisualRectNeedingUpdateScope::~FindObjectVisualRectNeedingUpdateScope() #11 0x7f19df383c31 blink::PaintInvalidator::UpdateVisualRectIfNeeded() #12 0x7f19df382247 blink::PaintInvalidator::InvalidatePaint() #13 0x7f19df3e8bdc blink::PrePaintTreeWalk::Walk() #14 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #15 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #16 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #17 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #18 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #19 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #20 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #21 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #22 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #23 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #24 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #25 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #26 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #27 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #28 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #29 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #30 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #31 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #32 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #33 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #34 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #35 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #36 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #37 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #38 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #39 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #40 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #41 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #42 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #43 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #44 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #45 0x7f19df3e8cda blink::PrePaintTreeWalk::Walk() #46 0x7f19df3e8975 blink::PrePaintTreeWalk::Walk() #47 0x7f19df3e87c2 blink::PrePaintTreeWalk::Walk() #48 0x7f19de9b961d blink::LocalFrameView::PrePaint() #49 0x7f19de9b7f30 blink::LocalFrameView::UpdateLifecyclePhasesInternal() #50 0x7f19de9b76f2 blink::LocalFrameView::UpdateAllLifecyclePhases() #51 0x7f19df2deb17 blink::PageAnimator::UpdateAllLifecyclePhases() #52 0x7f19df2e40b5 blink::PageWidgetDelegate::UpdateAllLifecyclePhases() #53 0x7f19de92a840 blink::WebViewImpl::UpdateAllLifecyclePhases() #54 0x7f19dea51bc1 blink::WebViewFrameWidget::UpdateAllLifecyclePhases() #55 0x7f19ee54c79b content::RenderWidget::UpdateVisualState() #56 0x7f19ee37eeda content::RenderWidgetCompositor::UpdateLayerTreeHost() #57 0x7f19eb4d93ca cc::LayerTreeHost::RequestMainFrameUpdate() #58 0x7f19eb5bc107 cc::ProxyMain::BeginMainFrame() #59 0x7f19eb5b8d8e _ZN4base8internal13FunctorTraitsIMN2cc9ProxyMainEFvNSt3__110unique_ptrINS2_28BeginMainFrameAndCommitStateENS4_14default_deleteIS6_EEEEEvE6InvokeINS_7WeakPtrIS3_EEJS9_EEEvSB_OT_DpOT0_ #60 0x7f19eb5b8b85 _ZN4base8internal12InvokeHelperILb1EvE8MakeItSoIMN2cc9ProxyMainEFvNSt3__110unique_ptrINS4_28BeginMainFrameAndCommitStateENS6_14default_deleteIS8_EEEEENS_7WeakPtrIS5_EEJSB_EEEvOT_OT0_DpOT1_ #61 0x7f19eb5b8a36 _ZN4base8internal7InvokerINS0_9BindStateIMN2cc9ProxyMainEFvNSt3__110unique_ptrINS3_28BeginMainFrameAndCommitStateENS5_14default_deleteIS7_EEEEEJNS_7WeakPtrIS4_EENS0_13PassedWrapperISA_EEEEEFvvEE7RunImplISC_NS5_5tupleIJSE_SG_EEEJLm0ELm1EEEEvOT_OT0_NS5_16integer_sequenceImJXspT1_EEEE r8: fffffffffffffed8 r9: fffffffffffffec8 r10: 0000000000000008 r11: 0000000000000202 r12: 000055ee7fe67a9b r13: 00007ffc648cc810 r14: 0000000000000000 r15: 0000000000000000 di: 0000000000000001 si: 0000000000000001 bp: 00007ffc648c2680 bx: 0000163169756700 dx: 0000000000000006 ax: 0000000000000000 cx: 00007f19d846ec37 sp: 00007ffc648c2548 ip: 00007f19d846ec37 efl: 0000000000000202 cgf: 0000000000000033 erf: 0000000000000000 trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000 [end of stack trace] Calling _exit(1). Core file will not be generated.
,
Aug 24 2017
,
Aug 24 2017
,
Aug 24 2017
Cannot repoduce on Samus w/ CrOS 9873.0.0.
,
Aug 24 2017
I thing it only happen in debug mode.
,
Aug 24 2017
Use --args="$GN_ARGS dcheck_always_on=true" to generate args.gn to allow DCHECK when building Chromium. Follow the steps, wait a few seconds and the problem may happen.
,
Aug 25 2017
wangxianzhu@, could you take a look? I presume this is a check failure you might understand. Is this P1 because it affecting the ability to develop the internal pages?
,
Aug 28 2017
I think it is OK. Just avoid to open the source tab.
,
Aug 28 2017
,
Oct 11 2017
chungsheng@ can you still reproduce this bug on ChromeOS ToT? I can't reproduce on Chrome Linux ToT with dcheck on.
,
Oct 11 2017
,
Oct 11 2017
Never mind #12. I reproduced this bug on Mac Retina, and on Linux with --enable-prefer-compositing-to-lcd-text --enable-blink-features=OverlayScrollbars. This is related to composited scrolling and overlay scrollbars. The crash occurs when the overlay scrollbar ends its disappearance animation. Raising priority because this also affects normal web pages.
,
Oct 12 2017
This reduced test case can reproduce the issue (without any command line switches):
<!DOCTYPE html>
<div id="target" style="overflow: scroll; will-change: transform; width: 100px; height: 100px">
<div id="content" style="width: 200px; height: 200px; background: blue"></div>
</div>
<script>
function repaintTest() {
target.style.pointerEvents = 'none';
}
onload = function() {
target.scrollTop = 50;
setTimeout(repaintTest, 500);
}
</script>
,
Oct 13 2017
Hitting this on CrOS. Is there a workaround?
,
Oct 13 2017
You can disable that DCHECK or apply https://chromium-review.googlesource.com/c/chromium/src/+/717028 locally.
,
Oct 16 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9ba22278e4707ce05a237a720aa2f993e99353d9 commit 9ba22278e4707ce05a237a720aa2f993e99353d9 Author: Xianzhu Wang <wangxianzhu@chromium.org> Date: Mon Oct 16 21:13:07 2017 Invalidate layer when its composited scrolling status changed When a composited scrolling layer's object is set 'pointer-events:none', the layer will no longer use composited scrolling (though it is still composited). This is controlled by ComputedStyle::VisibleToHitTesting(). When this happens, no other conditions trigger invalidation of the layer. Now invalidate a layer when its composited scrolling status changed. Bug: 758474 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: I3c01a543a5424d8c746e901047abc606874e0290 Reviewed-on: https://chromium-review.googlesource.com/717028 Reviewed-by: Philip Rogers <pdr@chromium.org> Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/heads/master@{#509172} [modify] https://crrev.com/9ba22278e4707ce05a237a720aa2f993e99353d9/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [add] https://crrev.com/9ba22278e4707ce05a237a720aa2f993e99353d9/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.html [add] https://crrev.com/9ba22278e4707ce05a237a720aa2f993e99353d9/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.txt [add] https://crrev.com/9ba22278e4707ce05a237a720aa2f993e99353d9/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling.html [modify] https://crrev.com/9ba22278e4707ce05a237a720aa2f993e99353d9/third_party/WebKit/LayoutTests/paint/invalidation/destroy-composited-scrollbar-expected.txt [modify] https://crrev.com/9ba22278e4707ce05a237a720aa2f993e99353d9/third_party/WebKit/Source/core/paint/compositing/GraphicsLayerUpdater.cpp [modify] https://crrev.com/9ba22278e4707ce05a237a720aa2f993e99353d9/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
,
Oct 16 2017
,
Oct 16 2017
,
Oct 16 2017
,
Oct 17 2017
,
Oct 18 2017
Your change meets the bar and is auto-approved for M63. Please go ahead and merge the CL to branch 3239 manually. Please contact milestone owner if you have questions. Owners: cmasso@(Android), cmasso@(iOS), gkihumba@(ChromeOS), govind@(Desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Oct 18 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2dcf849261ba18c1a56cc0d11ffc9e3c46fdfd9e commit 2dcf849261ba18c1a56cc0d11ffc9e3c46fdfd9e Author: Xianzhu Wang <wangxianzhu@chromium.org> Date: Wed Oct 18 17:05:38 2017 Invalidate layer when its composited scrolling status changed When a composited scrolling layer's object is set 'pointer-events:none', the layer will no longer use composited scrolling (though it is still composited). This is controlled by ComputedStyle::VisibleToHitTesting(). When this happens, no other conditions trigger invalidation of the layer. Now invalidate a layer when its composited scrolling status changed. TBR=wangxianzhu@chromium.org (cherry picked from commit 9ba22278e4707ce05a237a720aa2f993e99353d9) Bug: 758474 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: I3c01a543a5424d8c746e901047abc606874e0290 Reviewed-on: https://chromium-review.googlesource.com/717028 Reviewed-by: Philip Rogers <pdr@chromium.org> Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#509172} Reviewed-on: https://chromium-review.googlesource.com/726379 Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/branch-heads/3239@{#53} Cr-Branched-From: adb61db19020ed8ecee5e91b1a0ea4c924ae2988-refs/heads/master@{#508578} [modify] https://crrev.com/2dcf849261ba18c1a56cc0d11ffc9e3c46fdfd9e/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [add] https://crrev.com/2dcf849261ba18c1a56cc0d11ffc9e3c46fdfd9e/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.html [add] https://crrev.com/2dcf849261ba18c1a56cc0d11ffc9e3c46fdfd9e/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling-expected.txt [add] https://crrev.com/2dcf849261ba18c1a56cc0d11ffc9e3c46fdfd9e/third_party/WebKit/LayoutTests/paint/invalidation/compositing/pointer-events-composited-scrolling.html [modify] https://crrev.com/2dcf849261ba18c1a56cc0d11ffc9e3c46fdfd9e/third_party/WebKit/LayoutTests/paint/invalidation/destroy-composited-scrollbar-expected.txt [modify] https://crrev.com/2dcf849261ba18c1a56cc0d11ffc9e3c46fdfd9e/third_party/WebKit/Source/core/paint/compositing/GraphicsLayerUpdater.cpp [modify] https://crrev.com/2dcf849261ba18c1a56cc0d11ffc9e3c46fdfd9e/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
,
Oct 18 2017
,
Oct 20 2017
,
Oct 20 2017
|
|||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||
Comment 1 by chungsheng@google.com
, Aug 24 2017