Chromoting host crashes in debug mode on WebRTC disconnect |
||
Issue descriptionHost version: 60.0.3080.0 Stack trace: [0424/105734.586836:WARNING:rtp_rtcp_impl.cc(355)] Failed to send RTCP BYE [0424/105734.663943:FATAL:thread_restrictions.cc(38)] Check failed: false. Function marked as IO-only was called from a thread that disallows IO! If this thread really should be allowed to make IO calls, adjust the call to base::ThreadRestrictions::SetIOAllowed() in this thread's startup. #0 0x7fd37a00135b base::debug::StackTrace::StackTrace() #1 0x7fd37a00005c base::debug::StackTrace::StackTrace() #2 0x7fd37a073773 logging::LogMessage::~LogMessage() #3 0x7fd37a1f1a77 base::ThreadRestrictions::AssertIOAllowed() #4 0x7fd37a1ce8ea base::PlatformThread::Join() #5 0x7fd37a1e64a0 base::Thread::Stop() #6 0x0000013c8315 rtc::TaskQueue::~TaskQueue() #7 0x0000010b4949 webrtc::voe::SharedData::~SharedData() #8 0x000001098158 webrtc::VoiceEngineImpl::~VoiceEngineImpl() #9 0x000001098179 webrtc::VoiceEngineImpl::~VoiceEngineImpl() #10 0x0000010976a9 webrtc::VoiceEngineImpl::Release() #11 0x000001097a7b webrtc::VoiceEngine::Delete() #12 0x000000e57cd0 cricket::scoped_voe_engine::~scoped_voe_engine() #13 0x000000e57c4c cricket::VoEWrapper::~VoEWrapper() #14 0x000000e57bab std::default_delete<>::operator()() #15 0x000000e48b53 std::unique_ptr<>::~unique_ptr() #16 0x000000e3b1d7 cricket::WebRtcVoiceEngine::~WebRtcVoiceEngine() #17 0x000000dfb973 cricket::CompositeMediaEngine<>::~CompositeMediaEngine() #18 0x000000dfb685 cricket::WebRtcMediaEngine2::~WebRtcMediaEngine2() #19 0x000000dfb6a9 cricket::WebRtcMediaEngine2::~WebRtcMediaEngine2() #20 0x000000467b3f std::default_delete<>::operator()() #21 0x000000c84c0c std::unique_ptr<>::reset() #22 0x000000dbe671 cricket::ChannelManager::DestructorDeletes_w() #23 0x000000c9b3f5 _ZNK3rtc13MethodFunctorIN7cricket13VideoCapturerEMS2_FvvEvJEE10CallMethodIJEEEvNS_8sequenceIJXspT_EEEE #24 0x000000c9b385 _ZNK3rtc13MethodFunctorIN7cricket13VideoCapturerEMS2_FvvEvJEEclEv #25 0x000000dc5390 _ZN3rtc21FunctorMessageHandlerIvNS_13MethodFunctorIN7cricket14ChannelManagerEMS3_FvvEvJEEEE9OnMessageEPNS_7MessageE #26 0x000000bf4fe3 jingle_glue::JingleThreadWrapper::Dispatch() #27 0x000000bf52b1 jingle_glue::JingleThreadWrapper::Send() #28 0x0000012b21c9 rtc::Thread::InvokeInternal() #29 0x000000dc1bae _ZN3rtc6Thread6InvokeIvNS_13MethodFunctorIN7cricket14ChannelManagerEMS4_FvvEvJEEEEET_RKNS_8LocationERKT0_ #30 0x000000dbe383 cricket::ChannelManager::~ChannelManager() #31 0x000000c844bb std::default_delete<>::operator()() #32 0x000000c7db4c std::unique_ptr<>::reset() #33 0x000000c7b92f webrtc::PeerConnectionFactory::~PeerConnectionFactory() #34 0x000000c7f645 rtc::RefCountedObject<>::~RefCountedObject() #35 0x000000c7f669 rtc::RefCountedObject<>::~RefCountedObject() #36 0x000000c7f61b rtc::RefCountedObject<>::Release() #37 0x000000720616 rtc::scoped_refptr<>::operator=() #38 0x000000c8091d webrtc::PeerConnectionProxyWithInternal<>::DestroyInternal() #39 0x000000c80b0e webrtc::ReturnType<>::Invoke<>() #40 0x000000c80a7f webrtc::MethodCall0<>::OnMessage() #41 0x000000c80bdf webrtc::internal::SynchronousMethodCall::Invoke() #42 0x000000c809ec webrtc::MethodCall0<>::Marshal() #43 0x000000c808a5 webrtc::PeerConnectionFactoryProxyWithInternal<>::~PeerConnectionFactoryProxyWithInternal() #44 0x000000c7f815 rtc::RefCountedObject<>::~RefCountedObject() #45 0x000000c7f839 rtc::RefCountedObject<>::~RefCountedObject() #46 0x000000c7f7eb rtc::RefCountedObject<>::Release() #47 0x000000aa6314 scoped_refptr<>::Release() #48 0x000000aa519a scoped_refptr<>::~scoped_refptr() #49 0x000000b0c1f3 remoting::protocol::WebrtcTransport::PeerConnectionWrapper::~PeerConnectionWrapper() #50 0x000000b0c239 remoting::protocol::WebrtcTransport::PeerConnectionWrapper::~PeerConnectionWrapper() #51 0x000000b108eb base::DeleteHelper<>::DoDelete() #52 0x7fd37a14433a _ZN4base8internal13FunctorTraitsIPFvPKvEvE6InvokeIJS3_EEEvS5_DpOT_ #53 0x7fd37a1442a8 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIPFvPKvEJS5_EEEvOT_DpOT0_ #54 0x7fd37a144262 _ZN4base8internal7InvokerINS0_9BindStateIPFvPKvEJS4_EEEFvvEE7RunImplIS6_St5tupleIJS4_EEJLm0EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE #55 0x7fd37a1441ae _ZN4base8internal7InvokerINS0_9BindStateIPFvPKvEJS4_EEEFvvEE7RunOnceEPNS0_13BindStateBaseE #56 0x7fd37a00786e _ZNO4base8CallbackIFvvELNS_8internal8CopyModeE0ELNS2_10RepeatModeE0EE3RunEv #57 0x7fd37a006fae base::debug::TaskAnnotator::RunTask() #58 0x7fd37a099c3d base::MessageLoop::RunTask() #59 0x7fd37a099ec4 base::MessageLoop::DeferOrRunPendingTask() #60 0x7fd37a09a1b4 base::MessageLoop::DoWork() #61 0x7fd37a0b47ae base::MessagePumpLibevent::Run()
,
Apr 28 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8c6a6fa53691f5a3f55023cc003e9c665083ea34 commit 8c6a6fa53691f5a3f55023cc003e9c665083ea34 Author: sergeyu <sergeyu@chromium.org> Date: Fri Apr 28 02:11:09 2017 Fix DCHECK in the chromoting host when disconnecting a WebRTC connection. WebRTC creates threads internally. Thread::Stop() is a blocking operation, so it's not allowed on the network thread. To work around this problem WebrtcTransport::PeerConnectionWrapper uses ScopedAllowIO when closing PeerConnection. But it's not longer enough - some threads are stopped later when the factory is destroyed. Updated PeerConnectionWrapper destructor to destroy the PeerConnectionFactory with ScopedAllowIO. BUG= 714699 Review-Url: https://codereview.chromium.org/2847803003 Cr-Commit-Position: refs/heads/master@{#467838} [modify] https://crrev.com/8c6a6fa53691f5a3f55023cc003e9c665083ea34/remoting/protocol/webrtc_transport.cc
,
Apr 28 2017
|
||
►
Sign in to add a comment |
||
Comment 1 by jamiewa...@chromium.org
, Apr 25 2017Status: Assigned (was: Untriaged)