In Chrome Remote Desktop, when making WebRTC connections, we are running into some Chromium
DCHECKs within the PeerConnection in remoting/protocol/webrtc_transport.cc:Check failed: !g_base_sync_primitives_disallowed.Get().Get()
This appears to be because PeerConnection::SetLocalDescription() and PeerConnection::SetRemoteDescription() make some calls to blocking sync primitives in Chromium's //base .
Details in this Chromium
bug. Also posted on
chromium-dev, waiting for a response there.
Is it expected that these calls might be blocking on other threads?
Is it wrong to try to use PeerConnection on a network thread that disallows blocking I/O ?
If we refactor to call these methods on a different thread, is it acceptable to use PeerConnection on 2 different threads? Or should we refactor so that the PeerConnection object is only used on a single thread which allows blocking operations?
Thanks!