Unity-Technologies / com.unity.webrtc

WebRTC package for Unity
Other
753 stars 191 forks source link

[BUG]: Android Crash (Graphics Device is null) #807

Closed gtk2k closed 2 years ago

gtk2k commented 2 years ago

Package version

2.4.0-exp.10

Environment

* OS: Android 12 (Device: ROG5)
* Unity version: 2022.1.7f1

Steps To Reproduce

  1. https://github.com/gtk2k/StereoCameraStreamer のプロジェクトをUnity で開きます。
  2. AndroidStereoCameraStreamerTest シーンを開き、Android デバイスへ Build & RunボタンクリックでAndroid デバイスで実行します。
  3. StereoCameraReceiverTest シーンを開き、エディターのPlayボタンをクリックしエディターでレシーバーを実行します。 (中央にあるQuadに受信した映像が表示されます)
  4. Playボタンをクリックして停止します。
  5. 再度Playボタンをクリックして、再度ストリーミングの受信を試みます。

Current Behavior

Android 側がクラッシュする。 ただし、Android 側を Develpment Build でビルドして実行した場合はクラッシュは発生しません。 クラッシュ時のエラーログ

Graphics Device is null.
Unity.WebRTC.VideoStreamTrack.Dispose()
Unity.WebRTC.MediaStreamTrack.Finalize()
[ line 142567560]

image

Expected Behavior

クラッシュせずにストリーミングが再開される。

Anything else?

No response

karasusan commented 2 years ago

VideoStreamTrack.Dispose() がデストラクタで呼ばれる際に、別スレッドで呼ばれることが原因かと思います。ワークアラウンドとしては、明示的に Dispose を呼び出す必要があります。

memo: WRS-395

gtk2k commented 2 years ago

@karasusan 承知しました。