DCHECK failure in QuicPacketCreator::MaybeAddPadding() |
|||||
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*)
,
Jul 12 2017
fayang: can you take a look at this? bauerb: Do you have any more info on what led to this DCHECK?
,
Jul 12 2017
Working on this.
,
Jul 12 2017
Thanks for looking into this! It happens right at startup for me, even after I've cleared all data.
,
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.
,
Jul 12 2017
That was fast! Thanks.
,
Jul 13 2017
Happens every startup for me too, on a clean install of chrome_public_apk incremental build. Thanks for fixing this quickly :)
,
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.
,
Jul 14 2017
Network dump is attached.
,
Jul 14 2017
Sorry, I can't repro anymore. I don't remember syncing, but perhaps I did and rolled in a fix?
,
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.
,
Jul 18 2017
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?
,
Jul 19 2017
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
,
Jul 19 2017
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.
,
Aug 10 2017
Ping? I still hit this on a regular basis in my dev build, which requires me to locally patch over the DCHECK.
,
Aug 10 2017
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.
,
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?
,
Aug 10 2017
Yes, exactly. I will close this issue. Thanks, Ryan!
,
Aug 10 2017
|
|||||
►
Sign in to add a comment |
|||||
Comment 1 by bauerb@chromium.org
, Jul 12 2017