Closed mohsen2986 closed 1 year ago
Hmm, sounds like you're attaching a track beyond its lifecycle. Not sure if there's anything we can do on our end to fix this. Make sure you're not holding on to tracks locally and attempting to attach them when they're no longer valid.
Facing this issue on internet disconnection and reconnection non repeatitive
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)
@gerasanchit Please file a new issue with detailed repro steps.
hi @davidzhao already added here https://github.com/livekit/client-sdk-android/issues/442
Thanks @gerasanchit
we got huge crash error on MediaStreamTrack has been disposed! our crash reporter , record big number of crash on VideoTrack. i dont know how it produce :(
here is reported logs:
java.lang.IllegalStateException: MediaStreamTrack has been disposed. at org.webrtc.MediaStreamTrack.checkMediaStreamTrackExists(MediaStreamTrack.java:13) at org.webrtc.MediaStreamTrack.getNativeMediaStreamTrack(MediaStreamTrack.java) at org.webrtc.VideoTrack.addSink(VideoTrack.java:23) at io.livekit.android.room.track.VideoTrack.addRenderer(VideoTrack.java:14) at io.livekit.android.compose.VideoRendererKt.VideoRenderer$setupVideoIfNeeded(VideoRendererKt.java:27) at io.livekit.android.compose.VideoRendererKt.access$VideoRenderer$setupVideoIfNeeded(VideoRendererKt.java) at io.livekit.android.compose.VideoRendererKt$VideoRenderer$4.invoke(VideoRendererKt$VideoRenderer.java:23) at io.livekit.android.compose.VideoRendererKt$VideoRenderer$4.invoke(VideoRendererKt$VideoRenderer.java:2) at androidx.compose.ui.viewinterop.ViewFactoryHolder.setFactory(ViewFactoryHolder.java:13) at androidx.compose.ui.viewinterop.AndroidView_androidKt$AndroidView$1.invoke(AndroidView_androidKt$AndroidView.java:13) at androidx.compose.ui.viewinterop.AndroidView_androidKt$AndroidView$1.invoke(AndroidView_androidKt$AndroidView.java) at androidx.compose.ui.viewinterop.AndroidView_androidKt$AndroidView$$inlined$ComposeNode$1.invoke(AndroidView_androidKt$AndroidView$$inlined$ComposeNode.java:2) at androidx.compose.runtime.ComposerImpl$createNode$2.invoke(ComposerImpl$createNode.java:17) at androidx.compose.runtime.ComposerImpl$createNode$2.invoke(ComposerImpl$createNode.java:6) at androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke(ComposerImpl$recordInsert.java:36) at androidx.compose.runtime.ComposerImpl$recordInsert$2.invoke(ComposerImpl$recordInsert.java:6) at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(CompositionImpl.java:60) at androidx.compose.runtime.CompositionImpl.applyChanges(CompositionImpl.java:5) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer$runRecomposeAndApplyChanges$2.java:174) at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer$runRecomposeAndApplyChanges$2.java:6) at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock$withFrameNanos$2$callback.java:10) at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.java:33) at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.java) at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher$dispatchCallback.java:16) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:994) at android.view.Choreographer.doCallbacks(Choreographer.java:794) at android.view.Choreographer.doFrame(Choreographer.java:725) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:981) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:7948) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075) Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException