New issue
Advanced search Search tips

Issue 714699 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug



Sign in to add a comment

Chromoting host crashes in debug mode on WebRTC disconnect

Project Member Reported by jamiewa...@chromium.org, Apr 24 2017

Issue description

Host 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()

 
Owner: sergeyu@chromium.org
Status: Assigned (was: Untriaged)
Project Member

Comment 2 by bugdroid1@chromium.org, 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

Status: Fixed (was: Assigned)

Sign in to add a comment