Skip to content

Android crash when Rive animation is mounted/unmounted quickly #416

Description

@linean

Hey,

We’re seeing a fairly high-volume crash on Android with rive-react-native 9.5.0.

It seems to happen with a specific loading animation that’s sometimes shown only very briefly (for example during quick transitions). We suspect it might be related to the animation being mounted and then unmounted very quickly, but we haven’t been able to reliably reproduce it locally.

It’s affecting users across all Android OS versions and different devices, no clear pattern.

Stacktrace

java.lang.NullPointerException: Attempt to read from field 'int android.view.View.mViewFlags' on a null object reference in method 'void android.view.ViewGroup.dispatchGetDisplayList()'
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4559)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4587)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4560)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4587)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4560)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4587)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4560)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4587)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4560)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4587)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4560)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4587)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4560)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4587)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4560)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4587)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4560)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4587)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4560)
    at android.view.View.updateDisplayListIfDirty(View.java:22125)
    at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:695)
    at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:701)
    at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:799)
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:4723)
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4424)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3627)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2367)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9232)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1336)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1344)
    at android.view.Choreographer.doCallbacks(Choreographer.java:977)
    at android.view.Choreographer.doFrame(Choreographer.java:890)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1319)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7937)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:569)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1019)

Are there any known issues around view cleanup or lifecycle on Android in 9.5.0?
And is this something that may already be fixed in a newer version?

Happy to test anything or provide more info if needed.

Thanks 🙏

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions