New issue
Advanced search Search tips

Issue 766173 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 764248
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

Segfault after Mac overscroll navigation with scroll-latching and OOPIFs

Project Member Reported by mcnee@chromium.org, Sep 18 2017

Issue description

Chrome Version: 63.0.3217.0
OS: Mac

What steps will reproduce the problem?
(1) Ensure scroll-latching is enabled (TouchpadAndWheelScrollLatching feature) and run chrome with --site-per-process
(2) Visit a page with an OOPIF e.g. http://csreis.github.io/tests/cross-site-iframe-simple.html
(3) With the mouse cursor inside the OOPIF, scroll to navigate back

Shortly after navigation, we segfault.



 

Comment 1 by mcnee@chromium.org, Sep 18 2017

Owner: sahel@chromium.org
Status: Assigned (was: Available)

Comment 2 by sahel@chromium.org, Sep 19 2017

I tried to reproduce the bug, but here is what I got:

When latching is disabled and --site-per-process is enabled, back navigation from inside oopif doesn't work at all. I tried back navigating out of the oopif and it worked.

When latching and --site-per-process are both enabled, back navigation from inside oopif works and no crashes happen after navigation, I also tried a combination of scrolling and the navigation, the issue was the same.

It would help me a lot if you attach the trace.
It might be similar to 764248 where wheel_target_ gets destroyed before the wheel end event is sent. (Wheel end event is sent 100ms after the last wheel event.)

Comment 3 by mcnee@chromium.org, Sep 19 2017

Cc: wjmaclean@chromium.org
Mergedinto: 764248
Status: Duplicate (was: Assigned)
Yeah, clearing |wheel_target_| when the view is destroyed fixes the segfault.

However, even with that fix, I notice that after navigating we DCHECK if we try to scroll the page.
DCHECK(!is_in_gesture_scroll_[gesture_event.source_device]);
https://cs.chromium.org/chromium/src/content/browser/renderer_host/render_widget_host_impl.cc?rcl=1ac5b7741ff7b1b9bd8d1d4a91770e1ee1b5b893&l=1193
where the GSB comes from MouseWheelEventQueue::SendScrollBegin.

Presumably, the root RWH is in a gesture scroll when the child is destroyed and the child doesn't generate the necessary GSE to bubble to the root, so the root still thinks it's in a gesture scroll after the navigation.

Sign in to add a comment