New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 840797 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: May 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 1
Type: Bug-Regression
Proj-Servicification

Blocking:
issue 721401



Sign in to add a comment

Network crash on ToT when joining Meet meeting.

Project Member Reported by maxmorin@chromium.org, May 8 2018

Issue description

Repro steps:
1. Start meeting at meet.google.com (using google.com account if necessary). I used 68.0.3418.2 (Official Build) dev for this, shouldn't matter.
2. Navigate to meeting from a dcheck-enabled ToT build (I used refs/heads/master@{#556719}).
3. Allow access to microphone.

I don't have a microphone or camera connected (don't think it matters).
I may be in some Meet dogfoods, LMK if you can't repro.

+Helen since you wrote the code.

Crash repros every time.
[176113:176150:0508/153513.184069:FATAL:proxy_resolving_client_socket.cc(278)] Check failed: !socket_handle_->socket(). 
#0 0x7fdf128e721d base::debug::StackTrace::StackTrace()
#1 0x7fdf126114bc base::debug::StackTrace::StackTrace()
#2 0x7fdf12682fba logging::LogMessage::~LogMessage()
#3 0x7fdf06d2a299 network::ProxyResolvingClientSocket::DoInitConnection()
#4 0x7fdf06d28eed network::ProxyResolvingClientSocket::DoLoop()
#5 0x7fdf06d29f31 network::ProxyResolvingClientSocket::OnIOComplete()
#6 0x7fdf06c828cf _ZN4base8internal13FunctorTraitsIMN7network31ChunkedDataPipeUploadDataStreamEFvjEvE6InvokeIS5_PS3_JjEEEvT_OT0_DpOT1_
#7 0x7fdf06c8282f _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKMN7network31ChunkedDataPipeUploadDataStreamEFvjEJPS5_jEEEvOT_DpOT0_
#8 0x7fdf06c827c5 _ZN4base8internal7InvokerINS0_9BindStateIMN7network31ChunkedDataPipeUploadDataStreamEFvjEJNS0_17UnretainedWrapperIS4_EEEEEFvjEE7RunImplIRKS6_RKNSt3__15tupleIJS8_EEEJLm0EEEEvOT_OT0_NSF_16integer_sequenceImJXspT1_EEEEOj
#9 0x7fdf06c8274b _ZN4base8internal7InvokerINS0_9BindStateIMN7network31ChunkedDataPipeUploadDataStreamEFvjEJNS0_17UnretainedWrapperIS4_EEEEEFvjEE3RunEPNS0_13BindStateBaseEj
#10 0x7fdf0fc5c72e _ZNKR4base17RepeatingCallbackIFviEE3RunEi
#11 0x7fdf100d7587 net::ProxyResolutionService::Request::QueryComplete()
#12 0x7fdf0fb933df _ZN4base8internal13FunctorTraitsIMN3net18ClientSocketHandleEFviEvE6InvokeIS5_PS3_JiEEEvT_OT0_DpOT1_
#13 0x7fdf0fb9333f _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKMN3net18ClientSocketHandleEFviEJPS5_iEEEvOT_DpOT0_
#14 0x7fdf0fb932d5 _ZN4base8internal7InvokerINS0_9BindStateIMN3net18ClientSocketHandleEFviEJNS0_17UnretainedWrapperIS4_EEEEEFviEE7RunImplIRKS6_RKNSt3__15tupleIJS8_EEEJLm0EEEEvOT_OT0_NSF_16integer_sequenceImJXspT1_EEEEOi
#15 0x7fdf0fb9320b _ZN4base8internal7InvokerINS0_9BindStateIMN3net18ClientSocketHandleEFviEJNS0_17UnretainedWrapperIS4_EEEEEFviEE3RunEPNS0_13BindStateBaseEi
#16 0x7fdf06c7fdce _ZNKR4base17RepeatingCallbackIFvjEE3RunEj
#17 0x7fdf06d91544 network::(anonymous namespace)::ProxyResolverMojo::Job::CompleteRequest()
#18 0x7fdf06d90988 network::(anonymous namespace)::ProxyResolverMojo::Job::ReportResult()
#19 0x7fdf06effff2 proxy_resolver::mojom::ProxyResolverRequestClientStubDispatch::Accept()
#20 0x7fdf06d94933 proxy_resolver::mojom::ProxyResolverRequestClientStub<>::Accept()
#21 0x7fdf10a2ec45 mojo::InterfaceEndpointClient::HandleValidatedMessage()
#22 0x7fdf10a2d691 mojo::InterfaceEndpointClient::HandleIncomingMessageThunk::Accept()
#23 0x7fdf10a2bb22 mojo::FilterChain::Accept()
#24 0x7fdf10a31875 mojo::InterfaceEndpointClient::HandleIncomingMessage()
#25 0x7fdf10a3ddab mojo::internal::MultiplexRouter::ProcessIncomingMessage()
#26 0x7fdf10a3d2f5 mojo::internal::MultiplexRouter::Accept()
#27 0x7fdf10a2bb22 mojo::FilterChain::Accept()
#28 0x7fdf10a1d9df mojo::Connector::ReadSingleMessage()
#29 0x7fdf10a1ea2a mojo::Connector::ReadAllAvailableMessages()
#30 0x7fdf10a1e7f5 mojo::Connector::OnHandleReadyInternal()
#31 0x7fdf10a1e6db mojo::Connector::OnWatcherHandleReady()
#32 0x7fdf10a222bf _ZN4base8internal13FunctorTraitsIMN4mojo9ConnectorEFvjEvE6InvokeIS5_PS3_JjEEEvT_OT0_DpOT1_
#33 0x7fdf10a2221f _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKMN4mojo9ConnectorEFvjEJPS5_jEEEvOT_DpOT0_
#34 0x7fdf10a221b5 _ZN4base8internal7InvokerINS0_9BindStateIMN4mojo9ConnectorEFvjEJNS0_17UnretainedWrapperIS4_EEEEEFvjEE7RunImplIRKS6_RKNSt3__15tupleIJS8_EEEJLm0EEEEvOT_OT0_NSF_16integer_sequenceImJXspT1_EEEEOj
#35 0x7fdf10a220eb _ZN4base8internal7InvokerINS0_9BindStateIMN4mojo9ConnectorEFvjEJNS0_17UnretainedWrapperIS4_EEEEEFvjEE3RunEPNS0_13BindStateBaseEj
#36 0x7fdf10a1909e _ZNKR4base17RepeatingCallbackIFvjEE3RunEj
#37 0x7fdf10a2132f mojo::SimpleWatcher::DiscardReadyState()
#38 0x7fdf10a215af _ZN4base8internal13FunctorTraitsIPFvRKNS_17RepeatingCallbackIFvjEEEjRKN4mojo18HandleSignalsStateEEvE6InvokeIRKSC_JS6_jSA_EEEvOT_DpOT0_
#39 0x7fdf10a2154d _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKPFvRKNS_17RepeatingCallbackIFvjEEEjRKN4mojo18HandleSignalsStateEEJS8_jSC_EEEvOT_DpOT0_
#40 0x7fdf10a214f0 _ZN4base8internal7InvokerINS0_9BindStateIPFvRKNS_17RepeatingCallbackIFvjEEEjRKN4mojo18HandleSignalsStateEEJS5_EEEFvjSB_EE7RunImplIRKSD_RKNSt3__15tupleIJS5_EEEJLm0EEEEvOT_OT0_NSK_16integer_sequenceImJXspT1_EEEEOjSB_
#41 0x7fdf10a21426 _ZN4base8internal7InvokerINS0_9BindStateIPFvRKNS_17RepeatingCallbackIFvjEEEjRKN4mojo18HandleSignalsStateEEJS5_EEEFvjSB_EE3RunEPNS0_13BindStateBaseEjSB_
#42 0x7fdf109b070e _ZNKR4base17RepeatingCallbackIFvjRKN4mojo18HandleSignalsStateEEE3RunEjS4_
#43 0x7fdf109b0059 mojo::SimpleWatcher::OnHandleReady()
#44 0x7fdf109b08a6 mojo::SimpleWatcher::Context::Notify()
#45 0x7fdf109b021f mojo::SimpleWatcher::Context::CallNotify()
#46 0x7fdf06b5d167 mojo::edk::WatcherDispatcher::InvokeWatchCallback()
#47 0x7fdf06b5c8e0 mojo::edk::Watch::InvokeCallback()
#48 0x7fdf06b4d3f9 mojo::edk::RequestContext::~RequestContext()
#49 0x7fdf06b1cecd mojo::edk::NodeChannel::OnChannelMessage()
#50 0x7fdf06aee48e mojo::edk::Channel::OnReadComplete()
#51 0x7fdf06b712c9 mojo::edk::(anonymous namespace)::ChannelPosix::OnFileCanReadWithoutBlocking()
#52 0x7fdf1292051e base::MessagePumpLibevent::FdWatchController::OnFileCanReadWithoutBlocking()
#53 0x7fdf12921df0 base::MessagePumpLibevent::OnLibeventNotification()
#54 0x7fdf129761fe event_process_active
#55 0x7fdf12975847 event_base_loop
#56 0x7fdf12921f71 base::MessagePumpLibevent::Run()
#57 0x7fdf126aae8b base::MessageLoop::Run()
#58 0x7fdf12753ead base::RunLoop::Run()
#59 0x7fdf12805d78 base::Thread::Run()
#60 0x7fdf0c120c6f content::BrowserProcessSubThread::IOThreadRun()
#61 0x7fdf0c120b6a content::BrowserProcessSubThread::Run()
 
Components: Internals>Network>Proxy
Thanks. I will take a look now.
Status: Started (was: Assigned)
I am able to reproduce following the instructions.

jingle/glue/fake_ssl_client_socket.cc calls net::StreamSocket::Connect() a second time after the socket is already connected. This triggers a DCHECK in ProxyResolvingClientSocket. 

This seems to be a pre-existing issue. I will upload a fix to remove the duplicate Connect() attempt in jingle/glue/fake_ssl_client_socket.cc.
Uploaded a patch for review: https://chromium-review.googlesource.com/c/chromium/src/+/1050188 

I didn't make jingle/glue/fake_ssl_client_socket.cc to skip StreamStream::Connect(), because that class is also used by xmpp_connection/xmpp_client_socket_factory.
Project Member

Comment 4 by bugdroid1@chromium.org, May 9 2018

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

commit a12a839e7d668fd13f86bc7c44f71e67ae8da1cd
Author: Helen Li <xunjieli@chromium.org>
Date: Wed May 09 16:02:59 2018

Fix P2PSocketHostTcpBase to not call net::StreamSocket::Connect twice

When p2p socket type is IsPseudoTlsClientSocket(), P2PSocketHostTcpBase
constructs a jingle_glue::FakeSSLClientSocket() and calls Connect() on the
tcp socket which is already connected. This triggers a DCHECK error, because
it's illegal to call Connect() twice on the same tcp socket (in this case on the
ProxyResolvingClientSocket).

This CL fixes P2PSocketHostTcpBase to not call Connect() twice and adds a
regression test.

BUG:  840797 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_mojo
Change-Id: Ic936939bb58c32fc92bcad71929cf7f88af89eff
Reviewed-on: https://chromium-review.googlesource.com/1050188
Commit-Queue: Helen Li <xunjieli@chromium.org>
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#557205}
[modify] https://crrev.com/a12a839e7d668fd13f86bc7c44f71e67ae8da1cd/content/browser/renderer_host/p2p/socket_host_tcp.cc
[modify] https://crrev.com/a12a839e7d668fd13f86bc7c44f71e67ae8da1cd/content/browser/renderer_host/p2p/socket_host_tcp_unittest.cc
[modify] https://crrev.com/a12a839e7d668fd13f86bc7c44f71e67ae8da1cd/content/test/BUILD.gn
[modify] https://crrev.com/a12a839e7d668fd13f86bc7c44f71e67ae8da1cd/services/network/proxy_resolving_client_socket.cc

Blocking: 721401
Status: Fixed (was: Started)
Thanks for the quick fix!

Sign in to add a comment