Getting its crashlog multiple times in crashanalytics
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:558)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: MediaStreamTrack has been disposed.
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:191)
at io.livekit.android.webrtc.peerconnection.RTCThreadUtilsKt.executeBlockingOnRTCThread(RTCThreadUtils.kt:87)
at io.livekit.android.room.track.VideoTrack.addRenderer(VideoTrack.kt:37)
at io.livekit.android.room.track.RemoteVideoTrack.addRenderer(RemoteVideoTrack.kt:86)
at io.livekit.android.compose.ui.VideoTrackViewKt.VideoTrackView$setupVideoIfNeeded(VideoTrackView.kt:116)
at io.livekit.android.compose.ui.VideoTrackViewKt.access$VideoTrackView$setupVideoIfNeeded(VideoTrackView.kt:1)
at io.livekit.android.compose.ui.VideoTrackViewKt$VideoTrackView$8.invoke(VideoTrackView.kt:159)
at io.livekit.android.compose.ui.VideoTrackViewKt$VideoTrackView$8.invoke(VideoTrackView.kt:141)
at androidx.compose.ui.viewinterop.ViewFactoryHolder$updateBlock$1.invoke(AndroidView.android.kt:367)
at androidx.compose.ui.viewinterop.ViewFactoryHolder$updateBlock$1.invoke(AndroidView.android.kt:367)
at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2299)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:467)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:230)
at androidx.compose.ui.viewinterop.AndroidViewHolder$runUpdate$1.invoke(AndroidViewHolder.android.kt:178)
at androidx.compose.ui.viewinterop.AndroidViewHolder$runUpdate$1.invoke(AndroidViewHolder.android.kt:176)
at androidx.compose.ui.viewinterop.AndroidViewHolder$onCommitAffectingUpdate$1.invoke$lambda$0(AndroidViewHolder.android.kt:173)
at androidx.compose.ui.viewinterop.AndroidViewHolder$onCommitAffectingUpdate$1.$r8$lambda$mF6AO8JmlFeJVsgs3SzniVwxyYo(Unknown Source:0)
at androidx.compose.ui.viewinterop.AndroidViewHolder$onCommitAffectingUpdate$1$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
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:7927)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
Caused by: java.lang.IllegalStateException: MediaStreamTrack has been disposed.
at livekit.org.webrtc.MediaStreamTrack.checkMediaStreamTrackExists(MediaStreamTrack.java:120)
at livekit.org.webrtc.MediaStreamTrack.getNativeMediaStreamTrack(MediaStreamTrack.java:114)
at livekit.org.webrtc.VideoTrack.addSink(VideoTrack.java:40)
at io.livekit.android.room.track.VideoTrack$addRenderer$1.invoke(VideoTrack.kt:39)
at io.livekit.android.room.track.VideoTrack$addRenderer$1.invoke(VideoTrack.kt:37)
at io.livekit.android.webrtc.peerconnection.RTCThreadUtilsKt.executeBlockingOnRTCThread$lambda$1(RTCThreadUtils.kt:87)
at io.livekit.android.webrtc.peerconnection.RTCThreadUtilsKt.$r8$lambda$ix-Gm1lHyeu28BSkgrvFK1qfBnU(Unknown Source:0)
at io.livekit.android.webrtc.peerconnection.RTCThreadUtilsKt$$ExternalSyntheticLambda1.call(D8$$SyntheticClass:0)
Steps to reproduce the behavior:
Used this implementation for initialising and passing track
val trackRefs = rememberTracks()
// Display the video tracks.
// Audio tracks are automatically played.
LazyColumn(modifier = Modifier.fillMaxSize()) {
items(trackRefs.size) { index ->
VideoTrackView(
trackReference = trackRefs[index],
modifier = Modifier.fillParentMaxHeight(0.5f)
)
}
}
Disconnect and reconnect internet
Try this process atleast 10 times to replicate this issue
Expected behavior
App should not crash
Getting its crashlog multiple times in crashanalytics
Steps to reproduce the behavior:
Device Info: