CFRunL oop вызывает источник сбоя при выполнении функции 0 - PullRequest
2 голосов
/ 07 февраля 2020

Приложение иногда падает, иногда я не могу воспроизвести случай. Я пытаюсь изучить журналы и найти, какой блок кода вызывает cra sh. Ниже моя главная угроза, которая потерпела крах. Я думаю, что строка CFRunLoop Is Calling Out To A Source0 Perform Function (строка 23) вызывает cra sh, но я не уверен. Как я могу найти соответствующую функцию?

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x0000000185fa416c mach_msg_trap + 8
1   libsystem_kernel.dylib          0x0000000185fa3fdc mach_msg + 72
2   CoreFoundation                  0x0000000186fa1cec __CFRunLoopServiceMachPort + 192
3   CoreFoundation                  0x0000000186f9f908 __CFRunLoopRun + 1132
4   CoreFoundation                  0x0000000186ece048 CFRunLoopRunSpecific + 444
5   Foundation                      0x00000001879dcb1c -[NSRunLoop+ 51996 (NSRunLoop) runMode:beforeDate:] + 304
6   MyAppTargetName                 0x0000000100c05464 0x100084000 + 12063844
7   MyAppTargetName                 0x0000000100b70408 0x100084000 + 11453448
8   MyAppTargetName                 0x0000000100b7ef64 0x100084000 + 11513700
9   MyAppTargetName                 0x000000010076b6e4 0x100084000 + 7239396
10  MyAppTargetName                 0x000000010076aec0 0x100084000 + 7237312
11  MyAppTargetName                 0x000000010076b11c 0x100084000 + 7237916
12  MyAppTargetName                 0x0000000100569c28 0x100084000 + 5135400
13  UIKit                           0x000000018d09e7ac -[UIApplication _sendWillEnterForegroundCallbacks] + 172
14  UIKit                           0x000000018d0d9ccc -[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:] + 2140
15  UIKit                           0x000000018d0d91fc -[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:] + 452
16  UIKit                           0x000000018d0c48f8 __70-[UIApplication scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 152
17  UIKit                           0x000000018d0c457c -[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 888
18  UIKit                           0x000000018d3f5e44 -[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:] + 464
19  FrontBoardServices              0x0000000188b67b8c __80-[FBSSceneImpl updater:didUpdateSettings:withDiff:transitionContext:completion:]_block_invoke.376 + 208
20  FrontBoardServices              0x0000000188b958bc __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 36
21  FrontBoardServices              0x0000000188b95728 -[FBSSerialQueue _performNext] + 176
22  FrontBoardServices              0x0000000188b95ad0 -[FBSSerialQueue _performNextFromRunLoopSource] + 56
23  CoreFoundation                  0x0000000186fa2278 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
24  CoreFoundation                  0x0000000186fa1bc0 __CFRunLoopDoSources0 + 524
25  CoreFoundation                  0x0000000186f9f7c0 __CFRunLoopRun + 804
26  CoreFoundation                  0x0000000186ece048 CFRunLoopRunSpecific + 444
27  GraphicsServices                0x0000000188951198 GSEventRunModal + 180
28  UIKit                           0x000000018cea8628 -[UIApplication _run] + 684
29  UIKit                           0x000000018cea3360 UIApplicationMain + 208
30  MyAppTargetName                 0x0000000100523e68 0x100084000 + 4849256
31  libdyld.dylib                   0x0000000185eb05b8 start + 4

1 Ответ

2 голосов
/ 07 февраля 2020

__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ просто означает «в конечном счете рун oop назвал это». Это в значительной степени означает «ваше приложение работает». Это не является частью ошибки.

Ошибка в этом разделе, которую вам необходимо обозначить символом:

6   MyAppTargetName                 0x0000000100c05464 0x100084000 + 12063844
7   MyAppTargetName                 0x0000000100b70408 0x100084000 + 11453448
8   MyAppTargetName                 0x0000000100b7ef64 0x100084000 + 11513700
9   MyAppTargetName                 0x000000010076b6e4 0x100084000 + 7239396
10  MyAppTargetName                 0x000000010076aec0 0x100084000 + 7237312
11  MyAppTargetName                 0x000000010076b11c 0x100084000 + 7237916
12  MyAppTargetName                 0x0000000100569c28 0x100084000 + 5135400

Я подозреваю, что этот кадр немедленно выходит из вашего кода однако:

5   Foundation                      0x00000001879dcb1c -[NSRunLoop+ 51996 (NSRunLoop) runMode:beforeDate:] + 304

Это может означать, что ваш код пытается напрямую обработать runl oop, что технически допустимо, но является очень продвинутым методом, который может создать существенную проблему. Но вам нужно взглянуть на свой собственный код после символизации .

...