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

Issue 840488 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 1
Type: Bug



Sign in to add a comment

Crash in Cronet metrics

Project Member Reported by kapishnikov@chromium.org, May 7 2018

Issue description

When Cronet metrics are enabled, an app sometimes can crash with a stack trace provided below. Presumably, it happens when the app is in background. There are no specific instructions how to reproduce it.

Thread 31 Crashed:
0 0x00000001009087ac std::__1::__tree_iterator<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, std::__1::__tree_node<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, void*>*, long> std::__1::__tree<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, std::__1::__map_value_compare<NSURLSessionTask* __strong, std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, std::__1::less<NSURLSessionTask* __strong>, true>, std::__1::allocator<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > > > >::find<NSURLSessionTask* __strong>(NSURLSessionTask* __strong const&) + 20
1 0x0000000100908554 cronet::CronetMetricsDelegate::OnStopNetRequest(std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> >) + 76
2 0x0000000100cc296c net::HttpProtocolHandlerCore::StopNetRequest() + 168
3 0x0000000100cc3140 net::HttpProtocolHandlerCore::OnReadCompleted(net::URLRequest*, int) + 280
4 0x0000000100bb8894 base::internal::Invoker<base::internal::BindState<void (net::URLRequestJob::*)(bool, int), base::WeakPtr<net::URLRequestJob>, bool>, void (int)>::Run(base::internal::BindStateBase*, int) + 36
5 0x00000001008fdc74 base::RepeatingCallback<void (int)>::Run(int) && + 48
6 0x0000000100bb84bc net::URLRequestJob::ReadRawDataComplete(int) + 48 7 0x0000000100bb559c net::URLRequestHttpJob::OnReadCompleted(int
 
Cc: lilyhoughton@chromium.org

Comment 2 by pkl@chromium.org, May 7 2018

kapishnikov@ - Can you help triage this since this really isn't something in Chrome that we are familiar with?
Cc: mef@chromium.org
From the client: "This seems to happen when app is about to move from the active to inactive state. Seems always happen after applicationWillResignActive: and applicationDidEnterBackgroundis called".

other threads that might be related:
Chrome File Thread
0  libsystem_kernel.dylib         0x18166fe08 mach_msg_trap + 8
1  libsystem_kernel.dylib         0x18166fc80 mach_msg + 72
2  CoreFoundation                 0x181bb2e40 __CFRunLoopServiceMachPort + 196
3  CoreFoundation                 0x181bb0908 __CFRunLoopRun + 1568
4  CoreFoundation                 0x181ad0da8 CFRunLoopRunSpecific + 552
5  Foundation                     0x182545674 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
6  app                            0x100807bd8 base::MessagePumpNSRunLoop::DoRun(base::MessagePump::Delegate*) + 4330453976
7  app                            0x1008069e8 base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) + 4330449384
8  app                            0x1007a3e4c base::RunLoop::Run() + 4330045004
9  app                            0x1007d53b0 base::Thread::ThreadMain() + 4330247088
10 app                            0x1007cdec4 base::(anonymous namespace)::ThreadFunc(void*) + 4330217156
11 libsystem_pthread.dylib        0x181831220 _pthread_body + 272
12 libsystem_pthread.dylib        0x181831110 _pthread_body + 290
13 libsystem_pthread.dylib        0x18182fb10 thread_start + 4
DnsConfigService
0  libsystem_kernel.dylib         0x18166fe08 mach_msg_trap + 8
1  libsystem_kernel.dylib         0x18166fc80 mach_msg + 72
2  CoreFoundation                 0x181bb2e40 __CFRunLoopServiceMachPort + 196
3  CoreFoundation                 0x181bb0908 __CFRunLoopRun + 1568
4  CoreFoundation                 0x181ad0da8 CFRunLoopRunSpecific + 552
5  Foundation                     0x182545674 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
6  app                            0x100807bd8 base::MessagePumpNSRunLoop::DoRun(base::MessagePump::Delegate*) + 4330453976
7  app                            0x1008069e8 base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) + 4330449384
8  app                            0x1007a3e4c base::RunLoop::Run() + 4330045004
9  app                            0x1007d53b0 base::Thread::ThreadMain() + 4330247088
10 app                            0x1007cdec4 base::(anonymous namespace)::ThreadFunc(void*) + 4330217156
11 libsystem_pthread.dylib        0x181831220 _pthread_body + 272
12 libsystem_pthread.dylib        0x181831110 _pthread_body + 290
13 libsystem_pthread.dylib        0x18182fb10 thread_start + 4
NetworkConfigWatcher
0  libsystem_kernel.dylib         0x18166fe08 mach_msg_trap + 8
1  libsystem_kernel.dylib         0x18166fc80 mach_msg + 72
2  CoreFoundation                 0x181bb2e40 __CFRunLoopServiceMachPort + 196
3  CoreFoundation                 0x181bb0908 __CFRunLoopRun + 1568
4  CoreFoundation                 0x181ad0da8 CFRunLoopRunSpecific + 552
5  Foundation                     0x182545674 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
6  app                            0x100807bd8 base::MessagePumpNSRunLoop::DoRun(base::MessagePump::Delegate*) + 4330453976
7  app                            0x1008069e8 base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) + 4330449384
8  app                            0x1007a3e4c base::RunLoop::Run() + 4330045004
9  app                            0x1007d53b0 base::Thread::ThreadMain() + 4330247088
10 app                            0x1007cdec4 base::(anonymous namespace)::ThreadFunc(void*) + 4330217156
11 libsystem_pthread.dylib        0x181831220 _pthread_body + 272
12 libsystem_pthread.dylib        0x181831110 _pthread_body + 290
13 libsystem_pthread.dylib        0x18182fb10 thread_start + 4
TaskSchedulerForegroundWorker
0  libsystem_kernel.dylib         0x18166fe08 mach_msg_trap + 8
1  libsystem_kernel.dylib         0x18166fc80 mach_msg + 72
2  app                            0x10080900c base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) + 4330459148
3  app                            0x100809110 base::WaitableEvent::TimedWait(base::TimeDelta const&) + 4330459408
4  app                            0x1007bdf5c base::internal::SchedulerWorker::Delegate::WaitForWork(base::WaitableEvent*) + 4330151772
5  app                            0x1007be6f4 base::internal::SchedulerWorker::Thread::ThreadMain() + 4330153716
6  app                            0x1007cdec4 base::(anonymous namespace)::ThreadFunc(void*) + 4330217156
7  libsystem_pthread.dylib        0x181831220 _pthread_body + 272
8  libsystem_pthread.dylib        0x181831110 _pthread_body + 290
9  libsystem_pthread.dylib        0x18182fb10 thread_start + 4
TaskSchedulerBackgroundBlockingWorker
0  libsystem_kernel.dylib         0x18166fe08 mach_msg_trap + 8
1  libsystem_kernel.dylib         0x18166fc80 mach_msg + 72
2  app                            0x10080900c base::WaitableEvent::TimedWaitUntil(base::TimeTicks const&) + 4330459148
3  app                            0x100809110 base::WaitableEvent::TimedWait(base::TimeDelta const&) + 4330459408
4  app                            0x1007bdf5c base::internal::SchedulerWorker::Delegate::WaitForWork(base::WaitableEvent*) + 4330151772
5  app                            0x1007be6f4 base::internal::SchedulerWorker::Thread::ThreadMain() + 4330153716
6  app                            0x1007cdec4 base::(anonymous namespace)::ThreadFunc(void*) + 4330217156
7  libsystem_pthread.dylib        0x181831220 _pthread_body + 272
8  libsystem_pthread.dylib        0x181831110 _pthread_body + 290
9  libsystem_pthread.dylib        0x18182fb10 thread_start + 4

Comment 4 by j...@snapchat.com, May 8 2018

The more frequent stack trace when crash is like this:

Thread 31 Crashed:
0   Snapchat                             0x00000001009087ac std::__1::__tree_iterator<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, std::__1::__tree_node<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, void*>*, long> std::__1::__tree<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, std::__1::__map_value_compare<NSURLSessionTask* __strong, std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, std::__1::less<NSURLSessionTask* __strong>, true>, std::__1::allocator<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > > > >::find<NSURLSessionTask* __strong>(NSURLSessionTask* __strong const&) + 20
1   Snapchat                             0x0000000100908554 cronet::CronetMetricsDelegate::OnStopNetRequest(std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> >) + 76
2   Snapchat                             0x0000000100cc296c net::HttpProtocolHandlerCore::StopNetRequest() + 168
3   Snapchat                             0x0000000100cc3140 net::HttpProtocolHandlerCore::OnReadCompleted(net::URLRequest*, int) + 280
4   Snapchat                             0x0000000100bb8894 base::internal::Invoker<base::internal::BindState<void (net::URLRequestJob::*)(bool, int), base::WeakPtr<net::URLRequestJob>, bool>, void (int)>::Run(base::internal::BindStateBase*, int) + 36
5   Snapchat                             0x00000001008fdc74 base::RepeatingCallback<void (int)>::Run(int) && + 48
6   Snapchat                             0x0000000100bb84bc net::URLRequestJob::ReadRawDataComplete(int) + 48
7   Snapchat                             0x0000000100bb559c net::URLRequestHttpJob::OnReadCompleted(int) + 112
8   Snapchat                             0x0000000100bb6960 void base::internal::Invoker<base::internal::BindState<void (net::URLRequestHttpJob::*)(int), base::internal::UnretainedWrapper<net::URLRequestHttpJob> >, void (int)>::RunImpl<void (net::URLRequestHttpJob::* const&)(int), std::__1::tuple<base::internal::UnretainedWrapper<net::URLRequestHttpJob> > const&, 0ul>(void (net::URLRequestHttpJob::* const&&&)(int), std::__1::tuple<base::internal::UnretainedWrapper<net::URLRequestHttpJob> > const&&&, std::__1::integer_sequence<unsigned long, 0ul>, int&&) + 24
9   Snapchat                             0x0000000100bb6938 base::internal::Invoker<base::internal::BindState<void (net::URLRequestHttpJob::*)(int), base::internal::UnretainedWrapper<net::URLRequestHttpJob> >, void (int)>::Run(base::internal::BindStateBase*, int) + 32
10  Snapchat                             0x0000000100a9bb68 net::HttpNetworkTransaction::DoCallback(int) + 56
11  Snapchat                             0x0000000100a9e114 void base::internal::Invoker<base::internal::BindState<void (net::HttpNetworkTransaction::*)(int), base::internal::UnretainedWrapper<net::HttpNetworkTransaction> >, void (int)>::RunImpl<void (net::HttpNetworkTransaction::* const&)(int), std::__1::tuple<base::internal::UnretainedWrapper<net::HttpNetworkTransaction> > const&, 0ul>(void (net::HttpNetworkTransaction::* const&&&)(int), std::__1::tuple<base::internal::UnretainedWrapper<net::HttpNetworkTransaction> > const&&&, std::__1::integer_sequence<unsigned long, 0ul>, int&&) + 24
12  Snapchat                             0x0000000100a9e0ec base::internal::Invoker<base::internal::BindState<void (net::HttpNetworkTransaction::*)(int), base::internal::UnretainedWrapper<net::HttpNetworkTransaction> >, void (int)>::Run(base::internal::BindStateBase*, int) + 32
13  Snapchat                             0x00000001008fdc74 base::RepeatingCallback<void (int)>::Run(int) && + 48
14  Snapchat                             0x0000000100b83760 net::SpdyHttpStream::DoResponseCallback(int) + 56
15  Snapchat                             0x0000000100b83974 net::SpdyHttpStream::OnClose(int) + 160
16  Snapchat                             0x0000000100b987bc net::SpdyStream::OnClose(int) + 72
17  Snapchat                             0x0000000100b8b9cc net::SpdySession::DeleteStream(std::__1::unique_ptr<net::SpdyStream, std::__1::default_delete<net::SpdyStream> >, int) + 112
18  Snapchat                             0x0000000100b89830 net::SpdySession::CloseActiveStreamIterator(std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::__value_type<unsigned int, net::SpdyStream*>, std::__1::__tree_node<std::__1::__value_type<unsigned int, net::SpdyStream*>, void*>*, long> >, int) + 176
19  Snapchat                             0x0000000100b8976c net::SpdySession::CloseActiveStream(unsigned int, int) + 68
20  Snapchat                             0x0000000100b8e0ac net::SpdySession::OnStreamEnd(unsigned int) + 176
21  Snapchat                             0x0000000100ba2584 net::Http2DecoderAdapter::CommonHpackFragmentEnd() + 264
22  Snapchat                             0x0000000100ba245c net::Http2DecoderAdapter::OnHeadersEnd() + 16
23  Snapchat                             0x0000000100ac13d4 net::HeadersPayloadDecoder::StartDecodingPayload(net::FrameDecoderState*, net::DecodeBuffer*) + 148
24  Snapchat                             0x0000000100abf944 net::Http2FrameDecoder::StartDecodingPayload(net::DecodeBuffer*) + 252
25  Snapchat                             0x0000000100ba187c net::Http2DecoderAdapter::ProcessInputFrame(char const*, unsigned long) + 60
26  Snapchat                             0x0000000100ba180c net::Http2DecoderAdapter::ProcessInput(char const*, unsigned long) + 68
27  Snapchat                             0x0000000100b8c0f0 net::SpdySession::DoReadComplete(int) + 100
28  Snapchat                             0x0000000100b8bde0 net::SpdySession::DoReadLoop(net::SpdySession::ReadState, int) + 132
29  Snapchat                             0x0000000100b9166c base::internal::Invoker<base::internal::BindState<void (net::SpdySession::*)(net::SpdySession::ReadState, int), base::WeakPtr<net::SpdySession>, net::SpdySession::ReadState>, void (int)>::Run(base::internal::BindStateBase*, int) + 36
30  Snapchat                             0x00000001008fdc74 base::RepeatingCallback<void (int)>::Run(int) && + 48
31  Snapchat                             0x00000001009fac3c net::SSLClientSocketImpl::DoReadCallback(int) + 76
32  Snapchat                             0x00000001009faa0c net::SSLClientSocketImpl::RetryAllOperations() + 160
33  Snapchat                             0x00000001009f8744 base::internal::Invoker<base::internal::BindState<void (net::SocketBIOAdapter::*)(int), base::WeakPtr<net::SocketBIOAdapter> >, void (int)>::Run(base::internal::BindStateBase*, int) + 32
34  Snapchat                             0x0000000100b73568 void base::internal::Invoker<base::internal::BindState<void (net::TCPClientSocket::*)(base::RepeatingCallback<void (int)> const&, int), base::internal::UnretainedWrapper<net::TCPClientSocket>, base::RepeatingCallback<void (int)> >, void (int)>::RunImpl<void (net::TCPClientSocket::* const&)(base::RepeatingCallback<void (int)> const&, int), std::__1::tuple<base::internal::UnretainedWrapper<net::TCPClientSocket>, base::RepeatingCallback<void (int)> > const&, 0ul, 1ul>(void (net::TCPClientSocket::* const&&&)(base::RepeatingCallback<void (int)> const&, int), std::__1::tuple<base::internal::UnretainedWrapper<net::TCPClientSocket>, base::RepeatingCallback<void (int)> > const&&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul>, int&&) + 40
35  Snapchat                             0x0000000100b73530 base::internal::Invoker<base::internal::BindState<void (net::TCPClientSocket::*)(base::RepeatingCallback<void (int)> const&, int), base::internal::UnretainedWrapper<net::TCPClientSocket>, base::RepeatingCallback<void (int)> >, void (int)>::Run(base::internal::BindStateBase*, int) + 32
36  Snapchat                             0x0000000100b756b8 void base::internal::Invoker<base::internal::BindState<void (net::TCPSocketPosix::*)(base::RepeatingCallback<void (int)> const&, int), base::internal::UnretainedWrapper<net::TCPSocketPosix>, base::RepeatingCallback<void (int)> >, void (int)>::RunImpl<void (net::TCPSocketPosix::* const&)(base::RepeatingCallback<void (int)> const&, int), std::__1::tuple<base::internal::UnretainedWrapper<net::TCPSocketPosix>, base::RepeatingCallback<void (int)> > const&, 0ul, 1ul>(void (net::TCPSocketPosix::* const&&&)(base::RepeatingCallback<void (int)> const&, int), std::__1::tuple<base::internal::UnretainedWrapper<net::TCPSocketPosix>, base::RepeatingCallback<void (int)> > const&&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul>, int&&) + 40
37  Snapchat                             0x0000000100b75680 base::internal::Invoker<base::internal::BindState<void (net::TCPSocketPosix::*)(base::RepeatingCallback<void (int)> const&, int), base::internal::UnretainedWrapper<net::TCPSocketPosix>, base::RepeatingCallback<void (int)> >, void (int)>::Run(base::internal::BindStateBase*, int) + 32
38  Snapchat                             0x00000001008fdc74 base::RepeatingCallback<void (int)>::Run(int) && + 48
39  Snapchat                             0x0000000100b6cbbc net::SocketPosix::ReadCompleted() + 48
40  Snapchat                             0x0000000100b6ca84 net::SocketPosix::OnFileCanReadWithoutBlocking(int) + 80
41  Snapchat                             0x0000000100939af8 base::MessagePumpIOSForIO::HandleFdIOEvent(__CFFileDescriptor*, unsigned long, void*) + 116
42  CoreFoundation                       0x0000000183ed32e8 __CFFileDescriptorPerform + 400
43  CoreFoundation                       0x0000000183ef3404 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 20
44  CoreFoundation                       0x0000000183ef2c2c __CFRunLoopDoSources0 + 272
45  CoreFoundation                       0x0000000183ef079c __CFRunLoopRun + 1200
46  CoreFoundation                       0x0000000183e10da8 CFRunLoopRunSpecific + 548
47  Foundation                           0x0000000184885674 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 300
48  Snapchat                             0x00000001009bc8d8 base::MessagePumpNSRunLoop::DoRun(base::MessagePump::Delegate*) + 132
49  Snapchat                             0x00000001009bb6e8 base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) + 104
50  Snapchat                             0x0000000100958b4c base::RunLoop::Run() + 84
51  Snapchat                             0x000000010098a0b0 base::Thread::ThreadMain() + 384
52  Snapchat                             0x0000000100982bc4 base::(anonymous namespace)::ThreadFunc(void*) + 96
53  libsystem_pthread.dylib              0x0000000183b71220 _pthread_body + 268
54  libsystem_pthread.dylib              0x0000000183b71110 _pthread_start + 288
55  libsystem_pthread.dylib              0x0000000183b6fb10 thread_start + 0

Comment 5 by mef@chromium.org, May 8 2018

One of the theories is that static map is getting destroyed on main thread while still being used on networking thread. 

We've seen similar races in the past during app shutdown.

Could you confirm what is main thread doing at the time of the crash?

Is this crash readily reproducible?

Comment 6 by j...@snapchat.com, May 8 2018

Main thread:
com.apple.main-thread

0  libobjc.A.dylib                0x1810817ec objc_object::release() + 8
1  ModelIO                        0x18e0480e0 ModelIO::RTGeometry::intersectRay(ModelIO::RTRaySegment const&, ModelIO::RTIntersectionResult&) const + 95276
2  libsystem_c.dylib              0x1818a08f0 __cxa_finalize_ranges + 384
3  libsystem_c.dylib              0x18184a25c exit + 24
4  UIKit                          0x18bd59f34 -[UIApplication applicationWillTerminate] + 466
5  UIKit                          0x18c0787b4 __98-[__UICanvasLifecycleMonitor_Compatability deactivateEventsOnly:withContext:forceExit:completion:]_block_invoke.271 + 336
6  UIKit                          0x18be628b8 _runAfterCACommitDeferredBlocks + 296
7  UIKit                          0x18be5898c _cleanUpAfterCAFlushAndRunDeferredBlocks + 384
8  UIKit                          0x18bd3d550 _afterCACommitHandler + 132
9  CoreFoundation                 0x181e52910 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
10 CoreFoundation                 0x181e50238 __CFRunLoopDoObservers + 412
11 CoreFoundation                 0x181e50884 __CFRunLoopRun + 1436
12 CoreFoundation                 0x181d70da8 CFRunLoopRunSpecific + 552
13 GraphicsServices               0x183d53020 GSEventRunModal + 100
14 UIKit                          0x18bd5178c UIApplicationMain + 236
15 Snapchat                       0x10052d7d0 main (main.m:39)
16 libdyld.dylib                  0x181801fc0 start + 4
Looks like the crash happened when the app was terminating:
4 UIKit 0x18bd59f34 -[UIApplication applicationWillTerminate] + 466
Owner: kapishnikov@chromium.org
Status: Started (was: Untriaged)
I instrumented the code to reproduce this crash with 100% reliability. I can confirm that it happens when the app is terminating. It should not impact the user experience (still the fix is required). Here is how the main thread looks:

  thread #1, queue = 'com.apple.main-thread'
    ...
    frame #2: 0x00000001870c9bb8 libsystem_c.dylib`__cxa_finalize_ranges + 384
    frame #3: 0x00000001870730a0 libsystem_c.dylib`exit + 24
    frame #4: 0x0000000190b00670 UIKit`-[UIApplication _terminateWithStatus:] + 476
    frame #5: 0x0000000101637978 cronet_test`::-[ChromeUnitTestDelegate runTests](self=0x00000001c000f8d0, _cmd="runTests") at test_support_ios.mm:172

Here is the crashing thread:
    ...
    frame #3: 0x0000000102b8599c Cronet`std::__1::__tree_iterator<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, std::__1::__tree_node<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, void*>*, long> std::__1::__tree<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, std::__1::__map_value_compare<NSURLSessionTask* __strong, std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > >, std::__1::less<NSURLSessionTask* __strong>, true>, std::__1::allocator<std::__1::__value_type<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > > > >::find<NSURLSessionTask* __strong>(this=0x0000000103c7ce90, __v=0x0000000109e42b30) at __tree:2412
    frame #4: 0x0000000102b84d7c Cronet`cronet::CronetMetricsDelegate::OnStopNetRequest(std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> >) [inlined] std::__1::map<NSURLSessionTask* __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> >, std::__1::less<NSURLSessionTask* __strong>, std::__1::allocator<std::__1::pair<NSURLSessionTask* const __strong, std::__1::unique_ptr<net::MetricsDelegate::Metrics, std::__1::default_delete<net::MetricsDelegate::Metrics> > > > >::find(this=0x0000000103c7ce90 size=100, __k=0x0000000109e42b30) at map:1210

I will work on the fix. 
 
 
 
Project Member

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

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

commit 7ebafc69e94d741b58e2a75b02206c206b4432c9
Author: kapishnikov <kapishnikov@chromium.org>
Date: Wed May 09 01:10:50 2018

Cronet iOS: Make metrics map leaky

Make the map that contains collected metrics data leaky. This
fixes the issue when the static objects are deallocated by
the main thread while the network thread is still active.
This can happen when the app that uses Cronet is terminated.

BUG= 840488 

Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: I5d8a3f06ead10071d5598fee0ae0203490a0a412
Reviewed-on: https://chromium-review.googlesource.com/1050766
Commit-Queue: Andrei Kapishnikov <kapishnikov@chromium.org>
Reviewed-by: Misha Efimov <mef@chromium.org>
Cr-Commit-Position: refs/heads/master@{#557044}
[modify] https://crrev.com/7ebafc69e94d741b58e2a75b02206c206b4432c9/components/cronet/ios/cronet_metrics.h
[modify] https://crrev.com/7ebafc69e94d741b58e2a75b02206c206b4432c9/components/cronet/ios/cronet_metrics.mm

Status: Fixed (was: Started)

Sign in to add a comment