2017-09-19 9 views
0

私は助けが必要です。iOSアプリのバックグラウンドで異常なクラッシュが発生する

私は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 

たぶん誰かが同様の問題を持っていたし、いくつかの提案がありますか?

Role:    Foreground 

だから、それは混乱だ:奇妙

+0

「受信メモリ警告」がありますか? –

+0

アプリが実行されていてxcodeに接続されているときにメモリの警告はありませんが、アプリが接続せずに実行されたときに起こっていることをデバッグできません。 –

+0

メモリの警告をシミュレートできますか?それを行うには:あなたのシミュレータのデバッグメニューに行き、 "メモリの警告をシミュレートする"をクリックしてください –

答えて

3

ことの一つは、あなたが、これはバックグラウンドで行われると言うが、アプリは限りシステムに関してはフォアグラウンドにあるときにクラッシュが起こっているということです。

私はメモリ破損のようなものを見ています(特に非ARCコードの場合)、ネットワーク要求やタイマコールバックなどの非同期コードはリリースされたコードにジャンプし、UIのようなことをしていますメインスレッドではないスレッド(Xcode 9で実行できる場合は、ランタイムスレッド診断がこれに多く役立ちます)。Xc8を使用しても、実行構成で使用可能なプロジェクトの計画とメモリデバッグオプションを確認してください。それらは助けることができる。

デバイスの実行中のシステムログを確認します。 Xcodeでデバッグする必要はありません。デバイスウィンドウに移動すると、システムコンソールが一番下に表示されます。それを明らかにする必要があるかもしれません。そのシステムログはヒントを与えるかもしれません。

手動保持/解放を使用している場合は、クラッシュの時間枠内でヒットしたコードを再度確認してください。これらのタイプのクラッシュは問題が発生した後に発生するので、クラッシュが実際の問題がどこにあるかにはほとんど関係していないことがわかります。クラッシュの位置は、特に異なるデバイスで変動する可能性があります。

多分Xcode 8のコードと現在のコードをdiffして、あなたが行った変更を再確認してください。

申し訳ありませんが、ちょうど終了理由に気づいた:私の推測では、UPDATE

Xcodeの8のためのコードを更新するときに、メモリの問題を導入していることです。

これが役立つことがあります。

を例外コード0x8badf00dは、ウォッチドッグ・タイムアウトが発生したため、アプリケーションはiOS版で を終了したことを示しています。アプリケーション は、システムイベントの起動、終了、または応答に時間がかかりすぎました。 1つの これの共通原因は、メインの スレッドで同期ネットワーキングを実行しています。スレッド0上の操作は何でも: バックグラウンドスレッドに移動するか、別の方法で処理して、 メインスレッドをブロックしないようにする必要があります。

バックグラウンドに入ると、時間がかかることはないことを確認し、必要に応じてバックグラウンドタスクを使用し、バックグラウンドからのOpenGLコールなどは何もしないでください。クラッシュレポートにはフォアグラウンドにいると書かれているので、長い時間がかかりすぎてSpringboardがあなたのアプリを殺しているのではないかと思います。システムログによって確認されます。

+0

お返事ありがとうございます、私はバックグラウンドタスクを確認します。バックグラウンドに長く入っているアプリが合理的だと思われるケース。アプリがフォアグラウンドでクラッシュしたという報告がなぜ奇妙なのか。しかし、奇妙なことは、xcodeから切り離されたときだけクラッシュが現れる理由です。そして、なぜxcodeのバージョンビルドがうまく動いていたのですか? –

+1

@ArnoldasLiudžiusXcodeを使用する場合、通常、ウォッチドッグタイマーはアプリに影響を与えません。誰かが、なぜアプリケーションが応答を停止したのかをデバッグしようとしている可能性があります。そのため、ウォッチドッグがアプリを殺した場合には問題になります。 –

関連する問題