New issue
Advanced search Search tips

Issue 660081 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

Chrome Remote Desktop host crashes on WebRTC disconnect

Project Member Reported by jamiewa...@chromium.org, Oct 27 2016

Issue description

Possible dupe of  bug 655215 .

Repro steps:
1. Connect to a debug build host using WebRTC.
2. Disconnect.

Result:
The host will crash with the following final few log lines:

[1027/100709:WARNING:rtp_rtcp_impl.cc(338)] Failed to send RTCP BYE
[1027/100709: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 0x7f1fc93b457e base::debug::StackTrace::StackTrace()
#1 0x7f1fc9423aaf logging::LogMessage::~LogMessage()
#2 0x7f1fc95a4017 base::ThreadRestrictions::AssertIOAllowed()
#3 0x7f1fc95800da base::PlatformThread::Join()
#4 0x7f1fc95978ab base::Thread::Stop()
#5 0x000000ec0e5f rtc::TaskQueue::~TaskQueue()
#6 0x000000fd955b webrtc::ViEEncoder::~ViEEncoder()
#7 0x000000fd96e9 webrtc::ViEEncoder::~ViEEncoder()
#8 0x00000045d1bf std::default_delete<>::operator()()
#9 0x000000fd291c std::unique_ptr<>::reset()
#10 0x000000fd2bc9 std::unique_ptr<>::~unique_ptr()
#11 0x000000fcc0eb webrtc::internal::VideoSendStream::~VideoSendStream()
#12 0x000000fcc179 webrtc::internal::VideoSendStream::~VideoSendStream()
#13 0x000000d606ce webrtc::internal::Call::DestroyVideoSendStream()
#14 0x000001091470 cricket::WebRtcVideoChannel2::WebRtcVideoSendStream::~WebRtcVideoSendStream()
#15 0x000001091ac9 cricket::WebRtcVideoChannel2::WebRtcVideoSendStream::~WebRtcVideoSendStream()
#16 0x0000010887b4 cricket::WebRtcVideoChannel2::~WebRtcVideoChannel2()
#17 0x000001088a49 cricket::WebRtcVideoChannel2::~WebRtcVideoChannel2()
#18 0x0000010f0d32 cricket::BaseChannel::~BaseChannel()
#19 0x0000010fc1b7 cricket::VideoChannel::~VideoChannel()
#20 0x0000010fc2c9 cricket::VideoChannel::~VideoChannel()
#21 0x0000011363bd cricket::ChannelManager::DestroyVideoChannel_w()
#22 0x00000113d5d1 rtc::MethodFunctor1<>::operator()()
#23 0x00000113d550 rtc::FunctorMessageHandler<>::OnMessage()
#24 0x000000bcb6b3 jingle_glue::JingleThreadWrapper::Dispatch()
#25 0x000000bcb9b7 jingle_glue::JingleThreadWrapper::Send()
#26 0x0000011e2dc9 rtc::Thread::InvokeInternal()
#27 0x000001139520 rtc::Thread::Invoke<>()
#28 0x000001137181 cricket::ChannelManager::DestroyVideoChannel()
#29 0x000000d1bae8 webrtc::WebRtcSession::RemoveUnusedChannels()
#30 0x000000d1b97d webrtc::WebRtcSession::Close()
#31 0x000000cc50aa webrtc::PeerConnection::Close()
#32 0x000000c58fee webrtc::ReturnType<>::Invoke<>()
#33 0x000000c58f5f webrtc::MethodCall0<>::OnMessage()
#34 0x000000c590bf webrtc::internal::SynchronousMethodCall::Invoke()
#35 0x000000c58ecc webrtc::MethodCall0<>::Marshal()
#36 0x000000c606f0 webrtc::PeerConnectionProxyWithInternal<>::Close()
#37 0x000000a408c5 remoting::protocol::WebrtcTransport::PeerConnectionWrapper::~PeerConnectionWrapper()
#38 0x000000a40939 remoting::protocol::WebrtcTransport::PeerConnectionWrapper::~PeerConnectionWrapper()
#39 0x000000a467db base::DeleteHelper<>::DoDelete()
#40 0x7f1fc94f561a _ZN4base8internal13FunctorTraitsIPFvPKvEvE6InvokeIJRKS3_EEEvS5_DpOT_
#41 0x7f1fc94f5598 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKPFvPKvEJRKS5_EEEvOT_DpOT0_
#42 0x7f1fc94f5552 _ZN4base8internal7InvokerINS0_9BindStateIPFvPKvEJS4_EEEFvvEE7RunImplIRKS6_RKSt5tupleIJS4_EEJLm0EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#43 0x7f1fc94f549c _ZN4base8internal7InvokerINS0_9BindStateIPFvPKvEJS4_EEEFvvEE3RunEPNS0_13BindStateBaseE
#44 0x7f1fc93ba461 _ZNO4base8internal8RunMixinINS_8CallbackIFvvELNS0_8CopyModeE0ELNS0_10RepeatModeE0EEEE3RunEv
#45 0x7f1fc93b9e69 base::debug::TaskAnnotator::RunTask()
#46 0x7f1fc944c96a base::MessageLoop::RunTask()
#47 0x7f1fc944cbf4 base::MessageLoop::DeferOrRunPendingTask()
#48 0x7f1fc944cede base::MessageLoop::DoWork()
#49 0x7f1fc94677de base::MessagePumpLibevent::Run()
#50 0x7f1fc944c4ea base::MessageLoop::RunHandler()
#51 0x7f1fc94f3704 base::RunLoop::Run()
#52 0x0000004557e6 remoting::AutoThread::ThreadMain()
#53 0x7f1fc958075a base::(anonymous namespace)::ThreadFunc()
#54 0x7f1fc97f1184 start_thread
#55 0x7f1fc360137d clone

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

Comment 3 by bugdroid1@chromium.org, Dec 10 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2c41f984a001aa9f1c686ef2d888fdfa1fcaea23

commit 2c41f984a001aa9f1c686ef2d888fdfa1fcaea23
Author: sergeyu <sergeyu@chromium.org>
Date: Sat Dec 10 01:45:16 2016

Add ScopedAllowIO in WebrtcTransport when shutting down WebRTC session.

PeerConnection creates new threads internally and shuts them down when
connection is closed. This is a blocking operation, so Debug builds were
DCHECK'ing every time connection is terminated. Added ScopedAllowIO to
work around this issue.

BUG= 660081 

Review-Url: https://codereview.chromium.org/2567533002
Cr-Commit-Position: refs/heads/master@{#437711}

[modify] https://crrev.com/2c41f984a001aa9f1c686ef2d888fdfa1fcaea23/PRESUBMIT.py
[modify] https://crrev.com/2c41f984a001aa9f1c686ef2d888fdfa1fcaea23/remoting/protocol/webrtc_transport.cc

Status: Fixed (was: Started)

Sign in to add a comment