Describe the bug
Process: com.taizhen.android.livekitclient.viewer, PID: 20490
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.next(ArrayList.java:860)
at io.livekit.android.room.track.VideoTrack.stop(VideoTrack.kt:43)
at io.livekit.android.room.track.RemoteVideoTrack.stop(RemoteVideoTrack.kt:91)
at io.livekit.android.room.participant.RemoteParticipant.unpublishTrack(RemoteParticipant.kt:184)
at io.livekit.android.room.Room.handleParticipantDisconnect(Room.kt:357)
at io.livekit.android.room.Room.onUpdateParticipants(Room.kt:735)
at io.livekit.android.room.RTCEngine.onParticipantUpdate(RTCEngine.kt:822)
at io.livekit.android.room.SignalClient.handleSignalResponseImpl(SignalClient.kt:621)
at io.livekit.android.room.SignalClient.access$handleSignalResponseImpl(SignalClient.kt:55)
at io.livekit.android.room.SignalClient$onReadyForResponses$1$1$1.emit(SignalClient.kt:215)
at io.livekit.android.room.SignalClient$onReadyForResponses$1$1$1.emit(SignalClient.kt:213)
at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(SharedFlow.kt:382)
at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend(Unknown Source:15)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:100)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Describe the bug Process: com.taizhen.android.livekitclient.viewer, PID: 20490 java.util.ConcurrentModificationException at java.util.ArrayList$Itr.next(ArrayList.java:860) at io.livekit.android.room.track.VideoTrack.stop(VideoTrack.kt:43) at io.livekit.android.room.track.RemoteVideoTrack.stop(RemoteVideoTrack.kt:91) at io.livekit.android.room.participant.RemoteParticipant.unpublishTrack(RemoteParticipant.kt:184) at io.livekit.android.room.Room.handleParticipantDisconnect(Room.kt:357) at io.livekit.android.room.Room.onUpdateParticipants(Room.kt:735) at io.livekit.android.room.RTCEngine.onParticipantUpdate(RTCEngine.kt:822) at io.livekit.android.room.SignalClient.handleSignalResponseImpl(SignalClient.kt:621) at io.livekit.android.room.SignalClient.access$handleSignalResponseImpl(SignalClient.kt:55) at io.livekit.android.room.SignalClient$onReadyForResponses$1$1$1.emit(SignalClient.kt:215) at io.livekit.android.room.SignalClient$onReadyForResponses$1$1$1.emit(SignalClient.kt:213) at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(SharedFlow.kt:382) at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend(Unknown Source:15) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115) at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:100) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Device Info: