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

Android crash: java.util.ConcurrentModificationException at com.swmansion.reanimated.ReanimatedPackage.createUIManager

Open muthuganesan opened this issue 1 year ago • 4 comments

Description

java.util.ConcurrentModificationException at java.util.ArrayList$Itr.next(ArrayList.java:860) at com.facebook.react.uimanager.UIManagerModuleConstantsHelper.createConstants(UIManagerModuleConstantsHelper.java:32) at com.facebook.react.uimanager.UIManagerModule.createConstants(UIManagerModule.java:24) at com.facebook.react.uimanager.UIManagerModule.(UIManagerModule.java:46) at com.facebook.react.uimanager.ReanimatedUIManager.(ReanimatedUIManager.java:5) at com.swmansion.reanimated.ReanimatedPackage.createUIManager(ReanimatedPackage.java:23) at com.swmansion.reanimated.ReanimatedPackage.getModule(ReanimatedPackage.java:22) at com.facebook.react.TurboReactPackage$ModuleHolderProvider.get(TurboReactPackage.java:6) at com.facebook.react.TurboReactPackage$ModuleHolderProvider.get(TurboReactPackage.java:0) at com.facebook.react.bridge.ModuleHolder.create(ModuleHolder.java:67) at com.facebook.react.bridge.ModuleHolder.getModule(ModuleHolder.java:20) at com.facebook.react.bridge.NativeModuleRegistry.getModule(NativeModuleRegistry.java:31) at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:29) at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:4) at com.facebook.react.uimanager.UIManagerHelper.getUIManager(UIManagerHelper.java:86) at com.facebook.react.uimanager.UIManagerHelper.getUIManager(UIManagerHelper.java:1) at com.facebook.react.ReactInstanceManager.attachRootViewToInstance(ReactInstanceManager.java:20) at com.facebook.react.ReactInstanceManager.attachRootView(ReactInstanceManager.java:36) at com.facebook.react.ReactRootView.attachToReactInstanceManager(ReactRootView.java:79) at com.facebook.react.ReactRootView.onMeasure(ReactRootView.java:148) at android.view.View.measure(View.java:27720) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7352) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:27720) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7352) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:154) at android.view.View.measure(View.java:27720) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7352) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552) at android.widget.LinearLayout.measureVertical(LinearLayout.java:842) at android.widget.LinearLayout.onMeasure(LinearLayout.java:721) at android.view.View.measure(View.java:27720) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7352) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:27720) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7352) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552) at android.widget.LinearLayout.measureVertical(LinearLayout.java:842) at android.widget.LinearLayout.onMeasure(LinearLayout.java:721) at android.view.View.measure(View.java:27720) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7352) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:1380) at android.view.View.measure(View.java:27720) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:4841) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:3426) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3732) 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(Method.java:-1) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

Steps to reproduce

Crash at app launch Caused from react-native-reanimated package as per the crash log It is reproducing in production app only We are using the version "react-native": "~0.68.5"

Note: Came across the similar crash in react-native-firebase and its's fix https://github.com/invertase/react-native-firebase/commit/2a90136cce0db6ca0f253003643f8bd856fd46a0

We may have the similar fix at com.facebook.react.uimanager.UIManagerModuleConstantsHelper.createConstants method, initialize the array list before passing to for loop.

Snack or a link to a repository

https://github.com/software-mansion/react-native-reanimated/blob/main/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java

Reanimated version

2.7.0

React Native version

0.68.5

Platforms

Android

JavaScript runtime

Hermes

Workflow

React Native (without Expo)

Architecture

Paper (Old Architecture)

Build type

Release mode

Device

Real device

Device model

Galaxy S22 Ultra, Galaxy Note20 Ultra 5G, Galaxy S21 Ultra 5G, (Android 13, Android 12, Android 9)

Acknowledgements

Yes

muthuganesan avatar Jul 25 '23 12:07 muthuganesan

Hey! 👋

The issue doesn't seem to contain a minimal reproduction.

Could you provide a snack or a link to a GitHub repository under your username that reproduces the problem?

github-actions[bot] avatar Jul 25 '23 12:07 github-actions[bot]

Same for me: Device: SM-A525M - samsung Galaxy A52 Android: Android 13 React Native: 0.72.5

react-native-reanimated: ^3.5.4 react-native-screens: 3.25.0

java.util.ConcurrentModificationException: null
    at java.util.ArrayList$Itr.next(ArrayList.java:860)
    at com.swmansion.rnscreens.p.B(ScreenStack.kt:20)
    at com.swmansion.rnscreens.p.dispatchDraw(ScreenStack.kt:61)
    at android.view.View.updateDisplayListIfDirty(View.java:23253)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4732)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4704)
    at android.view.View.updateDisplayListIfDirty(View.java:23214)
    at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:777)
    at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:783)
    at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:881)
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:5647)
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5330)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4486)
    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(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

eduduardo avatar Oct 11 '23 16:10 eduduardo

Getting the same crashes being reported on Sentry. Would love some clues as to how to prevent this.

trymbill avatar Apr 06 '24 23:04 trymbill

any updates ?

VikOsadchyi avatar May 07 '24 14:05 VikOsadchyi

same issue

NiccoloCase avatar Jul 09 '24 21:07 NiccoloCase