首页 > 解决方案 > iOS App 上的 DiskCookies Crash 是什么意思?

问题描述

我使用 Fabric 在我的 iOS 应用程序上记录崩溃。今天,我遇到了一些与 DiskCookies 相关的崩溃。我真的不知道这意味着什么。

Crashed: diskcookies
0  CoreFoundation                 0x1bd00136 CFNotificationCenterPostNotification + 53
1  libsystem_malloc.dylib         0x1b5d9cf3 szone_malloc_should_clear + 3240
2  CFNetwork                      0x1c44a359 DiskCookieStorage::writeFileCompletely0(DiskCookieStorage*, FilePathStat*, MemoryCookies const*, __CFData const*, TracerData*, int) + 634
3  CFNetwork                      0x1c44a49d DiskCookieStorage::_asyncWriteFileCompletely(void*) + 174
4  libdispatch.dylib              0x1b4a1783 _dispatch_client_callout + 22
5  libdispatch.dylib              0x1b4ada35 _dispatch_barrier_sync_f_invoke + 50
6  CFNetwork                      0x1c44b09d DiskCookieStorage::syncStorageWithCompletionLocked(unsigned char, void () block_pointer) + 2220
7  CFNetwork                      0x1c44277b ___CFHTTPCookieStorageFlushCookieStores_block_invoke + 86
8  CoreFoundation                 0x1bcf5447 __CFDictionaryApplyFunction_block_invoke + 20
9  CoreFoundation                 0x1bce0634 CFBasicHashApply + 120
10 CoreFoundation                 0x1bce94c1 CFDictionaryApplyFunction + 152
11 CFNetwork                      0x1c44270f _CFHTTPCookieStorageFlushCookieStores + 140
12 libsystem_c.dylib              0x1b53720d __cxa_finalize_ranges + 290
13 libsystem_c.dylib              0x1b4f61b3 exit + 12
14 Comico                         0x97a74f UnityGetGLViewController + 4756906
15 Comico                         0x97a265 UnityGetGLViewController + 4755648
16 Comico                         0x980a6b UnityGetGLViewController + 4782278
17 Comico                         0x96dfb5 UnityGetGLViewController + 4705808
18 Comico                         0x96da59 UnityGetGLViewController + 4704436
19 Comico                         0x200fe3 -[AppDelegate setUpAppGuardWithUserID:] (AppDelegate.m:1303)
20 Comico                         0x1ff967 __36-[AppDelegate dologinInCallLoginAPI]_block_invoke (AppDelegate.m:1026)
21 Comico                         0x13f69b __42-[NCLoginRAPIManager loginWithCompletion:]_block_invoke (NCLoginRAPIManager.m:97)
22 Comico                         0xde19f -[NCRAPICompletion performBlockWithOperation:] (NCRAPICompletion.m:94)
23 CoreFoundation                 0x1bd06323 -[NSArray makeObjectsPerformSelector:withObject:] + 218
24 Comico                         0x3adf0d -[NCRAPIOperationRegister performCompletionBlockOfOperation:] (NCRAPIOperationRegister.m:67)
25 Comico                         0x251ce1 __51-[NCRAPIManager callRAPIWithAPIRequest:completion:]_block_invoke_2 (NCRAPIManager.m:65)
26 libdispatch.dylib              0x1b4a1797 _dispatch_call_block_and_release + 10
27 libdispatch.dylib              0x1b4a1783 _dispatch_client_callout + 22
28 libdispatch.dylib              0x1b4a5d05 _dispatch_main_queue_callback_4CF + 902
29 CoreFoundation                 0x1bd8fd69 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
30 CoreFoundation                 0x1bd8de19 __CFRunLoopRun + 848
31 CoreFoundation                 0x1bce11af CFRunLoopRunSpecific + 470
32 CoreFoundation                 0x1bce0fd1 CFRunLoopRunInMode + 104
33 GraphicsServices               0x1d48bb41 GSEventRunModal + 80
34 UIKit                          0x21069a53 UIApplicationMain + 150
35 Comico                         0x20dc39 main (main.m:19)
36 libdyld.dylib                  0x1b4ce4eb start + 2

我相信有人正在尝试修改网络库放置数据的路径。有没有人有任何其他理论或对这次崩溃有一些经验?

标签: iosobjective-ccrash-reports

解决方案


从您在此处发布的堆栈跟踪是我的理论。

  • 第 14 帧表明您有一个 Unity 应用程序,它正在运行 OpenGL。
  • 第 13 帧真的很有趣。似乎 Unity UnityGetGLViewController(我认为不是您编写的)调用了exit. 这是令人惊讶的行为,但它为堆栈的其余部分提供了很多线索。
  • 第 12-2 帧看起来网络堆栈只是在应用程序退出(由 触发UnityGetGLViewController)上做一些工作。似乎只是将一些与 cookie 相关的内容写入磁盘。我不会担心这个。
  • 第 0 帧和第 1 帧真的很可疑。我很难相信 malloc 会调用 CoreFoundation。如果我不得不猜测,我会说第 0 帧是正确的,而第 1 帧的符号错误或未正确展开。

exit在 iOS 应用程序中调用是非常不寻常的。虽然它在技术上是 API,但我怀疑它是否经过大量测试。我敢打赌,存在一些与使用相关的悬空指针和/或对象生命周期问题exit,您可以在此处看到。

我要做的是看看 Unity 是否有任何关于UnityGetGLViewController调用的文档exit。我还会向 Fabric 人员咨询有关第 1 帧和第 0 帧的情况。我不明白这两者怎么可能是正确的。最后,我可能会考虑向 Apple 公开一个错误。但是,Apple 通常不喜欢查看非 Apple 崩溃报告。所以,最后一个可能是一个长镜头。


推荐阅读