繁体   English   中英

iOS崩溃CFNetwork CoreStreamBase :: _ streamsetEventAndScheduleDelivery(unsigned long,unsigned char)

[英]iOS Crash CFNetwork CoreStreamBase::_streamSetEventAndScheduleDelivery(unsigned long, unsigned char)

我已经收到有关上述问题的Crashlytics崩溃报告。

看来问题与CFNetwork有关,但是,我不直接称之为。 但是,我确实使用了似乎引用了它的可达性类。

谁能帮助我找到应该在哪里寻找的机会?

随函附上相关日志。

Thread : Crashed: com.apple.root.default-priority
0  libsystem_platform.dylib       0x3accd810 _os_lock_corruption_abort + 18446744073709552000
1  libsystem_platform.dylib       0x3accd80f _OSSpinLockLockSlow$VARIANT$mp + 102
2  CFNetwork                      0x2fec857b CoreStreamBase::_streamSetEventAndScheduleDelivery(unsigned long, unsigned char) + 30
3  CFNetwork                      0x2fec6f85 CoreStreamBase::_streamInterface_Open() + 108
4  CFNetwork                      0x2feeb56b HTTPReadStream::startRequest(CFStreamError*) + 858
5  CFNetwork                      0x2feeae95 HTTPReadStream::_streamImpl_Open(CFStreamError*, unsigned char*) + 416
6  CFNetwork                      0x2ff23933 non-virtual thunk to HTTPReadStream::_streamImpl_Open(CFStreamError*, unsigned char*) + 10
7  CFNetwork                      0x2fec6f45 CoreStreamBase::_streamInterface_Open() + 44
8  CFNetwork                      0x2ff12c39 ___ZL24executionContextSchedulePvP11__CFRunLoopPK10__CFString_block_invoke + 448
9  libdispatch.dylib              0x3ab8ed7b _dispatch_call_block_and_release + 10
10 libdispatch.dylib              0x3ab95da5 _dispatch_root_queue_drain + 220
11 libdispatch.dylib              0x3ab95f8d _dispatch_worker_thread2 + 56
12 libsystem_pthread.dylib        0x3acd0dbf _pthread_wqthread + 298


Thread : com.apple.main-thread
0  libobjc.A.dylib                0x3a6a6b22 objc_msgSend + 1
1  CoreFoundation                 0x3020ff33 -[__NSDictionaryM objectForKey:] + 70
2  Foundation                     0x30c2a85b -[NSDateFormatter setDateFormat:] + 82
3  AppTest00001                   0x00098c73 -[AppDelegate checkSubs] (AppDelegate.m:342)
4  AppTest00001                   0x0009785b -[AppDelegate application:didFinishLaunchingWithOptions:] (AppDelegate.m:102)
5  UIKit                          0x32ab4cb7 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 274
6  UIKit                          0x32ab4707 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1390
7  UIKit                          0x32aaed13 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 714
8  UIKit                          0x32a496a7 -[UIApplication handleEvent:withNewEvent:] + 3130
9  UIKit                          0x32a489a9 -[UIApplication sendEvent:] + 72
10 UIKit                          0x32aae4fd _UIApplicationHandleEvent + 664
11 GraphicsServices               0x34f2870d _PurpleEventCallback + 608
12 GraphicsServices               0x34f282f7 PurpleEventCallback + 34
13 CoreFoundation                 0x3029d9e7 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34
14 CoreFoundation                 0x3029d983 __CFRunLoopDoSource1 + 346
15 CoreFoundation                 0x3029c157 __CFRunLoopRun + 1398
16 CoreFoundation                 0x30206ce7 CFRunLoopRunSpecific + 522
17 CoreFoundation                 0x30206acb CFRunLoopRunInMode + 106
18 UIKit                          0x32aad799 -[UIApplication _run] + 760
19 UIKit                          0x32aa8a41 UIApplicationMain + 1136
20 AppTest00001                   0x0009cd3f main (main.m:16)

线程:com.apple.CFURLCACHE_work_queue 0 libsystem_kernel.dylib
0x3ac588fc PREAD + 20 1 libsqlite3.dylib 0x3a94e5bd sqlite3_snprintf + 8252 2 libsqlite3.dylib 0x3a961b0d sqlite3_finalize + 11428 3 libsqlite3.dylib 0x3a961629 sqlite3_finalize + 10176 4 libsqlite3.dylib 0x3a960f9d sqlite3_finalize + 8500 5 libsqlite3.dylib 0x3a960299 sqlite3_finalize + 5168 6 libsqlite3.dylib 0x3a95d183 sqlite3_exec + 55702 7 libsqlite3.dylib 0x3a95cf99 sqlite3_exec + 55212 8 libsqlite3.dylib 0x3a959c0f sqlite3_exec + 42018 9 libsqlite3.dylib 0x3a953853 sqlite3_exec + 16486 10 libsqlite3.dylib 0x3a950f9d sqlite3_exec + lib64113dy3_exec + lib64113dy3_exec + lib6437973dy3 0x3ite3 exec + 6064797。 13 libsqlite3.dylib 0x3a94fe4d sqlite3_exec + 1632 14 libsqlite3.dylib 0x3a94f927 sqlite3_exec + 314 15 CFNetwork 0x2fecb797 __CFURLCache :: OpenDatabase()+ 246 16 CFNetwork 0x2ff08edd __CFURLCache :: ProcessCacheTasks0(bool)
0x2ff08c21 __CFURLCache :: ProcessCacheTasks(bool)+ 36 18 CFNetwork
0x2ff08ab7 __CFURLCache :: _ CFURLCacheTimerCallback0()+ 626 19 CFNetwork的0x2ff08839 __CFURLCache :: _ CFURLCacheTimerCallback(无效*)+ 32 20 CFNetwork的0x2ff0c339 ___ZN12__CFURLCache29SignalWorkerTaskToPerformWorkEv_block_invoke + 12 21 libdispatch.dylib 0x3ab8ed7b _dispatch_call_block_and_release + 10 22 libdispatch.dylib 0x3ab95297 _dispatch_queue_drain $ $ VARIANT熔点+ 374 23 libdispatch .dylib 0x3ab9509b _dispatch_queue_invoke $ VARIANT $ mp + 42 24 libdispatch.dylib 0x3ab95d15 _dispatch_root_queue_drain + 76 25 libdispatch.dylib
0x3ab95f8d _dispatch_worker_thread2 + 56 26 libsystem_pthread.dylib
0x3acd0dbf _pthread_wqthread + 298

Thread : com.apple.NSURLConnectionLoader (com.apple.root.default-overcommit-priority)
0  libsystem_kernel.dylib         0x3ac69fa8 __psynch_mutexwait + 24
1  libsystem_pthread.dylib        0x3acd0f0f _pthread_mutex_lock + 306
2  CFNetwork                      0x2ff12ea7 PACEntryStreamCallback(__CoreReadStream*, unsigned long, void*) + 70
3  CFNetwork                      0x2fec8831 CoreReadStreamClient::coreStreamEventsAvailable(unsigned long) + 36
4  CFNetwork                      0x2ff6f173 CoreStreamBase::_callClientNow(CoreStreamClient*) + 42
5  CFNetwork                      0x2ff6f193 ___ZN14CoreStreamBase34_streamSetEventAndScheduleDeliveryEmh_block_invoke + 22
6  CFNetwork                      0x2ff7031f ___ZNK17CoreSchedulingSet13_performAsyncEPKcU13block_pointerFvvE_block_invoke + 18
7  CoreFoundation                 0x30206719 CFArrayApplyFunction + 36
8  CFNetwork                      0x2fed6c3d RunloopBlockContext::perform() + 164
9  CFNetwork                      0x2fed6b0d MultiplexerSource::perform() + 220
10 CFNetwork                      0x2fed69a1 MultiplexerSource::_perform(void*) + 48
11 CoreFoundation                 0x3029e18b __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
12 CoreFoundation                 0x3029d65b __CFRunLoopDoSources0 + 206
13 CoreFoundation                 0x3029be4f __CFRunLoopRun + 622
14 CoreFoundation                 0x30206ce7 CFRunLoopRunSpecific + 522
15 CoreFoundation                 0x30206acb CFRunLoopRunInMode + 106
16 Foundation                     0x30c40497 +[NSURLConnection(Loader) _resourceLoadLoop:] + 318
17 Foundation                     0x30cb5e27 __NSThread__main__ + 1062
18 libsystem_pthread.dylib        0x3acd2c1d _pthread_body + 140
19 libsystem_pthread.dylib        0x3acd2b8f _pthread_start + 102

在IIRC中,_os_lock_corruption_abort通常是由于访问一个其数据已被其他数据覆盖的锁而导致的(假设您没有做任何可能导致某处缓冲区溢出的操作),这可能是由于僵尸在收到数据后已经继续接收方法调用所致已完全释放并释放。

可达性使用NSURLConnection来确定在设备的连接状态更改后(例如,在连接到Wi-Fi网络或漫游到蜂窝范围之后)指定的URL是否可访问,因此NSURLConnection中的所有错误都将通过可达性API出现也一样

现在我不知道为什么NSURLConnection会出现僵尸问题,但我自己也注意到了这一点,在数十次崩溃中,网络堆栈的随机部分都有独特的回溯,每一个都指向到达套接字的数据NSURLConnection对象消失后,最常见的是JavaScriptCore在处理代理PAC文件时崩溃。 这应该是不可能的,因为除了NSURLConnection本身保留其自身及其委托外,我们也不会释放任何连接对象而不取消它们。 但是我仍然看到崩溃。

为了解决该错误,我添加了一些代码以在释放它们之前,将我们的NSURLConnection对象长时间保留几次。 显然,要针对与可达性相关的请求执行此操作,则必须通过为NSURLConnection分配指定的初始化程序来实现(显然,这是一个选项)。

我的一般建议是,除非您看到很多崩溃,否则不要理会,因为晃动是一种严重的痛苦。 话虽如此,如果您遇到很多崩溃,则可能值得采用类似的方法。

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM