New issue
Advanced search Search tips

Issue 880388 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 3
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 1
Type: Bug



Sign in to add a comment

100%-repro DCHECK in intersection_geometry.cc with overlay scrollbars

Project Member Reported by a...@chromium.org, Sep 4

Issue description

Repro stolen from bug 880211.

Test URL: https://www.google.com/intl/en-GB/gmail/about/#
	       
What steps will reproduce the problem?
1. Launch chrome, navigate to the above Test URL and open dev-tools.
2. Dock dev-tool window to bottom and navigate to Audit.
3. Click on 'Run Audits' and observe the emulated window while audit is running.

See the video attached to that bug if you're unsure.

When you follow these steps, you get a 100% reproducible renderer crash:

[38957:775:0904/123206.337106:FATAL:intersection_geometry.cc(171)] Check failed: frame_view->ShouldThrottleRendering() || !layout_view || !(layout_view->NeedsPaintPropertyUpdate() || layout_view->DescendantNeedsPaintPropertyUpdate()). 
0   libbase.dylib                       0x00000001286d30de base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x00000001286d319d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x00000001282bb81c base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x000000012832810c logging::LogMessage::~LogMessage() + 460
4   libbase.dylib                       0x0000000128325d05 logging::LogMessage::~LogMessage() + 21
5   libblink_core.dylib                 0x00000001599d5d6a blink::IntersectionGeometry::ClipToRoot() + 378
6   libblink_core.dylib                 0x00000001599d6618 blink::IntersectionGeometry::ComputeGeometry() + 360
7   libblink_core.dylib                 0x000000015991527b blink::IntersectionObservation::ComputeIntersectionObservations(double) + 635
8   libblink_core.dylib                 0x0000000159918131 blink::IntersectionObserver::ComputeIntersectionObservations() + 449
9   libblink_core.dylib                 0x000000015992317b blink::IntersectionObserverController::ComputeTrackedIntersectionObservations() + 427
10  libblink_core.dylib                 0x000000015919a384 blink::LocalFrameView::UpdateViewportIntersectionsForSubtree() + 148
11  libblink_core.dylib                 0x00000001591986c8 blink::LocalFrameView::UpdateLifecyclePhases(blink::DocumentLifecycle::LifecycleState) + 1400
12  libblink_core.dylib                 0x0000000159198142 blink::LocalFrameView::UpdateAllLifecyclePhases() + 50
13  libblink_core.dylib                 0x0000000159f71b85 blink::PageAnimator::UpdateAllLifecyclePhases(blink::LocalFrame&) + 85
14  libblink_core.dylib                 0x0000000159f7ab90 blink::PageWidgetDelegate::UpdateLifecycle(blink::Page&, blink::LocalFrame&, blink::WebWidget::LifecycleUpdate) + 112
15  libblink_core.dylib                 0x0000000158fd0252 blink::WebViewImpl::UpdateLifecycle(blink::WebWidget::LifecycleUpdate) + 386
16  libblink_core.dylib                 0x0000000158f9806b blink::WebWidget::UpdateAllLifecyclePhases() + 27
17  libblink_core.dylib                 0x0000000158fcf393 blink::WebViewImpl::ResizeViewWhileAnchored(float, float, bool) + 595
18  libblink_core.dylib                 0x0000000158fcf856 blink::WebViewImpl::ResizeWithBrowserControls(blink::WebSize const&, float, float, bool) + 1174
19  libcontent.dylib                    0x0000000132f79e83 content::RenderViewImpl::ResizeWebWidgetForWidget(gfx::Size const&, float, float, bool) + 115
20  libcontent.dylib                    0x0000000132f9eba2 content::RenderWidget::ResizeWebWidget() + 130
21  libcontent.dylib                    0x0000000132f9f4e0 content::RenderWidget::SynchronizeVisualProperties(content::VisualProperties const&) + 816
22  libcontent.dylib                    0x0000000132f99e31 content::RenderWidget::OnSynchronizeVisualProperties(content::VisualProperties const&) + 1297
23  libcontent.dylib                    0x0000000132fb474d void base::DispatchToMethodImpl<content::RenderWidget*, void (content::RenderWidget::*)(content::VisualProperties const&), std::__1::tuple<content::VisualProperties>, 0ul>(content::RenderWidget* const&, void (content::RenderWidget::*)(content::VisualProperties const&), std::__1::tuple<content::VisualProperties>&&, std::__1::integer_sequence<unsigned long, 0ul>) + 157

vmpstr: you added that DCHECK. PTAL. If this is indeed is the cause of bug 880211, please dup that bug in.
 
Cc: chrishtr@chromium.org
Components: Blink>Paint
Components: -Blink>Paint Blink>Layout
Owner: szager@chromium.org
Ping; can you look at this 100% repro DCHECK?
I can't reproduce this at tip of tree. I will try building the version mentioned in the other bug, but in the mean time, can you let me know if you can still reproduce it at tip of tree?
This is still 100% reproable at ToT, 3e6c0cd82b03.

Please let me know if you need help reproducing it. Please watch the video on bug 880211 to help make it clear what the issue is.
I can reproduce this assert by a html that contains a scrollable iframe. This case layout_view->DescendantNeedsPaintPropertyUpdate() returns true due to a SetNeedsPaintPropertyUpdate() call in  PaintLayerScrollableArea::ScrollbarVisibilityChanged().

So, I assume this is a macOS specific issue due to the auto hiding scrollbar of the iframe. I tried this with the 69 version of the chromium and haven't tried ToT yet.
Cc: szager@chromium.org
 Issue 889700  has been merged into this issue.
avi@, are you using a Mac laptop with a trackpad to reproduce this? If so, can I ask you to plug a mouse in and see if it still reproduces?

Comment #6 suggests that the problem is related to overlay scrollbars. On Mac, overlay scrollbars are enabled when there's only a trackpad, bug disabled when a mouse is plugged in.
I repro this on my work Mac Pro which has both a trackpad *and* a mouse attached.
re comment #9, are overlay scrollbars enabled when you reproduce it?

Comment 11 Deleted

I just checked. I have force-enabled overlay scrollbars, and you are right. If I switch to non-overlay scrollbars, the CHECK goes away.
This strikes even on just loading pages like chrome://settings/people .
Summary: 100%-repro DCHECK in intersection_geometry.cc with overlay scrollbars (was: 100%-repro DCHECK in intersection_geometry.cc)
Ping? Can you please take a look, as having a 100% repro DCHECK for default machine configurations makes life difficult for Mac Chromium devs.
I've been looking into this, but I'm still unable to reproduce this, even on a Macbook with trackpad.
I'm running 10.11. Dunno if that matters.
Avi, I am on MacOS 10.13.6 on an 15in Macbook Pro and am unable to reproduce this using your instructions.

When you said "I have force-enabled overlay scrollbars", do you mean you have "System Preferences > General > Show scroll bars > "Automatically based on mouse or trackpad" selected?

You said "this reproduces on your Mac Pro with "a trackpad *and* a mouse attached." Does this go away if you have only the mouse plugged in (or paired)? What about if you have only the trackpad plugged in (or paired)?

Are you moving your cursor when this occurs (as in the repro video) or are you leaving it over the "run audits" button?

Does this crash on a non-dcheck build or is it only DCHECK failure?

Does this crash with default chrome settings? Aka, launch with --user-data-dir=/tmp/newdirectory
> When you said "I have force-enabled overlay scrollbars", do you mean you have "System Preferences > General > Show scroll bars > "Automatically based on mouse or trackpad" selected?

No. There are two non-automatic settings, "When scrolling" which uses overlay scrollers, and "Always" which uses classic scrollers. I have "When scrolling" selected, so I always have overlay scrollers.

> You said "this reproduces on your Mac Pro with "a trackpad *and* a mouse attached." Does this go away if you have only the mouse plugged in (or paired)? What about if you have only the trackpad plugged in (or paired)?

I checked all four combinations of input devices (trackpad yes/no, mouse yes/no) and it makes no difference.

> Are you moving your cursor when this occurs (as in the repro video) or are you leaving it over the "run audits" button?

I am reproing with chrome://settings/people which DCHECKs in the same way. No mouse movement is needed.

> Does this crash on a non-dcheck build or is it only DCHECK failure?

This is a DCHECK failure only.

> Does this crash with default chrome settings? Aka, launch with --user-data-dir=/tmp/newdirectory

Yes.
Yes. Commenting out that line makes the DCHECK not happen.
avi@, can you un-commment that line and then apply this patch:

https://chromium-review.googlesource.com/c/chromium/src/+/1265831

... and let me know if that fixes it for you?
I added comments to that CL; it doesn't compile for me.
Whoops! Forgot to upload latest patch. Please try again.
Confirmed that it fixes the DCHECK.

Project Member

Comment 26 by bugdroid1@chromium.org, Oct 8

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

commit b75f6ec6f8b552fb25c4aaa320c432a02f51925e
Author: Stefan Zager <szager@chromium.org>
Date: Mon Oct 08 16:30:17 2018

Speculative fix for mac DCHECK failure

BUG= 880388 

Change-Id: Ie1a1c4fcf3ee6dbf7a058fdfdf88c3e84417097c
Reviewed-on: https://chromium-review.googlesource.com/c/1265831
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Stefan Zager <szager@chromium.org>
Cr-Commit-Position: refs/heads/master@{#597582}
[modify] https://crrev.com/b75f6ec6f8b552fb25c4aaa320c432a02f51925e/third_party/blink/renderer/core/scroll/scrollbar_theme_mac.mm

Status: Fixed (was: Assigned)

Sign in to add a comment