【发布时间】:2016-10-16 01:34:31
【问题描述】:
我正在使用 C++ 为音频呼叫实现 WebRTC 点对点连接。
我有两个线程 _worker_thread 和 _signaling_thread。现在,当我尝试通过调用方法webrtc::CreatePeerConnectionFactory() 创建_peerConnectionFactory 时,我的应用程序崩溃了。我怎样才能让它发挥作用?
_signaling_thread.reset(new rtc::Thread());
if(!_signaling_thread->Start())
{
printf("_signaling_thread is Failed");
return;
}
_worker_thread.reset(new rtc::Thread());
if (!_worker_thread->Start()) {
printf( "_worker_thread is Failed");
return;
}
_peerConnectionFactory = webrtc::CreatePeerConnectionFactory(_worker_thread.get(),_signaling_thread.get(),NULL,NULL,NULL);
这是我得到的回溯
* thread #15: tid = 0x17e516, 0x00000001008d5674 MyAPP`rtc::MessageQueue::Get(rtc::Message*, int, bool) + 816, stop reason = EXC_BAD_ACCESS (code=1, address=0x100000038)
* frame #0: 0x00000001008d5674 MyAPP`rtc::MessageQueue::Get(rtc::Message*, int, bool) + 816
frame #1: 0x00000001008e5fb0 MyAPP`rtc::Thread::ProcessMessages(int) + 100
frame #2: 0x00000001008e5e44 MyAPP`rtc::Thread::PreRun(void*) + 88
frame #3: 0x0000000199337b3c libsystem_pthread.dylib`_pthread_body + 156
frame #4: 0x0000000199337aa0 libsystem_pthread.dylib`_pthread_start + 1
【问题讨论】:
-
帖子中没有问题,但不知何故被点赞了 2 次。我想知道是谁投了赞成票,为什么。
-
@SergeyA 我需要解决方案,为什么它不适合我,有没有办法解决这个问题?还有什么你需要知道的请告诉我。
-
不清楚回溯与发布的代码有何关系。从
rtc::MessageQueue::Get偏移 816 处会发生什么?为什么以及何时调用该函数?从pthread行来看,我猜这发生在其中一个后台线程中。你能说是哪个吗? -
@AustinMullins - 'rtc::MessageQueue::Get' 这个方法在我的信号线程启动时被调用。是的,有一个后台线程正在调用上面提到的代码,基本上这组代码是用于建立对等 Webrtc 连接。
-
您可以编辑您的问题以包含 Get 方法吗?这就是段错误(Bad Access)所在。
标签: c++ multithreading webrtc