可能是因为 afnetworking 而崩溃了
Posted
技术标签:
【中文标题】可能是因为 afnetworking 而崩溃了【英文标题】:Maybe it crashed because of afnetworking 【发布时间】:2019-01-16 09:13:38 【问题描述】:我的应用程序再次崩溃,这次导出设备崩溃日志如下(注意文章 11 和 12):
我试图对其进行符号化,但我不知道如何从项目中的 afnetworking 获取 dSYM 文件。
Thread 8 name: Dispatch queue: NSOperationQueue 0x2803df960 (QOS: UNSPECIFIED)
Thread 8 Crashed:
0 libsystem_malloc.dylib 0x0000000197cccda8 nanov2_allocate_from_block$VARIANT$armv81 + 528
1 libsystem_malloc.dylib 0x0000000197cccda8 nanov2_allocate_from_block$VARIANT$armv81 + 528
2 libsystem_malloc.dylib 0x0000000197ccc040 nanov2_allocate$VARIANT$armv81 + 140
3 libsystem_malloc.dylib 0x0000000197ccbf64 nanov2_malloc$VARIANT$armv81 + 60
4 libsystem_malloc.dylib 0x0000000197cd99a0 malloc_zone_malloc + 156
5 CoreFoundation 0x000000019808e160 _CFRuntimeCreateInstance + 324
6 CoreFoundation 0x000000019802b970 __CFArrayInit + 224
7 Foundation 0x0000000198b75470 NSKVOCopyPendingNotificationStack + 152
8 Foundation 0x0000000198b720f8 NSKeyValueWillChangeWithPerThreadPendingNotifications.llvm.16432713543580414412 + 364
9 Foundation 0x0000000198ae8ad4 -[NSProgress _setValueForKeys:settingBlock:] + 272
10 Foundation 0x0000000198aeb9dc -[NSProgress setCompletedUnitCount:] + 132
11 AFNetworking 0x00000001051c965c 0x10519c000 + 185948
12 AFNetworking 0x00000001051d1a18 0x10519c000 + 219672
13 CFNetwork 0x0000000198898b94 __67-[NSURLSession delegate_dataTask:didReceiveData:completionHandler:]_block_invoke.303 + 36
14 Foundation 0x0000000198b8c8bc __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 16
15 Foundation 0x0000000198a94ab8 -[NSBlockOperation main] + 72
16 Foundation 0x0000000198a93f8c -[__NSOperationInternal _start:] + 740
17 Foundation 0x0000000198b8e790 __NSOQSchedule_f + 272
18 libdispatch.dylib 0x0000000197b356c8 _dispatch_call_block_and_release + 24
19 libdispatch.dylib 0x0000000197b36484 _dispatch_client_callout + 16
20 libdispatch.dylib 0x0000000197b0ce04 _dispatch_continuation_pop$VARIANT$armv81 + 404
21 libdispatch.dylib 0x0000000197b0c4e8 _dispatch_async_redirect_invoke + 592
22 libdispatch.dylib 0x0000000197b18aec _dispatch_root_queue_drain + 344
23 libdispatch.dylib 0x0000000197b1934c _dispatch_worker_thread2 + 116
24 libsystem_pthread.dylib 0x0000000197d1917c _pthread_wqthread + 472
25 libsystem_pthread.dylib 0x0000000197d1bcec start_wqthread + 4
如果不是网络故障,任何人都可以看到原因吗?请帮帮我。
【问题讨论】:
【参考方案1】:因此,您的应用程序在 Apple 的代码中崩溃了很深,特别是在 libsystem_malloc 中。虽然我无法确定,但我猜您正在查看堆损坏的示例。
动态分配的内存由您的整个进程以及其中的所有内容共享。这意味着任何代码都可能覆盖和/或以其他方式破坏系统其他部分甚至不相关部分使用的结构。在这种情况下,看起来有些东西弄乱了 malloc 使用的内部簿记结构。我猜想这是通过超出缓冲区并在分配的内存范围之外写入而发生的。
我可以满怀信心地说,这份报告没有提供足够的信息来指责 AFNetworking。当访问损坏的内存时,它恰好不幸运行。即使是一个内存损坏错误也可能导致各种不同的崩溃。因此,实际上不可能推断出任何特定崩溃的原因。
好消息是这种事情很常见。坏消息是很难追踪。我建议尝试使用 Apple 提供的内存调试工具。诸如 NSZombies(通过工具)、guardmalloc 和 malloc scribble 之类的东西。最好的办法是修复所有能找到的与内存相关的错误。
【讨论】:
以上是关于可能是因为 afnetworking 而崩溃了的主要内容,如果未能解决你的问题,请参考以下文章