Интерпретация аварийного журнала без ссылок на функции / классы приложения

Я получаю "случайный" сбой в моем последнем приложении (около 2% пользователей, похоже, испытывают сбой), но я не могу найти какую-либо полезную информацию из журналов сбоя. Кажется, что у меня нет никакой ссылки на мой код, и мне очень трудно понять, что происходит и как генерируется этот сбой... Я вставляю сюда соответствующую часть журнала сбоя, любые намеки или мысли по этому поводу.? есть ли что-то очевидное, что я скучаю...

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0

Last Exception Backtrace:
0   CoreFoundation                  0x18266d900 __exceptionPreprocess + 124 (NSException.m:162)
1   libobjc.A.dylib                 0x181cdbf80 objc_exception_throw + 56 (objc-exception.mm:531)
2   CoreFoundation                  0x18266d7d0 +[NSException raise:format:arguments:] + 108 (NSException.m:131)
3   Foundation                      0x182fe099c -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112 (NSException.m:152)
4   UIKit                           0x187608ac0 -[UIApplication _runWithMainScene:transitionContext:completion:] + 3216 (UIApplication.m:3315)
5   UIKit                           0x1876055c0 -[UIApplication workspaceDidEndTransaction:] + 168 (UIApplication.m:2662)
6   FrontBoardServices              0x183c23790 -[FBSSerialQueue _performNext] + 184 (FBSSerialQueue.m:157)
7   FrontBoardServices              0x183c23b10 -[FBSSerialQueue _performNextFromRunLoopSource] + 56 (FBSSerialQueue.m:204)
8   CoreFoundation                  0x182624efc __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 (CFRunLoop.c:1761)
9   CoreFoundation                  0x182624990 __CFRunLoopDoSources0 + 540 (CFRunLoop.c:1807)
10  CoreFoundation                  0x182622690 __CFRunLoopRun + 724 (CFRunLoop.c:2536)
11  CoreFoundation                  0x182551680 CFRunLoopRunSpecific + 384 (CFRunLoop.c:2814)
12  UIKit                           0x1873ce580 -[UIApplication _run] + 460 (UIApplication.m:2503)
13  UIKit                           0x1873c8d90 UIApplicationMain + 204 (UIApplication.m:3681)
14  KickLow                         0x100153604 0x100024000 + 1242628
15  libdyld.dylib                   0x1820f28b8 start + 4 (start_glue.s:80)

Thread 0 name:
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x0000000182210140 __pthread_kill + 8
1   libsystem_pthread.dylib         0x00000001822d8ef8 pthread_kill + 112 (pthread.c:1247)
2   libsystem_c.dylib               0x0000000182181dac abort + 140 (abort.c:91)
3   libc++abi.dylib                 0x0000000181cb53f4 abort_message + 132 (abort_message.cpp:47)
4   libc++abi.dylib                 0x0000000181cd1e98 default_terminate_handler() + 304 (cxa_default_handlers.cpp:67)
5   libobjc.A.dylib                 0x0000000181cdc248 _objc_terminate() + 124 (objc-exception.mm:678)
6   libc++abi.dylib                 0x0000000181ccef44 std::__terminate(void (*)()) + 16 (cxa_handlers.cpp:62)
7   libc++abi.dylib                 0x0000000181cceb10 __cxa_rethrow + 144 (cxa_exception.cpp:480)
8   libobjc.A.dylib                 0x0000000181cdc120 objc_exception_rethrow + 44 (objc-exception.mm:581)
9   CoreFoundation                  0x0000000182551728 CFRunLoopRunSpecific + 552 (CFRunLoop.c:2827)
10  UIKit                           0x00000001873ce580 -[UIApplication _run] + 460 (UIApplication.m:2503)
11  UIKit                           0x00000001873c8d90 UIApplicationMain + 204 (UIApplication.m:3681)
12  KickLow                         0x0000000100153604 0x100024000 + 1242628
13  libdyld.dylib                   0x00000001820f28b8 start + 4 (start_glue.s:80)

2 ответа

Решение

Перенес мой комментарий как ответ. @MatterGoal рад, что это помогло.

Ваша проблема похожа на странный сбой при запуске приложения из Центра уведомлений

Ваш код или сторонняя библиотека, которую вы используете, вручную запускает цикл запуска. Это вызывает -workspaceDidEndTransaction: вызываться повторно и запускает использование после освобождения. Если вы устанавливаете точку останова на -[NSRunLoop runMode:beforeDate:] и -[NSRunLoop runUntilDate:], она должна совпадать с виновным кодом, находящимся в предыдущем кадре стека.

Хотя ручное вращение цикла выполнения никогда не рекомендуется, если вы можете отложить его до тех пор, пока ваше приложение не завершит запуск (все вызовы делегатов запуска приложения), вы должны избегать возникновения этого сбоя.

Глядя на разборку -[UIApplication _runWithMainScene:transitionContext:completion:] метод, вот что мы узнаем:

0x111ef155d <+3038>: movq   0xd166b4(%rip), %rdi      ; (void *)0x0000000111ce4b10: NSAssertionHandler
0x111ef1564 <+3045>: movq   0xce0bcd(%rip), %rsi      ; "currentHandler"
0x111ef156b <+3052>: callq  *0xd64c5f(%rip)           ; (void *)0x0000000113e36800: objc_msgSend
0x111ef1571 <+3058>: movq   %rax, %rdi
0x111ef1574 <+3061>: callq  0x1129c0046               ; symbol stub for: objc_retainAutoreleasedReturnValue
0x111ef1579 <+3066>: movq   %rax, %r15
0x111ef157c <+3069>: leaq   0xda427d(%rip), %rax      ; @"Application windows are expected to have a root view controller at the end of application launch"
0x111ef1583 <+3076>: movq   %rax, (%rsp)
0x111ef1587 <+3080>: movl   $0xd3c, %r9d              ; imm = 0xD3C 
0x111ef158d <+3086>: xorl   %eax, %eax
0x111ef158f <+3088>: movq   %r15, %rdi
0x111ef1592 <+3091>: movq   0xce0ba7(%rip), %rsi      ; "handleFailureInMethod:object:file:lineNumber:description:"

Похоже, ваше приложение создает окно без корневого контроллера представления. Возможно, ваш контроллер представления не может быть создан.

Другие вопросы по тегам