brave / brave-browser

Brave browser for Android, iOS, Linux, macOS, Windows.
https://brave.com
Mozilla Public License 2.0
17.72k stars 2.31k forks source link

Crash when opening/closing tabs in landscape orientation [Tablet] #31934

Closed Uni-verse closed 1 year ago

Uni-verse commented 1 year ago

Description

App is closing unexpectedly when opening/closing tabs in landscape mode. Only able to reproduce this on Android Tablet so far. Reproducible on C115 & C116

2023-07-27 17:03:15.970 981-1018/? I/HYPER-HAL: [ResourceManager.cpp]removeResource(): [CPUMinFreq] RemoveResource Request ID : 857426
2023-07-27 17:03:15.970 1278-1556/? V/WindowManager: Setting visibility of Window{355b449 u0 com.brave.browser_nightly/com.google.android.apps.chrome.Main EXITING}: false, caller=com.android.server.wm.WindowContainer.sendAppVisibilityToClients:1246 com.android.server.wm.WindowToken.setClientVisible:431 com.android.server.wm.ActivityRecord.setClientVisible:7685 com.android.server.wm.ActivityRecord.onAnimationFinished:8584 com.android.server.wm.ActivityRecord.postApplyAnimation:6246 
2023-07-27 17:03:15.970 981-1018/? I/HYPER-HAL: [RequestManager.cpp]releaseLocked(): Released ID : 857426
2023-07-27 17:03:15.970 981-1018/? I/HYPER-HAL: [RequestManager.cpp]acquire(): Acquired ID : 840474  [1278 / 18]    HINT : AMS_RESUME_TAIL    list : 
2023-07-27 17:03:15.970 1278-1556/? W/WindowManager: Exception thrown during dispatchAppVisibility Window{355b449 u0 com.brave.browser_nightly/com.google.android.apps.chrome.Main EXITING}
    android.os.DeadObjectException
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(BinderProxy.java:662)
        at android.view.IWindow$Stub$Proxy.dispatchAppVisibility(IWindow.java:658)
        at com.android.server.wm.WindowState.sendAppVisibilityToClients(WindowState.java:4200)
        at com.android.server.wm.WindowContainer.sendAppVisibilityToClients(WindowContainer.java:1246)
        at com.android.server.wm.WindowToken.setClientVisible(WindowToken.java:431)
        at com.android.server.wm.ActivityRecord.setClientVisible(ActivityRecord.java:7685)
        at com.android.server.wm.ActivityRecord.onAnimationFinished(ActivityRecord.java:8584)
        at com.android.server.wm.ActivityRecord.postApplyAnimation(ActivityRecord.java:6246)
        at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:6218)
        at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:6222)
        at com.android.server.wm.AppTransitionController.handleClosingApps(AppTransitionController.java:1279)
        at com.android.server.wm.AppTransitionController.handleAppTransitionReady(AppTransitionController.java:304)
        at com.android.server.wm.RootWindowContainer.checkAppTransitionReady(RootWindowContainer.java:1182)
        at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:1022)
        at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:950)
        at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:185)
        at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:134)
        at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:123)
        at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:65)
        at android.os.Handler.handleCallback(Handler.java:942)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.os.HandlerThread.run(HandlerThread.java:67)
        at com.android.server.ServiceThread.run(ServiceThread.java:44)
2023-07-27 17:03:15.970 1278-1556/? E/WindowManager: win=Window{355b449 u0 com.brave.browser_nightly/com.google.android.apps.chrome.Main EXITING} destroySurfaces: appStopped=false cleanupOnResume=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0 caller=com.android.server.wm.ActivityRecord.destroySurfaces:6533 com.android.server.wm.ActivityRecord.destroySurfaces:6514 com.android.server.wm.WindowState.onExitAnimationDone:5981 com.android.server.wm.ActivityRecord$$ExternalSyntheticLambda10.accept:2 java.util.ArrayList.forEach:1262 com.android.server.wm.ActivityRecord.onAnimationFinished:8601 com.android.server.wm.ActivityRecord.postApplyAnimation:6246 
2023-07-28 11:34:57.215 23621-23621/? E/cr_LLManagerWrapper: IndexOutOfBoundsException in RecyclerView: 
    java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionQE{42ad5cb position=4 id=-1, oldPos=3, pLpos:3 scrap [attachedScrap] tmpDetached no parent} androidx.recyclerview.widget.RecyclerView{9e81e7c VFE...... ......I. 0,119-2560,1362 #7f010a48 app:id/recyclerview}, adapter:WE@836391f, layout:org.chromium.chrome.browser.brave_news.LinearLayoutManagerWrapper@106f305, context:org.chromium.chrome.browser.ChromeTabbedActivity@d8ba373
        at androidx.recyclerview.widget.b.k(chromium-MonochromePublic6432.aab-canary-425805222:553)
        at Xn1.b(chromium-MonochromePublic6432.aab-canary-425805222:59)
        at androidx.recyclerview.widget.LinearLayoutManager.b1(chromium-MonochromePublic6432.aab-canary-425805222:1)
        at androidx.recyclerview.widget.LinearLayoutManager.N0(chromium-MonochromePublic6432.aab-canary-425805222:49)
        at androidx.recyclerview.widget.LinearLayoutManager.f0(chromium-MonochromePublic6432.aab-canary-425805222:816)
        at org.chromium.chrome.browser.brave_news.LinearLayoutManagerWrapper.f0(chromium-MonochromePublic6432.aab-canary-425805222:3)
        at androidx.recyclerview.widget.RecyclerView.s(chromium-MonochromePublic6432.aab-canary-425805222:361)
        at androidx.recyclerview.widget.RecyclerView.r(chromium-MonochromePublic6432.aab-canary-425805222:64)
        at androidx.recyclerview.widget.RecyclerView.onLayout(chromium-MonochromePublic6432.aab-canary-425805222:8)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at org.chromium.chrome.browser.compositor.CompositorViewHolder.onLayout(chromium-MonochromePublic6432.aab-canary-425805222:6)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at androidx.coordinatorlayout.widget.CoordinatorLayout.t(chromium-MonochromePublic6432.aab-canary-425805222:392)
        at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(chromium-MonochromePublic6432.aab-canary-425805222:47)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
2023-07-28 11:34:57.216 23621-23621/? E/cr_LLManagerWrapper:     at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
        at com.android.internal.policy.DecorView.onLayout(DecorView.java:1432)
        at android.view.View.layout(View.java:24969)
        at android.view.ViewGroup.layout(ViewGroup.java:6784)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:4917)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4240)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3116)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10885)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1301)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1309)
        at android.view.Choreographer.doCallbacks(Choreographer.java:923)
        at android.view.Choreographer.doFrame(Choreographer.java:852)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1283)
        at android.os.Handler.handleCallback(Handler.java:942)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8757)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
2023-07-28 11:34:57.248 1069-3015/? E/NativeCustomFrequencyManager: [NativeCFMS] BpCustomFrequencyManager::acquire()

Steps to reproduce

  1. Install 1.58.52, Chromium 116.0.5845.51
  2. Rotate Android tablet to landscape orientation
  3. Enable brave news (not sure if this is a factor)
  4. Open 5-10 tabs
  5. Close some tabs, open some more tabs

Actual result

Screenshot 2023-07-27 at 4 51 04 PM

https://github.com/brave/brave-browser/assets/17885425/3602be42-e74a-4c5e-bb73-a760726ef383

Expected result

Should not crash

Issue reproduces how often

Easily using STR

Version/Channel Information:

Device details

Brave version

1.58.48, Chromium 115.0.5790.136 - reproducible 1.58.52, Chromium 116.0.5845.51 - reproducible

Website problems only

Additional information

Uni-verse commented 1 year ago

Verified on Samsung Galaxy Tab S7 using version:

Brave   1.58.57 Chromium: 116.0.5845.51 (Official Build) canary (64-bit) 
Revision    6c19156899db69697aa5667a5d61e8cf4a11f2f6
OS  Android 13; Build/TP1A.220624.014; 33; REL
kjozwiak commented 1 year ago

@Uni-verse assuming this was fixed via 1.58.x as per your verification via https://github.com/brave/brave-browser/issues/31934#issuecomment-1660819710 so added the missing milestone. Mind also mentioning which PR fixed the above?