react-native-screens icon indicating copy to clipboard operation
react-native-screens copied to clipboard

(Android - Crash): FragmentManager is already executing transactions

Open DongGukMon opened this issue 6 months ago • 3 comments

Description

We are encountering the "FragmentManager is already executing transactions" error in the app after installing the latest version of react-native-screens. This same issue was previously discussed in #1506, but it was closed without a clear resolution, so I am reopening the issue. Additionally, I am sharing the issue stack trace and the current version of react-navigation that we are using. Thank you.

 Caused by java.lang.IllegalStateException: FragmentManager is already executing transactions
       at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1931)
       at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1967)
       at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:311)
       at com.swmansion.rnscreens.ScreenContainer.onUpdate(ScreenContainer.kt:415)
       at com.swmansion.rnscreens.ScreenContainer.performUpdates(ScreenContainer.kt:359)
       at com.swmansion.rnscreens.ScreenContainer.performUpdatesNow(ScreenContainer.kt:351)
       at com.swmansion.rnscreens.ScreenContainer.notifyChildUpdate(ScreenContainer.kt:95)
       at com.swmansion.rnscreens.Screen.setActivityState(Screen.kt:156)
       at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:72)
       at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:42)
       at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:24)
       at com.facebook.react.viewmanagers.RNSScreenManagerDelegate.setProperty(RNSScreenManagerDelegate.java:99)
       at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:46)
       at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:77)
       at com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties(NativeViewHierarchyManager.java:142)
       at com.facebook.react.uimanager.UIImplementation.synchronouslyUpdateViewOnUIThread(UIImplementation.java:292)
       at com.facebook.react.uimanager.UIManagerModule.synchronouslyUpdateViewOnUIThread(UIManagerModule.java:327)
       at com.facebook.react.animated.PropsAnimatedNode.updateView(PropsAnimatedNode.java:122)
       at com.facebook.react.animated.NativeAnimatedNodesManager.updateNodes(NativeAnimatedNodesManager.java:744)
       at com.facebook.react.animated.NativeAnimatedNodesManager.handleEvent(NativeAnimatedNodesManager.java:599)
       at com.facebook.react.animated.NativeAnimatedNodesManager.onEventDispatch(NativeAnimatedNodesManager.java:558)
       at com.facebook.react.uimanager.events.EventDispatcherImpl.dispatchEvent(EventDispatcherImpl.java:116)
       at com.facebook.react.views.scroll.ReactScrollViewHelper.emitScrollEvent(ReactScrollViewHelper.java:138)
       at com.facebook.react.views.scroll.ReactScrollViewHelper.emitScrollEvent(ReactScrollViewHelper.java:78)
       at com.facebook.react.views.scroll.ReactScrollViewHelper.updateStateOnScrollChanged(ReactScrollViewHelper.java:482)
       at com.facebook.react.views.scroll.ReactScrollView.onScrollChanged(ReactScrollView.java:390)
       at android.view.View.scrollTo(View.java:20842)
       at android.widget.ScrollView.scrollTo(ScrollView.java:2888)
       at com.facebook.react.views.scroll.ReactScrollView.scrollTo(ReactScrollView.java:1089)
       at android.view.View.scrollBy(View.java:20857)
       at com.facebook.react.views.scroll.ReactScrollView.scrollToChild(ReactScrollView.java:375)
       at com.facebook.react.views.scroll.ReactScrollView.requestChildFocus(ReactScrollView.java:347)
       at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
       at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
       at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
       at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
       at android.view.ViewGroup.requestChildFocus(ViewGroup.java:879)
       at android.view.View.handleFocusGainInternal(View.java:8392)
       at android.view.ViewGroup.handleFocusGainInternal(ViewGroup.java:855)
       at android.view.View.requestFocusNoSearch(View.java:14968)
       at android.view.View.requestFocus(View.java:14942)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3530)
       at android.webkit.WebView.access$901(WebView.java:117)
       at android.webkit.WebView$PrivateAccess.super_requestFocus(WebView.java:2466)
       at com.android.webview.chromium.WebViewChromium.requestFocus(chromium-TrichromeWebViewGoogle6432.aab-stable-653310333:52)
       at android.webkit.WebView.requestFocus(WebView.java:3035)
       at android.widget.ScrollView.onRequestFocusInDescendants(ScrollView.java:2643)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3536)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3531)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:3582)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:3536)
       at android.view.View.requestFocus(View.java:14909)
       at android.view.View.requestFocus(View.java:14851)
       at android.view.View.rootViewRequestFocus(View.java:8584)
       at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5864)
       at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5815)
       at android.view.ViewGroup.removeView(ViewGroup.java:5746)
       at com.swmansion.rnscreens.ScreenContainer.removeView(ScreenContainer.kt:72)
       at androidx.fragment.app.SpecialEffectsController$Operation$State.applyState(SpecialEffectsController.java:452)
       at androidx.fragment.app.DefaultSpecialEffectsController.applyContainerChanges(DefaultSpecialEffectsController.java:743)
       at androidx.fragment.app.DefaultSpecialEffectsController$1.run(DefaultSpecialEffectsController.java:108)
       at androidx.fragment.app.SpecialEffectsController$Operation.complete(SpecialEffectsController.java:695)
       at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete(SpecialEffectsController.java:744)
       at androidx.fragment.app.SpecialEffectsController$Operation.completeSpecialEffect(SpecialEffectsController.java:672)
       at androidx.fragment.app.DefaultSpecialEffectsController$SpecialEffectsInfo.completeSpecialEffect(DefaultSpecialEffectsController.java:776)
       at androidx.fragment.app.DefaultSpecialEffectsController.startAnimations(DefaultSpecialEffectsController.java:147)
       at androidx.fragment.app.DefaultSpecialEffectsController.executeOperations(DefaultSpecialEffectsController.java:120)
       at androidx.fragment.app.SpecialEffectsController.executePendingOperations(SpecialEffectsController.java:297)
       at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2202)
       at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2106)
       at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1971)
       at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:311)
       at com.swmansion.rnscreens.ScreenContainer.onUpdate(ScreenContainer.kt:415)
       at com.swmansion.rnscreens.ScreenContainer.performUpdates(ScreenContainer.kt:359)
       at com.swmansion.rnscreens.ScreenContainer.performUpdatesNow(ScreenContainer.kt:351)
       at com.swmansion.rnscreens.ScreenContainer.notifyChildUpdate(ScreenContainer.kt:95)
       at com.swmansion.rnscreens.Screen.setActivityState(Screen.kt:156)
       at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:70)
       at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:42)
       at com.swmansion.rnscreens.ScreenViewManager.setActivityState(ScreenViewManager.kt:24)
       at com.facebook.react.viewmanagers.RNSScreenManagerDelegate.setProperty(RNSScreenManagerDelegate.java:99)
       at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:46)
       at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:77)
       at com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties(NativeViewHierarchyManager.java:142)
       at com.facebook.react.uimanager.UIImplementation.synchronouslyUpdateViewOnUIThread(UIImplementation.java:292)
       at com.facebook.react.uimanager.UIManagerModule.synchronouslyUpdateViewOnUIThread(UIManagerModule.java:327)
       at com.facebook.react.animated.PropsAnimatedNode.updateView(PropsAnimatedNode.java:122)
       at com.facebook.react.animated.NativeAnimatedNodesManager.updateNodes(NativeAnimatedNodesManager.java:744)
       at com.facebook.react.animated.NativeAnimatedNodesManager.runUpdates(NativeAnimatedNodesManager.java:640)
       at com.facebook.react.animated.NativeAnimatedModule$1.doFrameGuarded(NativeAnimatedModule.java:243)
       at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
       at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
       at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1687)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1698)
       at android.view.Choreographer.doCallbacks(Choreographer.java:1153)
       at android.view.Choreographer.doFrame(Choreographer.java:1069)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1646)
       at android.os.Handler.handleCallback(Handler.java:958)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:230)
       at android.os.Looper.loop(Looper.java:319)
       at android.app.ActivityThread.main(ActivityThread.java:8919)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
"@react-navigation/bottom-tabs": "^6.5.11",
"@react-navigation/elements": "^1.3.21",
"@react-navigation/material-top-tabs": "^6.6.5",
"@react-navigation/native": "^6.1.9",
"@react-navigation/stack": "^6.3.20",

Steps to reproduce

This issue seems to be occurring in very rare cases, affecting about 16 to 17 users out of tens of thousands on a daily basis. Unfortunately, due to the rarity of the issue, I am unable to provide a reproducible test case, and I apologize for that.

Snack or a link to a repository

Screens version

3.34.0

React Native version

0.73.9

Platforms

Android

JavaScript runtime

Hermes

Workflow

React Native (without Expo)

Architecture

Paper (Old Architecture)

Build type

Release mode

Device

Real device

Device model

Samsung Galaxy

Acknowledgements

Yes

DongGukMon avatar Aug 26 '24 01:08 DongGukMon