Application Crash: MessageList.toList

[Problem/Question]
Recently, I upgraded the sendbird-uikit-sdk version to v3.23.0. However, after upgrading the version of sendbird-uikit, the application is crashing for some users after launching FeedNotificationChannelActivity.


[UIKit Version]
v3.23.0

[Reproduction Steps]

          Fatal Exception: java.util.ConcurrentModificationException:
       at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1212)
       at java.util.TreeMap$KeyIterator.next(TreeMap.java:1266)
       at java.util.AbstractCollection.toArray(AbstractCollection.java:141)
       at java.util.ArrayList.<init>(ArrayList.java:191)
       at kotlin.collections.CollectionsKt___CollectionsKt.toMutableList(_Collections.kt:1335)
       at com.sendbird.uikit.model.MessageList.toList(MessageList.kt:49)
       at com.sendbird.uikit.vm.FeedNotificationChannelViewModel.notifyDataSetChanged(FeedNotificationChannelViewModel.java:324)
       at com.sendbird.uikit.vm.FeedNotificationChannelViewModel.notifyDataSetChanged(FeedNotificationChannelViewModel.java:310)
       at com.sendbird.uikit.vm.FeedNotificationChannelViewModel$2.onMessagesUpdated(FeedNotificationChannelViewModel.java:392)
       at com.sendbird.uikit.vm.FeedNotificationChannelViewModel$2.onMessagesUpdated(FeedNotificationChannelViewModel.java:369)
       at com.sendbird.android.collection.BaseMessageCollection$notifyMessagesUpdated$1.invoke(BaseMessageCollection.kt:770)
       at com.sendbird.android.collection.BaseMessageCollection$notifyMessagesUpdated$1.invoke(BaseMessageCollection.kt:757)
       at com.sendbird.android.internal.utils.ConstantsKt.runOnThreadOption$lambda-0(Constants.kt:20)
       at com.sendbird.android.internal.main.Options$runOnThreadOption$1.invoke(Options.kt:49)
       at com.sendbird.android.internal.main.Options$runOnThreadOption$1.invoke(Options.kt:49)
       at com.sendbird.android.auth.internal.utils.AuthConstantsKt.runOnUiThread$lambda-0(AuthConstants.kt:30)
       at android.os.Handler.handleCallback(Handler.java:938)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:268)
       at android.app.ActivityThread.main(ActivityThread.java:8017)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:627)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997)
       at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
       at java.lang.Thread.getStackTrace(Thread.java:1736)
       at com.sendbird.android.internal.utils.ConstantsKt.runOnThreadOption(Constants.kt:14)
       at com.sendbird.android.collection.BaseMessageCollection.notifyMessagesUpdated(BaseMessageCollection.kt:757)
       at com.sendbird.android.collection.BaseMessageCollection.notifyMessagesUpdated$default(BaseMessageCollection.kt:740)
       at com.sendbird.android.collection.NotificationCollection.updateAllNotificationMessageStatusBefore(NotificationCollection.kt:150)
       at com.sendbird.android.collection.NotificationCollection.access$updateAllNotificationMessageStatus(NotificationCollection.kt:33)
       at com.sendbird.android.collection.NotificationCollection.access$updateAllNotificationMessageStatusBefore(NotificationCollection.kt:33)
       at com.sendbird.android.collection.NotificationCollection$registerEventHandler$1.onMyLastReadUpdated(NotificationCollection.kt:112)
       at com.sendbird.android.internal.channel.ChannelManager$handleMyLastReadUpdated$1.invoke(ChannelManager.kt:606)
       at com.sendbird.android.internal.channel.ChannelManager$handleMyLastReadUpdated$1.invoke(ChannelManager.kt:606)
       at com.sendbird.android.internal.utils.ThreadOptionBroadcaster.broadcast(ThreadOptionBroadcaster.kt:15)
       at com.sendbird.android.internal.channel.ChannelManager.broadcastFeedInternal$sendbird_release(ChannelManager.kt:1069)
       at com.sendbird.android.internal.channel.ChannelManager.handleMyLastReadUpdated$sendbird_release(ChannelManager.kt:606)
       at com.sendbird.android.channel.FeedChannel.notifyMyLastReadUpdated(FeedChannel.kt:180)
       at com.sendbird.android.channel.FeedChannel.markAsRead$lambda-7(FeedChannel.kt:224)
       at com.sendbird.android.auth.network.RequestQueueImpl.send$lambda-7(RequestQueueImpl.kt:196)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:923)
        

[Frequency]
Although not a common occurrence, this particular case is experiencing a crash.

[Current impact]
Users are unable to access FeedNotificationChannelActivity, which currently displays the entire notification feed on this screen.