tinycreative / react-native-intercom

React Native wrapper for Intercom.io
MIT License
407 stars 280 forks source link

Crash from intercom sdk with IndexOutOfBoundsException #443

Closed Rehubbard closed 2 years ago

Rehubbard commented 3 years ago

We've been seeing crashes in our crash reporting service (Appcenter) with an IndexOutOfBoundsException and the intercom sdk is in the stacktrace. As you can see below it seems to be caused by io.intercom.android.sdk.conversation.ConversationPartAdapter

Crash log for an example:

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 79(offset:79).state:80
androidx.recyclerview.widget.RecyclerView{396259d VFED..... ........ 0,246-1080,1208 #7f08009e app:id/conversation_list}, adapter:io.intercom.android.sdk.conversation.ConversationPartAdapter@83640c7, layout:androidx.recyclerview.widget.LinearLayoutManager@7c066f4, context:io.intercom.android.sdk.activities.IntercomMessengerActivity@71989bb
  at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6183)
  at androidx.recyclerview.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:288)
  at androidx.recyclerview.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:345)
  at androidx.recyclerview.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:361)
  at androidx.recyclerview.widget.GapWorker.prefetch(GapWorker.java:368)
  at androidx.recyclerview.widget.GapWorker.run(GapWorker.java:399)
  at android.os.Handler.handleCallback(Handler.java:883)
  at android.os.Handler.dispatchMessage(Handler.java:100)
  at android.os.Looper.loop(Looper.java:214)
  at android.app.ActivityThread.main(ActivityThread.java:7397)
  at java.lang.reflect.Method.invoke(Method.java:-2)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)

There is a similar crash happening much more frequently on iOS. The iOS crash logs are more cryptic, so I won't post here. I've tried to track it down and reproduce, but haven't had any success. I believe its related to the above crash on Android.

Is anybody else experiencing this?

PieterPicup commented 2 years ago

@browniefed Why was this closed? I have been going through my logs also and there are many of these types of crashes coming from multiple different places.

Fatal Exception: java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionPartViewHolder{14bedde position=11 id=-1, oldPos=-1, pLpos:-1 no parent} androidx.recyclerview.widget.RecyclerView{5493787 VFED..... ......ID 0,120-540,473 #7f0a014e app:id/conversation_list}, adapter:io.intercom.android.sdk.conversation.ConversationPartAdapter@e6970b6, layout:androidx.recyclerview.widget.LinearLayoutManager@600a1b7, context:io.intercom.android.sdk.activities.IntercomMessengerActivity@eeadc62
       at androidx.recyclerview.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:6156)
       at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6339)
       at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
       at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
       at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2330)
       at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1631)
       at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
       at androidx.recyclerview.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1395)
       at androidx.recyclerview.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:1136)
       at androidx.recyclerview.widget.RecyclerView.scrollStep(RecyclerView.java:1972)
       at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5476)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
       at android.view.Choreographer.doCallbacks(Choreographer.java:723)
       at android.view.Choreographer.doFrame(Choreographer.java:655)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
       at android.os.Handler.handleCallback(Handler.java:790)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6543)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
browniefed commented 2 years ago

This package has been deprecated. Intercom has released an official package for React Native. Please use it.

https://github.com/intercom/intercom-react-native