New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 758474 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 1
Type: Bug



Sign in to add a comment

DCHECK failure when composited scrolling layer gets pointer-events: none

Project Member Reported by chungsheng@google.com, Aug 24 2017

Issue description

Chrome 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.
 
Cc: chungsheng@chromium.org
Cc: -chungsheng@chromium.org
Owner: chungsheng@chromium.org
Owner: chungsheng@google.com
Cannot repoduce on Samus w/ CrOS 9873.0.0.
I thing it only happen in debug mode.

Comment 6 Deleted

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.
Cc: chungsheng@google.com
Components: -Blink Blink>Paint>Invalidation
Labels: -Pri-1 BugSource-Chromium PaintTeamTriaged-20170825 Pri-2
Owner: wangxianzhu@chromium.org
Status: Assigned (was: Available)
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?

Comment 9 Deleted

I think it is OK.
Just avoid to open the source tab.
Description: Show this description
Labels: OS-Windows
chungsheng@ can you still reproduce this bug on ChromeOS ToT? I can't reproduce on Chrome Linux ToT with dcheck on.
Cc: wangxianzhu@chromium.org
 Issue 773818  has been merged into this issue.
Labels: -Pri-2 OS-Linux OS-Mac Pri-1
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.
Summary: DCHECK failure when composited scrolling layer gets pointer-events: none (was: Developer tools crash at chrome internal pages.)
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>

Hitting this on CrOS. Is there a workaround?
You can disable that DCHECK or apply https://chromium-review.googlesource.com/c/chromium/src/+/717028 locally.
Project Member

Comment 18 by bugdroid1@chromium.org, 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

Labels: Merge-Request-63 M-63
Labels: Merge-Approved-63
Labels: -Merge-Request-63
Labels: -Merge-Approved-63 Merge-Request-63
Project Member

Comment 23 by sheriffbot@chromium.org, Oct 18 2017

Labels: -Merge-Request-63 Hotlist-Merge-Approved Merge-Approved-63
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
Project Member

Comment 24 by bugdroid1@chromium.org, Oct 18 2017

Labels: -merge-approved-63 merge-merged-3239
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

Status: Fixed (was: Assigned)

Comment 26 by dgn@chromium.org, Oct 20 2017

Blockedon: 776684
Blockedon: -776684

Sign in to add a comment