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

Issue 741622 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Last visit 20 days ago
Closed: Aug 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug



Sign in to add a comment

DCHECK failure in QuicPacketCreator::MaybeAddPadding()

Project Member Reported by bauerb@chromium.org, Jul 12 2017

Issue description

signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
[FATAL:quic_packet_creator.cc(595)] Check failed: 0 == packet_.num_padding_bytes (0 vs. -1)

Stack Trace:
  RELADDR   FUNCTION                                                      FILE:LINE
  000a7cd9  ~LogMessage                                                   /usr/local/google/home/bauerb/build/clankium/src/base/logging.cc:553
  002c157b  net::QuicPacketCreator::MaybeAddPadding()                     /usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_packet_creator.cc:595
  002c0c63  net::QuicPacketCreator::SerializePacket(char*, unsigned int)  /usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_packet_creator.cc:453

-----------------------------------------------------

    r0 00000000  r1 000036dd  r2 00000006  r3 00000008
    r4 ca42f978  r5 00000006  r6 ca42f920  r7 0000010c
    r8 ca42ca90  r9 ca42c63c  sl ca42ca8c  fp 0000005b
    ip 0000005a  sp ca42c5b8  lr f14f55e7  pc f14f7e44

Stack Trace:
FILE:LINE                                                                                                RELADDR   FUNCTION
/system/lib/libc.so                                                                                      00049e44  tgkill+12
/system/lib/libc.so                                                                                      000475e3  pthread_kill+34
/system/lib/libc.so                                                                                      0001d8a5  raise+10
/system/lib/libc.so                                                                                      000193f1  __libc_android_abort+34
/system/lib/libc.so                                                                                      00017034  abort+4
/usr/local/google/home/bauerb/build/clankium/src/base/debug/debugger_posix.cc:228                        v------>  base::debug::(anonymous namespace)::DebugBreak()
/usr/local/google/home/bauerb/build/clankium/src/base/debug/debugger_posix.cc:258                        00094f4b  base::debug::BreakDebugger()
/usr/local/google/home/bauerb/build/clankium/src/base/logging.cc:784                                     000a7f3f  ~LogMessage
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_packet_creator.cc:595                002c1579  net::QuicPacketCreator::MaybeAddPadding()
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_packet_creator.cc:453                002c0c61  net::QuicPacketCreator::SerializePacket(char*, unsigned int)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_packet_creator.cc:275                002c0ed1  net::QuicPacketCreator::Flush()
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_connection.cc:1949                   002b4381  net::QuicConnection::SendConnectionClosePacket(net::QuicErrorCode, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, net::QuicConnection::AckBundling)
/data/data/com.google.android.apps.chrome/incremental-install-files/lib/libnet.cr.so                     002b426f  net::QuicConnection::CloseConnection(net::QuicErrorCode, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, net::ConnectionCloseBehavior)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_connection.cc:1647                   002b2509  net::QuicConnection::OnWriteError(int)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_connection.cc:1556                   002b36a5  net::QuicConnection::WritePacket(net::SerializedPacket*)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_connection.cc:1736                   002b3d7d  net::QuicConnection::SendOrQueuePacket(net::SerializedPacket*)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_packet_creator.cc:289                002c0e33  net::QuicPacketCreator::OnSerializedPacket()
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_packet_creator.cc:276                002c0ed7  net::QuicPacketCreator::Flush()
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_packet_generator.cc:122              002c1e67  net::QuicPacketGenerator::ConsumeData(unsigned int, net::QuicIOVector, unsigned long long, net::StreamSendingState, net::QuicReferenceCountedPointer<net::QuicAckListenerInterface>)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_connection.cc:1100                   002b25f3  net::QuicConnection::SendStreamData(unsigned int, net::QuicIOVector, unsigned long long, net::StreamSendingState, net::QuicReferenceCountedPointer<net::QuicAckListenerInterface>)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_session.cc:330                       002c693d  net::QuicSession::WritevData(net::QuicStream*, unsigned int, net::QuicIOVector, unsigned long long, net::StreamSendingState, net::QuicReferenceCountedPointer<net::QuicAckListenerInterface>)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_stream.cc:379                        002cd233  net::QuicStream::WritevDataInner(net::QuicIOVector, unsigned long long, bool, net::QuicReferenceCountedPointer<net::QuicAckListenerInterface>)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_stream.cc:334                        002cce73  net::QuicStream::WritevData(iovec const*, int, bool, net::QuicReferenceCountedPointer<net::QuicAckListenerInterface>)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_stream.cc:219                        002ccc0d  net::QuicStream::WriteOrBufferData(base::BasicStringPiece<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, bool, net::QuicReferenceCountedPointer<net::QuicAckListenerInterface>)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_crypto_stream.cc:89                  002b86fd  net::QuicCryptoStream::SendHandshakeMessage(net::CryptoHandshakeMessage const&)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_crypto_client_stream.cc:343          002b6631  net::QuicCryptoClientStream::DoSendCHLO(net::QuicCryptoClientConfig::CachedState*)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_crypto_client_stream.cc:225          002b5e5f  net::QuicCryptoClientStream::DoHandshakeLoop(net::CryptoHandshakeMessage const*)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/core/quic_crypto_client_stream.cc:151          002b6299  net::QuicCryptoClientStream::CryptoConnect()
/usr/local/google/home/bauerb/build/clankium/src/net/quic/chromium/quic_chromium_client_session.cc:1019  00285421  net::QuicChromiumClientSession::CryptoConnect(base::Callback<void (int), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/chromium/quic_stream_factory.cc:533            0028f665  net::QuicStreamFactory::Job::DoConnect()
/usr/local/google/home/bauerb/build/clankium/src/net/quic/chromium/quic_stream_factory.cc:448            0028f37d  net::QuicStreamFactory::Job::DoLoop(int)
/usr/local/google/home/bauerb/build/clankium/src/net/quic/chromium/quic_stream_factory.cc:462            0028f815  net::QuicStreamFactory::Job::OnIOComplete(int)
/usr/local/google/home/bauerb/build/clankium/src/base/callback.h:91                                      00191725  base::Callback<void (int), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>::Run(int) &&
/usr/local/google/home/bauerb/build/clankium/src/net/dns/host_resolver_impl.cc:617                       002105ff  net::HostResolverImpl::RequestImpl::OnJobCompleted(net::HostResolverImpl::Job*, int, net::AddressList const&)
/usr/local/google/home/bauerb/build/clankium/src/net/dns/host_resolver_impl.cc:1841                      002104a1  net::HostResolverImpl::Job::CompleteRequests(net::HostCache::Entry const&, base::TimeDelta)
/usr/local/google/home/bauerb/build/clankium/src/net/dns/host_resolver_impl.cc:1751                      0020e3a7  net::HostResolverImpl::Job::OnDnsTaskComplete(base::TimeTicks, int, net::AddressList const&, base::TimeDelta)
/usr/local/google/home/bauerb/build/clankium/src/net/dns/host_resolver_impl.cc:1283                      0020f6ff  net::HostResolverImpl::DnsTask::OnSuccess(net::AddressList const&)
/usr/local/google/home/bauerb/build/clankium/src/net/dns/host_resolver_impl.cc:1268                      0020f5c7  net::HostResolverImpl::DnsTask::OnSortComplete(base::TimeTicks, bool, net::AddressList const&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:209                                0020fafd  void base::internal::FunctorTraits<void (net::HostResolverImpl::DnsTask::*)(base::TimeTicks, bool, net::AddressList const&), void>::Invoke<base::WeakPtr<net::HostResolverImpl::DnsTask> const&, base::TimeTicks const&, bool, net::AddressList const&>(void (net::HostResolverImpl::DnsTask::*)(base::TimeTicks, bool, net::AddressList const&), base::WeakPtr<net::HostResolverImpl::DnsTask> const&, base::TimeTicks const&, bool&&, net::AddressList const&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:295                                0020fabf  void base::internal::InvokeHelper<true, void>::MakeItSo<void (net::HostResolverImpl::DnsTask::* const&)(base::TimeTicks, bool, net::AddressList const&), base::WeakPtr<net::HostResolverImpl::DnsTask> const&, base::TimeTicks const&, bool, net::AddressList const&>(void (net::HostResolverImpl::DnsTask::* const&)(base::TimeTicks, bool, net::AddressList const&), base::WeakPtr<net::HostResolverImpl::DnsTask> const&, base::TimeTicks const&, bool&&, net::AddressList const&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:351                                v------>  void base::internal::Invoker<base::internal::BindState<void (net::HostResolverImpl::DnsTask::*)(base::TimeTicks, bool, net::AddressList const&), base::WeakPtr<net::HostResolverImpl::DnsTask>, base::TimeTicks>, void (bool, net::AddressList const&)>::RunImpl<void (net::HostResolverImpl::DnsTask::* const&)(base::TimeTicks, bool, net::AddressList const&), std::__ndk1::tuple<base::WeakPtr<net::HostResolverImpl::DnsTask>, base::TimeTicks> const&, 0u, 1u>(void (net::HostResolverImpl::DnsTask::* const&)(base::TimeTicks, bool, net::AddressList const&), std::__ndk1::tuple<base::WeakPtr<net::HostResolverImpl::DnsTask>, base::TimeTicks> const&, base::IndexSequence<0u, 1u>, bool&&, net::AddressList const&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:329                                0020fa91  base::internal::Invoker<base::internal::BindState<void (net::HostResolverImpl::DnsTask::*)(base::TimeTicks, bool, net::AddressList const&), base::WeakPtr<net::HostResolverImpl::DnsTask>, base::TimeTicks>, void (bool, net::AddressList const&)>::Run(base::internal::BindStateBase*, bool&&, net::AddressList const&)
/usr/local/google/home/bauerb/build/clankium/src/base/callback.h:80                                      001ff769  base::Callback<void (bool, net::AddressList const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>::Run(bool, net::AddressList const&) const &
/usr/local/google/home/bauerb/build/clankium/src/net/dns/address_sorter_posix.cc:315                     001ff22f  net::AddressSorterPosix::Sort(net::AddressList const&, base::Callback<void (bool, net::AddressList const&), (base::internal::CopyMode)1, (base::internal::RepeatMode)1> const&) const
/usr/local/google/home/bauerb/build/clankium/src/net/dns/host_resolver_impl.cc:1238                      0020f309  net::HostResolverImpl::DnsTask::OnTransactionComplete(base::TimeTicks const&, net::DnsTransaction*, int, net::DnsResponse const*)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:209                                001f159f  void base::internal::FunctorTraits<void (disk_cache::SimpleSynchronousEntry::*)(disk_cache::SimpleSynchronousEntry::EntryOperationData const&, net::IOBuffer*, base::Time*, int*), void>::Invoke<disk_cache::SimpleSynchronousEntry*, disk_cache::SimpleSynchronousEntry::EntryOperationData const&, net::IOBuffer*, base::Time* const&, int* const&>(void (disk_cache::SimpleSynchronousEntry::*)(disk_cache::SimpleSynchronousEntry::EntryOperationData const&, net::IOBuffer*, base::Time*, int*), disk_cache::SimpleSynchronousEntry*&&, disk_cache::SimpleSynchronousEntry::EntryOperationData const&, net::IOBuffer*&&, base::Time* const&, int* const&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:275                                001f156d  void base::internal::InvokeHelper<false, void>::MakeItSo<void (disk_cache::SimpleSynchronousEntry::* const&)(disk_cache::SimpleSynchronousEntry::EntryOperationData const&, net::IOBuffer*, base::Time*, int*), disk_cache::SimpleSynchronousEntry*, disk_cache::SimpleSynchronousEntry::EntryOperationData const&, net::IOBuffer*, base::Time* const&, int* const&>(void (disk_cache::SimpleSynchronousEntry::* const&)(disk_cache::SimpleSynchronousEntry::EntryOperationData const&, net::IOBuffer*, base::Time*, int*), disk_cache::SimpleSynchronousEntry*&&, disk_cache::SimpleSynchronousEntry::EntryOperationData const&, net::IOBuffer*&&, base::Time* const&, int* const&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:351                                0020f40d  void base::internal::Invoker<base::internal::BindState<void (net::HostResolverImpl::DnsTask::*)(base::TimeTicks const&, net::DnsTransaction*, int, net::DnsResponse const*), base::internal::UnretainedWrapper<net::HostResolverImpl::DnsTask>, base::TimeTicks>, void (net::DnsTransaction*, int, net::DnsResponse const*)>::RunImpl<void (net::HostResolverImpl::DnsTask::* const&)(base::TimeTicks const&, net::DnsTransaction*, int, net::DnsResponse const*), std::__ndk1::tuple<base::internal::UnretainedWrapper<net::HostResolverImpl::DnsTask>, base::TimeTicks> const&, 0u, 1u>(void (net::HostResolverImpl::DnsTask::* const&)(base::TimeTicks const&, net::DnsTransaction*, int, net::DnsResponse const*), std::__ndk1::tuple<base::internal::UnretainedWrapper<net::HostResolverImpl::DnsTask>, base::TimeTicks> const&, base::IndexSequence<0u, 1u>, net::DnsTransaction*&&, int&&, net::DnsResponse const*&&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:329                                0020f3ef  base::internal::Invoker<base::internal::BindState<void (net::HostResolverImpl::DnsTask::*)(base::TimeTicks const&, net::DnsTransaction*, int, net::DnsResponse const*), base::internal::UnretainedWrapper<net::HostResolverImpl::DnsTask>, base::TimeTicks>, void (net::DnsTransaction*, int, net::DnsResponse const*)>::Run(base::internal::BindStateBase*, net::DnsTransaction*&&, int&&, net::DnsResponse const*&&)
/usr/local/google/home/bauerb/build/clankium/src/base/callback.h:80                                      00208733  base::Callback<void (net::DnsTransaction*, int, net::DnsResponse const*), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>::Run(net::DnsTransaction*, int, net::DnsResponse const*) const &
/usr/local/google/home/bauerb/build/clankium/src/net/dns/dns_transaction.cc:706                          00206cc5  net::(anonymous namespace)::DnsTransactionImpl::DoCallback(net::(anonymous namespace)::DnsTransactionImpl::AttemptResult)
/usr/local/google/home/bauerb/build/clankium/src/net/dns/dns_transaction.cc:833                          00207ce7  net::(anonymous namespace)::DnsTransactionImpl::OnAttemptComplete(unsigned int, int)
/usr/local/google/home/bauerb/build/clankium/src/net/dns/dns_transaction.cc:823                          00207513  net::(anonymous namespace)::DnsTransactionImpl::OnUdpAttemptComplete(unsigned int, base::TimeTicks, int)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:209                                v------>  void base::internal::FunctorTraits<void (net::(anonymous namespace)::DnsTransactionImpl::*)(unsigned int, base::TimeTicks, int), void>::Invoke<net::(anonymous namespace)::DnsTransactionImpl*, unsigned int const&, base::TimeTicks const&, int>(void (net::(anonymous namespace)::DnsTransactionImpl::*)(unsigned int, base::TimeTicks, int), net::(anonymous namespace)::DnsTransactionImpl*&&, unsigned int const&, base::TimeTicks const&, int&&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:275                                v------>  void base::internal::InvokeHelper<false, void>::MakeItSo<void (net::(anonymous namespace)::DnsTransactionImpl::* const&)(unsigned int, base::TimeTicks, int), net::(anonymous namespace)::DnsTransactionImpl*, unsigned int const&, base::TimeTicks const&, int>(void (net::(anonymous namespace)::DnsTransactionImpl::* const&)(unsigned int, base::TimeTicks, int), net::(anonymous namespace)::DnsTransactionImpl*&&, unsigned int const&, base::TimeTicks const&, int&&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:351                                v------>  void base::internal::Invoker<base::internal::BindState<void (net::(anonymous namespace)::DnsTransactionImpl::*)(unsigned int, base::TimeTicks, int), base::internal::UnretainedWrapper<net::(anonymous namespace)::DnsTransactionImpl>, unsigned int, base::TimeTicks>, void (int)>::RunImpl<void (net::(anonymous namespace)::DnsTransactionImpl::* const&)(unsigned int, base::TimeTicks, int), std::__ndk1::tuple<base::internal::UnretainedWrapper<net::(anonymous namespace)::DnsTransactionImpl>, unsigned int, base::TimeTicks> const&, 0u, 1u, 2u>(void (net::(anonymous namespace)::DnsTransactionImpl::* const&)(unsigned int, base::TimeTicks, int), std::__ndk1::tuple<base::internal::UnretainedWrapper<net::(anonymous namespace)::DnsTransactionImpl>, unsigned int, base::TimeTicks> const&, base::IndexSequence<0u, 1u, 2u>, int&&)
/usr/local/google/home/bauerb/build/clankium/src/base/bind_internal.h:329                                00207c89  base::internal::Invoker<base::internal::BindState<void (net::(anonymous namespace)::DnsTransactionImpl::*)(unsigned int, base::TimeTicks, int), base::internal::UnretainedWrapper<net::(anonymous namespace)::DnsTransactionImpl>, unsigned int, base::TimeTicks>, void (int)>::Run(base::internal::BindStateBase*, int&&)
/usr/local/google/home/bauerb/build/clankium/src/base/callback.h:80                                      0016b577  base::Callback<void (net::CertDatabase::Observer*), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>::Run(net::CertDatabase::Observer*) const &
/usr/local/google/home/bauerb/build/clankium/src/base/callback.h:80                                      0016b577  base::Callback<void (net::CertDatabase::Observer*), (base::internal::CopyMode)1, (base::internal::RepeatMode)1>::Run(net::CertDatabase::Observer*) const &
/usr/local/google/home/bauerb/build/clankium/src/net/socket/udp_socket_posix.cc:593                      002ee0b9  net::UDPSocketPosix::DoReadCallback(int)
/usr/local/google/home/bauerb/build/clankium/src/net/socket/udp_socket_posix.cc:615                      002edfc5  net::UDPSocketPosix::DidCompleteRead()
/usr/local/google/home/bauerb/build/clankium/src/net/socket/udp_socket_posix.cc:578                      002ededb  net::UDPSocketPosix::ReadWatcher::OnFileCanReadWithoutBlocking(int)
/usr/local/google/home/bauerb/build/clankium/src/base/message_loop/message_pump_libevent.cc:97           v------>  base::MessagePumpLibevent::FileDescriptorWatcher::OnFileCanReadWithoutBlocking(int, base::MessagePumpLibevent*)
/usr/local/google/home/bauerb/build/clankium/src/base/message_loop/message_pump_libevent.cc:342          000b0e3b  base::MessagePumpLibevent::OnLibeventNotification(int, short, void*)
/usr/local/google/home/bauerb/build/clankium/src/base/third_party/libevent/event.c:381                   v------>  event_process_active
/usr/local/google/home/bauerb/build/clankium/src/base/third_party/libevent/event.c:521                   0011a669  event_base_loop
/usr/local/google/home/bauerb/build/clankium/src/base/message_loop/message_pump_libevent.cc:257          000b1003  base::MessagePumpLibevent::Run(base::MessagePump::Delegate*)
/usr/local/google/home/bauerb/build/clankium/src/base/message_loop/message_loop.cc:369                   000ae979  base::MessageLoop::Run()
/usr/local/google/home/bauerb/build/clankium/src/base/run_loop.cc:111                                    000c8c2d  base::RunLoop::Run()
/usr/local/google/home/bauerb/build/clankium/src/base/threading/thread.cc:255                            000ea2cf  base::Thread::Run(base::RunLoop*)
/usr/local/google/home/bauerb/build/clankium/src/content/browser/browser_thread_impl.cc:278              007a77ad  content::BrowserThreadImpl::IOThreadRun(base::RunLoop*)

 

Comment 1 by bauerb@chromium.org, Jul 12 2017

(Slightly more readable stack trace at https://gist.github.com/sheepmaster/a1d21086ea99761a139a2f5f2a3ae167)

Comment 2 by rch@chromium.org, Jul 12 2017

Cc: fayang@chromium.org
fayang: can you take a look at this?

bauerb: Do you have any more info on what led to this DCHECK?

Comment 3 by fayang@google.com, Jul 12 2017

Working on this.

Comment 4 by bauerb@chromium.org, Jul 12 2017

Thanks for looking into this! It happens right at startup for me, even after I've cleared all data.

Comment 5 by fayang@google.com, Jul 12 2017

I think the problem is write error happens when connection tries to write CHLO packet. Then creator tries to serialize connection close packet, and this DCHECK is hit.

Working on a fix.

Comment 6 by rch@chromium.org, Jul 12 2017

That was fast! Thanks.

Comment 7 by joh...@chromium.org, Jul 13 2017

Happens every startup for me too, on a clean install of chrome_public_apk incremental build. Thanks for fixing this quickly :)

Comment 8 by fayang@google.com, Jul 13 2017

I have a change in flight. At the mean time, is it possible to grab a net-internals please? As we are really surprising that CHLO is too large and causes WRITE ERROR. It would be great to see the content of this large CHLO.

Comment 9 by bauerb@chromium.org, Jul 14 2017

Network dump is attached.
netlog.json
140 KB View Download
Sorry, I can't repro anymore. I don't remember syncing, but perhaps I did and rolled in a fix?

Comment 11 by fayang@google.com, Jul 14 2017

Thank you for the help:) The fix is not landed yet. I am trying to reproduce myself. The root cause is CHLO is too large to be written, which is scary.
Cc: ianswett@chromium.org rch@chromium.org
Thanks Bauerb@, for the log.  I don't see any QUIC_SESSIONs being logged, but possibly Chrome crashed before logging?

Fan's patch will stop the crash, but the underlying issue of an overly large handshake message would still be a problem, and that's at least as concerning.

If anyone can repro this, possibly run in non-debug mode, so it doesn't immediately crash, but it does traverse the code that would crash, would result in a more informative net-internals?

rch@, maybe we should add a histogram for how often this failure occurs and/or how large the CHLO is?
I modified my local build to log an error instead of crashing when the check fails; netlog is attached.

Also, logcat output:

07-19 11:48:06.475  2311  2374 E chromium: [ERROR:quic_packet_creator.cc(592)] XXX
07-19 11:48:06.476  2311  2374 E chromium: [ERROR:quic_connection.cc(1644)] Client: Write failed with error: -142 (Unknown error -142)
07-19 11:48:06.476  2311  2374 E chromium: [ERROR:quic_connection.cc(1557)] Client: failed writing 1350 bytes from host Uninitialized address to address [2a00:1450:400c:c09::5f]:443 with error code -142
07-19 11:48:06.476  2311  2374 E chromium: [ERROR:quic_connection.cc(1557)] Client: failed writing 1350 bytes from host Uninitialized address to address [2a00:1450:400c:c09::5f]:443 with error code -142
07-19 11:48:06.527  2311  2374 E chromium: [ERROR:quic_packet_creator.cc(592)] XXX
07-19 11:48:06.528  2311  2374 E chromium: [ERROR:quic_connection.cc(1644)] Client: Write failed with error: -142 (Unknown error -142)
07-19 11:48:06.528  2311  2374 E chromium: [ERROR:quic_connection.cc(1557)] Client: failed writing 1350 bytes from host Uninitialized address to address [2a00:1450:400c:c0b::d3]:443 with error code -142
07-19 11:48:06.528  2311  2374 E chromium: [ERROR:quic_connection.cc(1557)] Client: failed writing 1350 bytes from host Uninitialized address to address [2a00:1450:400c:c0b::d3]:443 with error code -142
07-19 11:48:06.532  2311  2374 E chromium: [ERROR:quic_packet_creator.cc(592)] XXX
07-19 11:48:06.533  2311  2374 E chromium: [ERROR:quic_connection.cc(1644)] Client: Write failed with error: -142 (Unknown error -142)
07-19 11:48:06.533  2311  2374 E chromium: [ERROR:quic_connection.cc(1557)] Client: failed writing 1350 bytes from host Uninitialized address to address [2a00:1450:400c:c07::5f]:443 with error code -142
07-19 11:48:06.533  2311  2374 E chromium: [ERROR:quic_connection.cc(1557)] Client: failed writing 1350 bytes from host Uninitialized address to address [2a00:1450:400c:c07::5f]:443 with error code -142

netlog.json
260 KB View Download
Thanks for the log, it's very useful.  

Now that I look at the log, it looks like Fan's fix will completely fix the issue, because the issue isn't that a CHLO can't be serialized because the contents are too large(as I feared), but rather that the packet being sent is too large to write on a local socket, so the write immediately fails.
Cc: -fayang@chromium.org
Owner: fayang@chromium.org
Status: Assigned (was: Untriaged)
Ping? I still hit this on a regular basis in my dev build, which requires me to locally patch over the DCHECK.
Sorry for the late reply.
This should be fixed in https://chromium.googlesource.com/chromium/src/+/2a1699ad06fecfc715ba2652892bebd6a2ce1df6#
And the fix is protected by FLAGS_quic_reloadable_flag_quic_clear_packet_before_handed_over which is not turned on internally. So it is not turned on in chromium also.

I will ping Ryan to see whether I should land a change to turn on this flag.

Comment 17 by rch@chromium.org, Aug 10 2017

I think this should be fixed via https://chromium-review.googlesource.com/c/610125 which fayang just landed.

fayang: does that sound right?
Yes, exactly. I will close this issue. Thanks, Ryan!
Status: Fixed (was: Assigned)

Sign in to add a comment