В моем приложении iOS есть cra sh, который уникален только для iOS 12. Этот cra sh начал происходить, когда был выпущен Xcode 11.3.
Трассировка стека выглядит следующим образом
Crashed: com.apple.main-thread
0 libsystem_kernel.dylib 0x20148b0dc __pthread_kill + 8
1 libsystem_pthread.dylib 0x201504094 pthread_kill$VARIANT$mp + 380
2 libsystem_c.dylib 0x2013e3ea8 abort + 140
3 Field Portal 0x100d9cc74 -[InventoryViewController initializeData].cold.1 + 4305833076
4 Field Portal 0x100c1227c -[PSICoreDataController saveViewContext] + 73 (PSICoreDataController.m:73)
5 CoreData 0x2044832b0 developerSubmittedBlockToNSManagedObjectContextPerform + 156
6 libdispatch.dylib 0x20132d7d4 _dispatch_client_callout + 16
7 libdispatch.dylib 0x2012db008 _dispatch_main_queue_callback_4CF$VARIANT$mp + 1068
8 CoreFoundation 0x201880b20 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
9 CoreFoundation 0x20187ba58 __CFRunLoopRun + 1924
10 CoreFoundation 0x20187afb4 CFRunLoopRunSpecific + 436
11 GraphicsServices 0x203a7c79c GSEventRunModal + 104
12 UIKitCore 0x22e0dcc38 UIApplicationMain + 212
13 Field Portal 0x100c1939c main + 14 (main.m:14)
14 libdyld.dylib 0x20133e8e0 start + 4
InventoryViewController - очень специфичный c контроллер представления, ОЧЕНЬ глубоко вложенный в приложение , и не используется ни одним пользователем моего приложения (да, я знаю это).
Похоже, что происходит, когда я вызываю save для моего основного viewContext, среда выполнения iOS каким-то образом инициализируется InventoryViewController сам по себе вызывает эту функцию, в результате чего cra sh.
InitializeData сам по себе просто выполняет простой NSFetchRequest для основного контекста CoreData, и если я получу доступ к этому представлению обычными средствами, он не будет cra sh на уязвимом оборудовании / ОС.
Что я не понимаю, почему ПОЧЕМУ iOS делает это? Этот контроллер представления никогда не доступен пользователям, и он никогда не вызывается напрямую из моего кода.
Более того, этот код не изменился почти за календарный год и неожиданно начал появляться только в этих новых сборках, и только в iOS 12.
Я обнаружил, что эту проблему невозможно отладить, и приветствовал бы любое понимание методологий для исследования и анализа того, как я могу выяснить, в чем причина этой проблемы.