iOS应用程序奇怪的崩溃在背景中

时间:2017-09-19 13:06:12

标签: ios objective-c core-data background crash

我需要帮助。

我正在使用Objective-c编写的旧iOS应用程序。它于2014年发布,现在我已将项目迁移到Xcode 8.迁移后,一切都按预期工作,除非应用程序处于后台时出现奇怪的崩溃(不是立即但在一段时间后)。调试很困难,因为只有当设备与Xcode断开连接时才会发生崩溃。我检查了设备日志,似乎它的核心数据崩溃了:

Incident Identifier: BDD70C46-6573-44A7-85AB-620E6FBA207F
CrashReporter Key:   c04f591f9e0cc9d1991ce10e33ebcabd56affbe6
Hardware Model:      iPhone8,4
Process:             myApp [17746]
Path:                /private/var/containers/Bundle/Application/878DB803-1DA5-46D7-8B50-655D43A5C28D/myApp.app/myApp
Identifier:          com.example.myApp
Version:             2 (1.0.2)
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.example.myApp [16959]


Date/Time:           2017-09-19 14:34:57.1435 +0300
Launch Time:         2017-09-19 14:31:38.0853 +0300
OS Version:          iPhone OS 10.3.3 (14G60)
Report Version:      104

Exception Type:  EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: Namespace <0xF>, Code 0x8badf00d
Triggered by Thread:  0

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: SQLQueue 0x100724310 for myApp.sqlite
Thread 0 Crashed:
0   libsqlite3.dylib                0x000000018f36d818 0x18f361000 + 51224
1   libsqlite3.dylib                0x000000018f36c9a4 0x18f361000 + 47524
2   libsqlite3.dylib                0x000000018f36c9a4 0x18f361000 + 47524
3   libsqlite3.dylib                0x000000018f36c2c4 0x18f361000 + 45764
4   libsqlite3.dylib                0x000000018f36bf24 0x18f361000 + 44836
5   CoreData                        0x000000019113e0b0 -[NSSQLiteConnection prepareSQLStatement:] + 468
6   CoreData                        0x000000019125f178 -[NSSQLiteConnection updateRow:forRequestContext:] + 492
7   CoreData                        0x0000000191307f28 _writeChangesForSaveRequest + 1128
8   CoreData                        0x0000000191309584 _executeSaveChangesRequest + 388
9   CoreData                        0x00000001912ff5f0 -[NSSQLSaveChangesRequestContext executeRequestUsingConnection:] + 44
10  CoreData                        0x00000001912170c4 __52-[NSSQLDefaultConnectionManager handleStoreRequest:]_block_invoke + 256
11  libdispatch.dylib               0x0000000100455a10 0x100454000 + 6672
12  libdispatch.dylib               0x00000001004625bc 0x100454000 + 58812
13  CoreData                        0x0000000191216f64 -[NSSQLDefaultConnectionManager handleStoreRequest:] + 208
14  CoreData                        0x00000001912d9824 -[NSSQLCoreDispatchManager routeStoreRequest:] + 272
15  CoreData                        0x000000019124475c -[NSSQLCore dispatchRequest:withRetries:] + 236
16  CoreData                        0x0000000191240578 -[NSSQLCore processSaveChanges:forContext:] + 200
17  CoreData                        0x0000000191144f10 -[NSSQLCore executeRequest:withContext:error:] + 724
18  CoreData                        0x000000019122384c __65-[NSPersistentStoreCoordinator executeRequest:withContext:error:]_block_invoke + 3492
19  CoreData                        0x000000019121c0f0 -[NSPersistentStoreCoordinator _routeHeavyweightBlock:] + 276
20  CoreData                        0x0000000191144adc -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 408
21  CoreData                        0x000000019116597c -[NSManagedObjectContext save:] + 2548
22  myApp                   0x00000001000cd0dc 0x1000c0000 + 53468
23  myApp                   0x00000001000cbc24 0x1000c0000 + 48164
24  CoreLocation                    0x00000001970ee828 0x1970de000 + 67624
25  CoreLocation                    0x00000001970edfcc 0x1970de000 + 65484
26  CoreLocation                    0x00000001970e11d8 0x1970de000 + 12760
27  CoreFoundation                  0x000000018ee1930c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 20
28  CoreFoundation                  0x000000018ee18b28 __CFRunLoopDoBlocks + 288
29  CoreFoundation                  0x000000018ee16e1c __CFRunLoopRun + 1884
30  CoreFoundation                  0x000000018ed46da4 CFRunLoopRunSpecific + 424
31  GraphicsServices                0x00000001907b1074 GSEventRunModal + 100
32  UIKit                           0x0000000195001c9c UIApplicationMain + 208
33  myApp                   0x00000001000e4574 0x1000c0000 + 148852
34  libdyld.dylib                   0x000000018dd5559c start + 4

Thread 1 name:  Dispatch queue: BKSProcessAssertionClient
Thread 1:
0   libsystem_kernel.dylib          0x000000018de47224 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x000000018de4709c mach_msg + 72
2   libdispatch.dylib               0x000000010046d37c 0x100454000 + 103292
3   libdispatch.dylib               0x000000010046d780 0x100454000 + 104320
4   libxpc.dylib                    0x000000018df60edc xpc_connection_send_message_with_reply_sync + 196
5   BaseBoard                       0x000000019095a944 -[BSXPCMessage sendSynchronouslyToConnection:error:] + 76
6   BaseBoard                       0x0000000190957148 -[BSBaseXPCClient _sendMessage:withReplyHandler:waitForReply:waitDuration:] + 436
7   AssertionServices               0x00000001909a17c4 -[BKSProcessAssertionClient _assertionQueue_sendEvent:forMessageType:responseHandler:] + 136
8   AssertionServices               0x00000001909a0f78 -[BKSProcessAssertionClient sendCreateAssertion:] + 108
9   AssertionServices               0x00000001909a0968 -[BKSProcessAssertion _clientQueue_acquireAssertion] + 312
10  libdispatch.dylib               0x0000000100455a50 0x100454000 + 6736
11  libdispatch.dylib               0x0000000100455a10 0x100454000 + 6672
12  libdispatch.dylib               0x00000001004632e8 0x100454000 + 62184
13  libdispatch.dylib               0x0000000100459634 0x100454000 + 22068
14  libdispatch.dylib               0x0000000100465630 0x100454000 + 71216
15  libdispatch.dylib               0x000000010046539c 0x100454000 + 70556
16  libsystem_pthread.dylib         0x000000018df2b100 _pthread_wqthread + 1096
17  libsystem_pthread.dylib         0x000000018df2acac start_wqthread + 4

Thread 2 name:  Dispatch queue: com.apple.CoreLocation.ConnectionClient.0x17013b6c0.events
Thread 2:
0   libsystem_kernel.dylib          0x000000018de47278 semaphore_timedwait_trap + 8
1   libdispatch.dylib               0x000000010047f238 0x100454000 + 176696
2   libdispatch.dylib               0x0000000100467db8 0x100454000 + 81336
3   CoreLocation                    0x00000001970e1078 0x1970de000 + 12408
4   CoreLocation                    0x00000001970e6118 0x1970de000 + 33048
5   CoreLocation                    0x00000001970e5f18 0x1970de000 + 32536
6   CoreLocation                    0x0000000197131e88 0x1970de000 + 343688
7   CoreLocation                    0x000000019712e4f0 0x1970de000 + 328944
8   CoreLocation                    0x000000019712e414 0x1970de000 + 328724
9   CoreLocation                    0x000000019712fa80 0x1970de000 + 334464
10  libxpc.dylib                    0x000000018df5f84c _xpc_connection_call_event_handler + 68
11  libxpc.dylib                    0x000000018df5d358 _xpc_connection_mach_event + 1448
12  libdispatch.dylib               0x0000000100455ae0 0x100454000 + 6880
13  libdispatch.dylib               0x00000001004599d8 0x100454000 + 23000
14  libdispatch.dylib               0x0000000100463128 0x100454000 + 61736
15  libdispatch.dylib               0x0000000100458da0 0x100454000 + 19872
16  libdispatch.dylib               0x0000000100463128 0x100454000 + 61736
17  libdispatch.dylib               0x0000000100459634 0x100454000 + 22068
18  libdispatch.dylib               0x0000000100463128 0x100454000 + 61736
19  libdispatch.dylib               0x0000000100459634 0x100454000 + 22068
20  libdispatch.dylib               0x0000000100464358 0x100454000 + 66392
21  libdispatch.dylib               0x000000010046c57c 0x100454000 + 99708
22  libsystem_pthread.dylib         0x000000018df2afbc _pthread_wqthread + 772
23  libsystem_pthread.dylib         0x000000018df2acac start_wqthread + 4

Thread 3 name:  com.apple.uikit.eventfetch-thread
Thread 3:
0   libsystem_kernel.dylib          0x000000018de47224 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x000000018de4709c mach_msg + 72
2   CoreFoundation                  0x000000018ee18e90 __CFRunLoopServiceMachPort + 192
3   CoreFoundation                  0x000000018ee16ae4 __CFRunLoopRun + 1060
4   CoreFoundation                  0x000000018ed46da4 CFRunLoopRunSpecific + 424
5   Foundation                      0x000000018f861db4 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
6   Foundation                      0x000000018f882b84 -[NSRunLoop(NSRunLoop) runUntilDate:] + 96
7   UIKit                           0x000000019598b830 -[UIEventFetcher threadMain] + 136
8   Foundation                      0x000000018f95f318 __NSThread__start__ + 996
9   libsystem_pthread.dylib         0x000000018df2d68c _pthread_body + 240
10  libsystem_pthread.dylib         0x000000018df2d59c _pthread_body + 0
11  libsystem_pthread.dylib         0x000000018df2acb4 thread_start + 4

Thread 4:
0   libsystem_pthread.dylib         0x000000018df2aca8 start_wqthread + 0

Thread 5 name:  com.apple.NSURLConnectionLoader
Thread 5:
0   libsystem_kernel.dylib          0x000000018de47224 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x000000018de4709c mach_msg + 72
2   CoreFoundation                  0x000000018ee18e90 __CFRunLoopServiceMachPort + 192
3   CoreFoundation                  0x000000018ee16ae4 __CFRunLoopRun + 1060
4   CoreFoundation                  0x000000018ed46da4 CFRunLoopRunSpecific + 424
5   CFNetwork                       0x000000018f553df4 +[NSURLConnection(Loader) _resourceLoadLoop:] + 404
6   Foundation                      0x000000018f95f318 __NSThread__start__ + 996
7   libsystem_pthread.dylib         0x000000018df2d68c _pthread_body + 240
8   libsystem_pthread.dylib         0x000000018df2d59c _pthread_body + 0
9   libsystem_pthread.dylib         0x000000018df2acb4 thread_start + 4

Thread 6 name:  GAIThread
Thread 6:
0   libsystem_kernel.dylib          0x000000018de47224 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x000000018de4709c mach_msg + 72
2   CoreFoundation                  0x000000018ee18e90 __CFRunLoopServiceMachPort + 192
3   CoreFoundation                  0x000000018ee16ae4 __CFRunLoopRun + 1060
4   CoreFoundation                  0x000000018ed46da4 CFRunLoopRunSpecific + 424
5   Foundation                      0x000000018f861db4 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
6   Foundation                      0x000000018f8b6704 -[NSRunLoop(NSRunLoop) run] + 88
7   myApp                   0x0000000100120398 0x1000c0000 + 394136
8   Foundation                      0x000000018f95f318 __NSThread__start__ + 996
9   libsystem_pthread.dylib         0x000000018df2d68c _pthread_body + 240
10  libsystem_pthread.dylib         0x000000018df2d59c _pthread_body + 0
11  libsystem_pthread.dylib         0x000000018df2acb4 thread_start + 4

Thread 7:
0   libsystem_pthread.dylib         0x000000018df2aca8 start_wqthread + 0

Thread 8:
0   libsystem_pthread.dylib         0x000000018df2aca8 start_wqthread + 0

但在重大案例中崩溃报告如下:

Incident Identifier: D5D6C3C6-7EB7-4E2C-901C-7203943BD722
CrashReporter Key:   c04f591f9e0cc9d1991ce10e33ebcabd56affbe6
Hardware Model:      iPhone8,4
Process:             myApp [17444]
Path:                /private/var/containers/Bundle/Application/93AB2A15-0C65-47D5-BE24-FB298DC396E0/myApp.app/myApp
Identifier:          com.example.myApp
Version:             2 (1.0.2)
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.example.myApp [16449]


Date/Time:           2017-09-19 12:41:45.3051 +0300
Launch Time:         2017-09-19 12:24:22.7861 +0300
OS Version:          iPhone OS 10.3.3 (14G60)
Report Version:      104

Exception Type:  EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: Namespace <0xF>, Code 0x8badf00d
Triggered by Thread:  0

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x000000018de47224 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x000000018de4709c mach_msg + 72
2   CoreFoundation                  0x000000018ee18e90 __CFRunLoopServiceMachPort + 192
3   CoreFoundation                  0x000000018ee16ae4 __CFRunLoopRun + 1060
4   CoreFoundation                  0x000000018ed46da4 CFRunLoopRunSpecific + 424
5   GraphicsServices                0x00000001907b1074 GSEventRunModal + 100
6   UIKit                           0x0000000195001c9c UIApplicationMain + 208
7   myApp                   0x0000000100031bb8 0x10000c000 + 154552
8   libdyld.dylib                   0x000000018dd5559c start + 4

Thread 1 name:  com.apple.uikit.eventfetch-thread
Thread 1:
0   libsystem_kernel.dylib          0x000000018de47224 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x000000018de4709c mach_msg + 72
2   CoreFoundation                  0x000000018ee18e90 __CFRunLoopServiceMachPort + 192
3   CoreFoundation                  0x000000018ee16ae4 __CFRunLoopRun + 1060
4   CoreFoundation                  0x000000018ed46da4 CFRunLoopRunSpecific + 424
5   Foundation                      0x000000018f861db4 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
6   Foundation                      0x000000018f882b84 -[NSRunLoop(NSRunLoop) runUntilDate:] + 96
7   UIKit                           0x000000019598b830 -[UIEventFetcher threadMain] + 136
8   Foundation                      0x000000018f95f318 __NSThread__start__ + 996
9   libsystem_pthread.dylib         0x000000018df2d68c _pthread_body + 240
10  libsystem_pthread.dylib         0x000000018df2d59c _pthread_body + 0
11  libsystem_pthread.dylib         0x000000018df2acb4 thread_start + 4

Thread 2 name:  com.twitter.crashlytics.ios.MachExceptionServer
Thread 2:
0   libsystem_kernel.dylib          0x000000018de47224 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x000000018de4709c mach_msg + 72
2   myApp                   0x000000010008d6a0 0x10000c000 + 530080
3   libsystem_pthread.dylib         0x000000018df2d68c _pthread_body + 240
4   libsystem_pthread.dylib         0x000000018df2d59c _pthread_body + 0
5   libsystem_pthread.dylib         0x000000018df2acb4 thread_start + 4

Thread 3 name:  com.apple.NSURLConnectionLoader
Thread 3:
0   libsystem_kernel.dylib          0x000000018de47224 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x000000018de4709c mach_msg + 72
2   CoreFoundation                  0x000000018ee18e90 __CFRunLoopServiceMachPort + 192
3   CoreFoundation                  0x000000018ee16ae4 __CFRunLoopRun + 1060
4   CoreFoundation                  0x000000018ed46da4 CFRunLoopRunSpecific + 424
5   CFNetwork                       0x000000018f553df4 +[NSURLConnection(Loader) _resourceLoadLoop:] + 404
6   Foundation                      0x000000018f95f318 __NSThread__start__ + 996
7   libsystem_pthread.dylib         0x000000018df2d68c _pthread_body + 240
8   libsystem_pthread.dylib         0x000000018df2d59c _pthread_body + 0
9   libsystem_pthread.dylib         0x000000018df2acb4 thread_start + 4

Thread 4 name:  GAIThread
Thread 4:
0   libsystem_kernel.dylib          0x000000018de47224 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x000000018de4709c mach_msg + 72
2   CoreFoundation                  0x000000018ee18e90 __CFRunLoopServiceMachPort + 192
3   CoreFoundation                  0x000000018ee16ae4 __CFRunLoopRun + 1060
4   CoreFoundation                  0x000000018ed46da4 CFRunLoopRunSpecific + 424
5   Foundation                      0x000000018f861db4 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304
6   Foundation                      0x000000018f8b6704 -[NSRunLoop(NSRunLoop) run] + 88
7   myApp                   0x000000010006d9dc 0x10000c000 + 399836
8   Foundation                      0x000000018f95f318 __NSThread__start__ + 996
9   libsystem_pthread.dylib         0x000000018df2d68c _pthread_body + 240
10  libsystem_pthread.dylib         0x000000018df2d59c _pthread_body + 0
11  libsystem_pthread.dylib         0x000000018df2acb4 thread_start + 4

Thread 5:
0   libsystem_pthread.dylib         0x000000018df2aca8 start_wqthread + 0

Thread 6:
0   libsystem_pthread.dylib         0x000000018df2aca8 start_wqthread + 0

Thread 7:
0   libsystem_pthread.dylib         0x000000018df2aca8 start_wqthread + 0

Thread 8:
0   libsystem_pthread.dylib         0x000000018df2aca8 start_wqthread + 0

Thread 9:
0   libsystem_pthread.dylib         0x000000018df2aca8 start_wqthread + 0

也许有人有类似的问题,并有一些建议?

1 个答案:

答案 0 :(得分:4)

有一件事很奇怪,你说这种情况发生在后台,但是当应用程序处于前台时,就系统而言,崩溃正在发生:

Role:                Foreground

所以,那令人困惑。

只是疯狂猜测,我会查看内存损坏/使用已发布对象(特别是如果这是非ARC代码),异步代码,如网络请求或计时器回调跳转到已发布的代码,执行UI等操作在一个不是主线程的线程上(如果你可以在Xcode 9下运行,运行时线程诊断将对此有所帮助。)即使使用Xc8,查看你的项目方案和内存调试Run配置下可用的选项。那些可以帮助。

查看设备上正在运行的系统日志。您不需要使用Xcode进行调试即可。只需转到“设备”窗口,系统控制台就在底部附近。您可能需要透露它。该系统日志可能提供线索。

如果您正在使用手动保留/释放,请仔细检查在崩溃时间范围内遇到的任何代码。请记住,这些类型的崩溃发生在问题发生后,因此您看到崩溃可能与实际问题的位置无关,并且崩溃位置可能会波动,尤其是在不同的设备上。

可能会对Xcode 8之前的代码和当前代码进行区分,以便仔细检查您所做的任何更改。我的猜测是你在更新Xcode 8的代码时引入了内存问题。

<强>更新

对不起,刚刚注意到终止原因。

这可能有所帮助:

  

异常代码0x8badf00d表示应用程序已经存在   iOS终止,因为发生了监视程序超时。应用程序   花了很长时间才启动,终止或响应系统事件。一   这种情况的常见原因是在主要上进行同步联网   线。线程0上的操作是什么:需要移动到a   后台线程,或处理不同,以便它不会阻止   主线。

确保当你进入后台时,你没有做任何需要很长时间的事情,如果需要的话可以使用后台任务,并且不要做任何类似OpenGL调用的事情。背景。由于崩溃报告说你在前景中,我想知道你是否花了太长时间进入后台,而Springboard正在杀死你的应用程序。系统日志将确认。