With the WebRTC backend in 1.6.0, the pinned WebRTC's rtc::AsyncResolver starts an rtc::Thread per lookup that idles until its port is destroyed. Every ICE session keeps one per hostname per network interface.
Destroying a resolver mid-lookup also joins its thread, stalling the global lock until getaddrinfo returns.
Upstream WebRTC fixed this in 1366b0f841 (webrtc:12659). We can fix it in ice_session.cpp without a submodule update, unless you'd prefer the update.
With the WebRTC backend in 1.6.0, the pinned WebRTC's
rtc::AsyncResolverstarts anrtc::Threadper lookup that idles until its port is destroyed. Every ICE session keeps one per hostname per network interface.Destroying a resolver mid-lookup also joins its thread, stalling the global lock until
getaddrinforeturns.Upstream WebRTC fixed this in 1366b0f841 (webrtc:12659). We can fix it in ice_session.cpp without a submodule update, unless you'd prefer the update.