Что означает сбой DiskCookies в приложении iOS?

#ios #objective-c #crash-reports

#iOS #objective-c #отчеты о сбоях

Вопрос:

Я использую 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
 

Я полагаю, что кто-то пытается изменить путь, по которому сетевая библиотека помещает данные. У кого-нибудь есть какая-либо другая теория или есть некоторый опыт в этом сбое?

Ответ №1:

Из трассировки стека, которую вы разместили здесь, моя теория.

  • Кадр 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. Итак, последнее, вероятно, маловероятно.