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

Issue 852995 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Last visit > 30 days ago
Closed: Jun 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug

Blocking:
issue 831359



Sign in to add a comment

Crash toggling incognito mode in Android horizontal tab switcher during scrolling

Project Member Reported by rlanday@chromium.org, Jun 14 2018

Issue description

Caused by https://chromium-review.googlesource.com/c/1096489/: I added this line to NonOverlappingStack#runSwitchAwayAnimation():

startAnimation(0, OverviewAnimationType.UNDISCARD);

Passing 0 for the time causes a crash if this is called during scrolling (we subtract the current time from this and look up a negative value in an array). We need to pass the correct time here.
 
Project Member

Comment 2 by sheriffbot@chromium.org, Jun 14 2018

Labels: -Merge-Request-68 Hotlist-Merge-Review Merge-Review-68
This bug requires manual review: M68 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), kariahda@(iOS), bhthompson@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: M-69 hor-tab-switch
Hit this crash while toggling incognito mode in Horizontal tab switcher but not very consistent 

Crash report: https://crash.corp.google.com/browse?stbtiq=57d7fe30f3933ce9

Build: 69.0.3457.4, Samsung J2 / L


Thread 52java.lang.ArrayIndexOutOfBoundsException: length=101; index=-1414173
at org.chromium.chrome.browser.compositor.layouts.phone.stack.StackScroller$SplineStackScroller.update	(StackScroller.java:708 )
at org.chromium.chrome.browser.compositor.layouts.phone.stack.StackScroller.computeScrollOffset	(StackScroller.java:178 )
at org.chromium.chrome.browser.compositor.layouts.phone.stack.Stack.stopScrollingMovement	(Stack.java:1747 )
at org.chromium.chrome.browser.compositor.layouts.phone.stack.Stack.startAnimation$5154ORRICSNM6Q3IDTMMITBD5THMGSJFDLIIUOJIDTRN6PBI5THMURBGDTPMIT3FE8NMOOBPDTQN8SPFE1K6URJ55TPN8OB3DCNL6T31CDLK2RJ9DLGN8QBFDOI4UTJ5E9R6IPBN85N6IRB1EHKMURIKF5O6AEQ995D2ILG_0	(Stack.java:512 )
at org.chromium.chrome.browser.compositor.layouts.phone.stack.Stack.startAnimation$5154ORRICSNM6Q3IDTMMITBD5THMGSJFDLIIUOJIDTRN6PBI5THMURBGDTPMIT3FE8NMOOBPDTQN8SPFE1K6URJ55TPN8OB3DCNL6T31CDLK2RJ9DLGN8QBFDOI4UTJ5E9R6IPBN85N6IRB1EHKMURIKF5O6AEQ9B8KLC___0	(Stack.java:502 )
at org.chromium.chrome.browser.compositor.layouts.phone.stack.Stack.startAnimation$5154ORRICSNM6Q3IDTMMITBD5THMGSJFDLIIUOJIDTRN6PBI5THMURBGDTPMIT3FE8NMOOBPDTQN8SPFE1K6URJ55TPN8OB3DCNL6T31CDLK2RJ9DLGN8QBFDOI4UTJ5E9R6IPBN85N6IRB1EHKMURIKF5O6AEP9AO______0	(Stack.java:478 )
at org.chromium.chrome.browser.compositor.layouts.phone.stack.NonOverlappingStack.runSwitchAwayAnimation	(NonOverlappingStack.java:345 )
at org.chromium.chrome.browser.compositor.layouts.phone.StackLayout.onTabModelSwitched	(StackLayout.java:122 )
at org.chromium.chrome.browser.compositor.layouts.LayoutManager.tabModelSwitched	(LayoutManager.java:624 )
at org.chromium.chrome.browser.compositor.layouts.LayoutManager$2.onTabModelSelected	(LayoutManager.java:454 )
at org.chromium.chrome.browser.tabmodel.TabModelSelectorBase.selectModel	(TabModelSelectorBase.java:86 )
at org.chromium.chrome.browser.tabmodel.TabModelSelectorImpl.selectModel	(TabModelSelectorImpl.java:230 )
at org.chromium.chrome.browser.ChromeTabbedActivity$$Lambda$3.onClick	(ChromeTabbedActivity.java )
at org.chromium.chrome.browser.toolbar.ToolbarPhone.onClick	(ToolbarPhone.java:603 )
at android.view.View.performClick	(View.java:5106 )
at android.view.View$PerformClick.run	(View.java:20329 )
at android.os.Handler.handleCallback	(Handler.java:739 )
at android.os.Handler.dispatchMessage	(Handler.java:95 )
at android.os.Looper.loop	(Looper.java:135 )
at android.app.ActivityThread.main	(ActivityThread.java:5912 )
at java.lang.reflect.Method.invoke	(Method.java )
at java.lang.reflect.Method.invoke	(Method.java:372 )
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run	(ZygoteInit.java:1405 )
at com.android.internal.os.ZygoteInit.main
Labels: -Hotlist-Merge-Review -Merge-Review-68
I'm actually going to need to change this piece of code again to fix crbug.com/853034, so no need to merge this CL
Project Member

Comment 5 by bugdroid1@chromium.org, Jun 14 2018

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

commit 9671ef021a084c0e97bb5a3f1fb4211cff554ad0
Author: Ryan Landay <rlanday@chromium.org>
Date: Thu Jun 14 23:09:51 2018

Fix crash toggling incognito in Android horizontal tab switcher while scrolling

In https://chromium-review.googlesource.com/c/1096489/, I added this line to
NonOverlappingStack#runSwitchAwayAnimation() to fix another bug (tabs getting
stuck in a partially-discarded state):

startAnimation(0, OverviewAnimationType.UNDISCARD);

It turns out that if this is called while the tabs are scrolling, StackScroller
subtracts the scroller start time from 0 and ends up looking up a negative value
in the SPLINE_POSITION array.

This CL fixes this crash by passing the correct time here.

Bug:  852995 ,831359
Change-Id: I0186cb9180ef4fff84bf1440acdfd87bc63c47f2
Reviewed-on: https://chromium-review.googlesource.com/1101906
Reviewed-by: Matthew Jones <mdjones@chromium.org>
Commit-Queue: Ryan Landay <rlanday@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567464}
[modify] https://crrev.com/9671ef021a084c0e97bb5a3f1fb4211cff554ad0/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/NonOverlappingStack.java

Issue 853022 has been merged into this issue.
Project Member

Comment 7 by bugdroid1@chromium.org, Jun 15 2018

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

commit 39cfa034e47e727f4e099912f07fde3ebc7968eb
Author: Ryan Landay <rlanday@chromium.org>
Date: Fri Jun 15 16:12:07 2018

Fix jerky incognito toggle animation in Android horizontal tab switcher

In https://chromium-review.googlesource.com/1096489, I added a fix for an issue
where a tab could get stuck in a partially-discarded state if you started
dragging it and then tapped the incognito button while you still had your finger
down. Unfortunately, my original fix for the issue, which was to start an
undiscard animation in NonOverlappingStack#runSwitchAwayAnimation(), is a bad
idea, since that animation animates the StackTabs' scroll offsets, conflicting
with the incognito animation, causing animation jankiness.

This CL replaces the call to start the discard animation with a loop that just
sets each tab's scroll offset to 0.

Bug: 853034, 852995 ,831359
Change-Id: I4b6e34bf68afb9ce025e3272c0c0816f84f8b48e
Reviewed-on: https://chromium-review.googlesource.com/1102115
Reviewed-by: Matthew Jones <mdjones@chromium.org>
Commit-Queue: Ryan Landay <rlanday@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567675}
[modify] https://crrev.com/39cfa034e47e727f4e099912f07fde3ebc7968eb/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/NonOverlappingStack.java

Status: Fixed (was: Started)
Project Member

Comment 9 by bugdroid1@chromium.org, Jun 18 2018

Labels: merge-merged-3440
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bf9db77fc6dbd884206a2c02ed590d11e5b693f1

commit bf9db77fc6dbd884206a2c02ed590d11e5b693f1
Author: Ryan Landay <rlanday@chromium.org>
Date: Mon Jun 18 23:23:18 2018

Fix jerky incognito toggle animation in Android horizontal tab switcher

In https://chromium-review.googlesource.com/1096489, I added a fix for an issue
where a tab could get stuck in a partially-discarded state if you started
dragging it and then tapped the incognito button while you still had your finger
down. Unfortunately, my original fix for the issue, which was to start an
undiscard animation in NonOverlappingStack#runSwitchAwayAnimation(), is a bad
idea, since that animation animates the StackTabs' scroll offsets, conflicting
with the incognito animation, causing animation jankiness.

This CL replaces the call to start the discard animation with a loop that just
sets each tab's scroll offset to 0.

TBR=rlanday@chromium.org

(cherry picked from commit 39cfa034e47e727f4e099912f07fde3ebc7968eb)

Bug: 853034, 852995 ,831359
Change-Id: I4b6e34bf68afb9ce025e3272c0c0816f84f8b48e
Reviewed-on: https://chromium-review.googlesource.com/1102115
Reviewed-by: Matthew Jones <mdjones@chromium.org>
Commit-Queue: Ryan Landay <rlanday@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#567675}
Reviewed-on: https://chromium-review.googlesource.com/1105458
Reviewed-by: Ryan Landay <rlanday@chromium.org>
Cr-Commit-Position: refs/branch-heads/3440@{#433}
Cr-Branched-From: 010ddcfda246975d194964ccf20038ebbdec6084-refs/heads/master@{#561733}
[modify] https://crrev.com/bf9db77fc6dbd884206a2c02ed590d11e5b693f1/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/NonOverlappingStack.java

Status: Verified (was: Fixed)
I didnt hit this crash on 68.0.3440.40 - Samsung J1/L, marking it verified.

Sign in to add a comment