shiguredo / sora-ios-sdk

WebRTC SFU Sora iOS SDK
https://sora-ios-sdk.shiguredo.jp/
Apache License 2.0
42 stars 8 forks source link

role = .group と videoEnabled = false で接続すると落ちる #28

Closed hkk closed 5 years ago

hkk commented 5 years ago

Sora.shared.connect を実行した直後に下記のエラーでアプリが強制終了する症状が発生しています。

Sora was compiled with optimization - stepping may behave oddly; variables may not be available.

Debug、Release どちらのビルドでも同じ症状ですが、何か原因はわかりますでしょうか?

Xcode 10.1 Sora 2.2.1 (CocoaPods)

どうぞよろしくお願いいたします。

szktty commented 5 years ago

@hkk 公開できる範囲で構いませんので、エラーが発生したときのコードを教えて頂けますか?

hkk commented 5 years ago

情報不足で申し訳ございません。 確認したところ、以下 videoEnabled = false で接続しようとした際にエラーが出ているようでした。

var config = Configuration(url: signaling_url, channelId: channel_id, role: .group)
config.videoEnabled = false
config.audioEnabled = true

Sora.shared.connect(configuration: config) { channel, error in
...
}

エラー箇所は下記のようです。

#0 0x0000000103890000 in BasicPeerChannelContext.initializePublisherStream() at /Volumes/LaCie/Users/szktty/work/dev/shiguredo/sora-ios-sdk/Sora/PeerChannel.swift:506

    0x10388ffd4 <+4052>: b      0x103890010               ; <+4112> at PeerChannel.swift:507
    0x10388ffd8 <+4056>: nop    
    0x10388ffdc <+4060>: ldr    x8, #0x758d4              ; direct field offset for Sora.BasicPeerChannelContext.nativeChannel : Swift.Optional<__C.RTCPeerConnection>
    0x10388ffe0 <+4064>: ldr    x21, [x28, x8]
    0x10388ffe4 <+4068>: mov    x0, x21
    0x10388ffe8 <+4072>: bl     0x1038e82c8               ; symbol stub for: objc_retain
    0x10388ffec <+4076>: cbnz   x21, 0x10388ff20          ; <+3872> at PeerChannel.swift
    0x10388fff0 <+4080>: brk    #0x1
    0x10388fff4 <+4084>: bl     0x1038e0a4c               ; Sora.BasicMediaStream.nativeVideoTrack.getter : Swift.Optional<__C.RTCVideoTrack>
    0x10388fff8 <+4088>: mov    x23, x0
    0x10388fffc <+4092>: cbnz   x23, 0x10388ff48          ; <+3912> [inlined] type metadata accessor for Swift._ContiguousArrayStorage<Swift.String>
->  0x103890000 <+4096>: brk    #0x1
    0x103890004 <+4100>: ldr    x20, [x20, #0x88]
    0x103890008 <+4104>: mov    x0, x20
    0x10389000c <+4108>: bl     0x1038e82c8               ; symbol stub for: objc_retain
    0x103890010 <+4112>: nop    
    0x103890014 <+4116>: ldr    x1, #0x733d4              ; "streamId"

同じコードで videoEnabled = true にすると接続できることを確認済みです。 また SDK 2.1.3 では config.videoEnabled = false で正常に動作しておりました。

szktty commented 5 years ago

@hkk 情報ありがとうございます。ご使用されている Xcode と SDK のバージョンが少し古いですが、最新の環境でも role = .group と videoEnabled = false の組み合わせでエラーの発生を確認しました。近日中に修正しますので、少々お待ち頂けると幸いです。申し訳ありませんでした。

szktty commented 5 years ago

@hkk お待たせして申し訳ありません。該当のバグを修正したバージョン 2.3.2 をリリースしました。2.3.2 は Xcode 10.2 以上にのみ対応していますので、お手数をおかけしますが Xcode のアップデートも同時にお願いします。 また、他の変更点として、 SDP セマンティクスのデフォルトを Unified Plan に変更しましたのでご注意ください。フィードバックありがとうございました。

voluntas commented 5 years ago

@hkk こちら、いかがでしょうか。バージョン 2.3.2 が問題なければ閉じさせていただこうと思います。

hkk commented 5 years ago

ご報告が遅くなり申し訳ありません。

本件の修正としてリリース頂いた 2.3.1 を確認した際に、subgroup から group に再接続した場合に、音声が途絶えてしまう症状があった為、その後、確認しておりませんした。大変申し訳ございません。

2.3.2 で確認したところ、上記症状も無く、正常に接続確認できました。 ありがとうございました。

voluntas commented 5 years ago

@hkk 確認、ありがとうございます。2.3.2 で問題ないとのことで本件クローズさせていただきます。今後もなにかありましたらご報告いただけると助かります。