【问题标题】:Fatal signal6 during disposing PeerConnection WebRTC处理 PeerConnection WebRTC 期间的致命信号6
【发布时间】:2018-03-06 12:12:53
【问题描述】:

我正在使用WebRTC 进行语音通话,一切正常。当呼叫挂断时,我在完成呼叫Activity之前按如下方式处理PeerConnection。

 executor.execute(() -> {
        if (peerConnectionFactory != null) {
            peerConnectionFactory.dispose();
            peerConnectionFactory=null;
        }
        if (localPeer != null) {
            localPeer.dispose();
            localPeer=null;
        }
    });

我收到致命信号 6。我已阅读 what-is-fatal-signal-6 。它说不要阻塞 UI 线程,这可能会导致 SIGABRT,因为操作系统会杀死无响应的应用程序。但我在非 Ui 线程上调用它并且仍然遇到问题。

致命信号 6 (SIGABRT) 位于 0x00007e2f (code=-6),线程 32390 (worker_thread)

请调查问题。

【问题讨论】:

    标签: android webrtc


    【解决方案1】:

    我在关闭 peerConnection 时做错了。正确的关闭连接流程如下。

     executor.execute(() -> {
                if (peerConnectionFactory != null) {
                    peerConnectionFactory.stopAecDump();
                }
                if (localPeer != null) {
                    localPeer.dispose();
                    localPeer = null;
                }
                if (peerConnectionFactory != null) {
                    peerConnectionFactory.dispose();
                    peerConnectionFactory = null;
                }
                PeerConnectionFactory.stopInternalTracingCapture();
                PeerConnectionFactory.shutdownInternalTracer();
            });
    

    【讨论】:

    • 我按照你的方法试过了,但调用时仍然收到 Fatal signal 11 (SIGSEGV), code 1, fault addr 0xb8 in tid 26448 (Thread-13148) peerConnectionFactory.dispose() 我可以看到与您的代码的唯一区别是我使用的是 Kotlin 并且我的 peerConnectionFactory 被声明为 var peerConnectionFactory: PeerConnectionFactory? = null 所以我需要 !!操作员访问它...任何线索?我真的需要在 peerConnectionFactory 上调用 dispose() 吗?
    • 发现另一个线程面临我同样的情况here,虽然它还没有被回答,但它得到了完全相同的错误信息......
    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 2014-04-29
    • 2014-12-21
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多