如何关闭或破坏 PeerConnectionInterface 对象?当我试图这样做时它崩溃了。
我有一个像这样声明的对象:
rtc::scoped_refptr<webrtc::PeerConnectionInterface> _peerConnection;
在我通过工厂创建 PeerConnectionInterface 后它工作正常。
但是,当会话结束时,我尝试调用 _peerConnection->Close(); 程序崩溃了。
而且我也尝试调用 _peerConnection.release()->Release(); 也崩溃了。
我在 WebRtc 的源代码的 PeerConnection.cc 中打印日志,发现它在这里崩溃了,在 Close() 函数和 ~PeerConnection() 函数中:
webrtc_session_desc_factory_.reset(); //PeerConnection.cc
声明是
std::unique_ptr<WebRtcSessionDescriptionFactory> webrtc_session_desc_factory_;
于是我继续登录WebRtcSessionDescriptionFactory.cc,~WebRtcSessionDescriptionFactory()函数。在这个函数中崩溃:FailPendingRequests()。
进入FailPendingRequests()函数:
RTC_DCHECK(signaling_thread_->IsCurrent());
while (!create_session_description_requests_.empty()) {
const CreateSessionDescriptionRequest& request =
create_session_description_requests_.front();
//Crashed here in third or fourth loop
PostCreateSessionDescriptionFailed(request.observer,
((request.type == CreateSessionDescriptionRequest::kOffer) ?
"CreateOffer" : "CreateAnswer") + reason);
create_session_description_requests_.pop();
}
我将非常感谢任何建议!