Skip to content

Crash on Android when fast scrolling up #511

Description

@szado

Hello! Thank you for this great library!

Production version crashes when fast scrolling up.
LegendList: 3.3.3
Expo: 55.0.26
RN: 0.83.6

List config:

        <KeyboardAwareLegendList
            data={messages}
            extraData={{
                // ...
            }}
            renderItem={renderItem}
            keyExtractor={item => item.id}
            getItemType={item => item.type}
            onStartReached={onStartReached}
            onStartReachedThreshold={1}
            onEndReached={onEndReached}
            onEndReachedThreshold={1}
            onFirstVisibleItemChanged={onFirstVisibleItemChanged}
            onLoad={onListLoad}
            ref={listRef}
            showsVerticalScrollIndicator={isWeb()}
            style={styles.list}
            estimatedItemSize={props.room.type === 'ClassicText' ? 20 : 50}
            maintainScrollAtEnd={true}
            maintainVisibleContentPosition={{
                data: true,
                size: true,
                shouldRestorePosition: (item) => item !== LIST_HEADER_DUMMY_MESSAGE,
            }}
            maintainScrollAtEndThreshold={0.2}
            alignItemsAtEnd={true}
            initialScrollIndex={initialScrollIndex}
            initialScrollAtEnd={!initialScrollIndex}
            recycleItems={true}
        />

Error:

07-27 01:34:48.792 11753 11753 E AndroidRuntime: FATAL EXCEPTION: main
07-27 01:34:48.792 11753 11753 E AndroidRuntime: Process: xxx, PID: 11753
07-27 01:34:48.792 11753 11753 E AndroidRuntime: java.lang.NullPointerException: Attempt to read from field 'int android.view.View.mViewFlags' on a null object reference in method 'void android.view.ViewGroup.dispatchDraw(android.graphics.Canvas)'
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4316)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.kt:914)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.draw(View.java:23911)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at com.facebook.react.views.view.ReactViewGroup.draw(ReactViewGroup.kt:906)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22775)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4540)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4513)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.View.updateDisplayListIfDirty(View.java:22731)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:694)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:700)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:798)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewRootImpl.draw(ViewRootImpl.java:4965)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4669)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3840)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2483)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9340)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1429)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1438)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.Choreographer.doCallbacks(Choreographer.java:1037)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.Choreographer.doFrame(Choreographer.java:965)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1412)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:958)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.os.Looper.loopOnce(Looper.java:205)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:294)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:8223)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
07-27 01:34:48.792 11753 11753 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:977)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions