2012-04-25 71 views
1

我的iPad應用程序最近在iOS模擬器中運行時正在接收神祕的SIGKILL信號。它似乎在應用程序啓動的2分鐘內發生,但並非每次都發生。在模擬器中運行的iPad應用程序中的神祕SIGKILL

這個回溯表明什麼,或者我應該嘗試去除東西,直到找到罪魁禍首?

有一些組件可能涉及;一個例子是我最近整合了Crashlytics。另一個例子是我使用CLGeocoder在MKMapView上繪製一個位置,這可以解釋爲什麼在啓動後某個不確定的點發生問題(以及爲什麼MapKit出現在其中一個線程中)。但是如果沒有回溯或日誌清晰的指示,我就會在黑暗中拍攝。

Xcode 4.3.2;中定位iOS 5

* thread #1: tid = 0x1f03, 0x9c2c4c22 libsystem_kernel.dylib`mach_msg_trap + 10, stop reason = signal SIGKILL 
    frame #0: 0x9c2c4c22 libsystem_kernel.dylib`mach_msg_trap + 10 
    frame #1: 0x9c2c41f6 libsystem_kernel.dylib`mach_msg + 70 
    frame #2: 0x0178110a CoreFoundation`__CFRunLoopServiceMachPort + 186 
    frame #3: 0x016e4550 CoreFoundation`__CFRunLoopRun + 1312 
    frame #4: 0x016e3d84 CoreFoundation`CFRunLoopRunSpecific + 212 
    frame #5: 0x016e3c9b CoreFoundation`CFRunLoopRunInMode + 123 
    frame #6: 0x015af7d8 GraphicsServices`GSEventRunModal + 190 
    frame #7: 0x015af88a GraphicsServices`GSEventRun + 103 
    frame #8: 0x00394626 UIKit`UIApplicationMain + 1163 
    frame #9: 0x00001d4d Tablecloth`main + 141 at main.m:16 
    frame #10: 0x00001cb5 Tablecloth`start + 53 

    thread #3: tid = 0x2403, 0x9c2c790a libsystem_kernel.dylib`kevent + 10 
    frame #0: 0x9c2c790a libsystem_kernel.dylib`kevent + 10 
    frame #1: 0x020b9372 libdispatch.dylib`_dispatch_mgr_invoke + 918 
    frame #2: 0x020b7be1 libdispatch.dylib`_dispatch_mgr_thread + 53 

    thread #5: tid = 0x2603, 0x9c2c4c22 libsystem_kernel.dylib`mach_msg_trap + 10 
    frame #0: 0x9c2c4c22 libsystem_kernel.dylib`mach_msg_trap + 10 
    frame #1: 0x9c2c41f6 libsystem_kernel.dylib`mach_msg + 70 
    frame #2: 0x0178110a CoreFoundation`__CFRunLoopServiceMachPort + 186 
    frame #3: 0x016e45d5 CoreFoundation`__CFRunLoopRun + 1445 
    frame #4: 0x016e3d84 CoreFoundation`CFRunLoopRunSpecific + 212 
    frame #5: 0x016e3c9b CoreFoundation`CFRunLoopRunInMode + 123 
    frame #6: 0x03ede420 WebCore`_ZL12RunWebThreadPv + 560 
    frame #7: 0x93ebced9 libsystem_c.dylib`_pthread_start + 335 

    thread #6: tid = 0x2703, 0x9c2c4c22 libsystem_kernel.dylib`mach_msg_trap + 10 
    frame #0: 0x9c2c4c22 libsystem_kernel.dylib`mach_msg_trap + 10 
    frame #1: 0x9c2c41f6 libsystem_kernel.dylib`mach_msg + 70 
    frame #2: 0x0178110a CoreFoundation`__CFRunLoopServiceMachPort + 186 
    frame #3: 0x016e45d5 CoreFoundation`__CFRunLoopRun + 1445 
    frame #4: 0x016e3d84 CoreFoundation`CFRunLoopRunSpecific + 212 
    frame #5: 0x016e3c9b CoreFoundation`CFRunLoopRunInMode + 123 
    frame #6: 0x00d94e30 Foundation`+[NSURLConnection(Loader) _resourceLoadLoop:] + 398 
    frame #7: 0x00ca64d6 Foundation`-[NSThread main] + 76 
    frame #8: 0x00ca6447 Foundation`__NSThread__main__ + 1258 
    frame #9: 0x93ebced9 libsystem_c.dylib`_pthread_start + 335 

    thread #7: tid = 0x2803, 0x9c2c4c22 libsystem_kernel.dylib`mach_msg_trap + 10 
    frame #0: 0x9c2c4c22 libsystem_kernel.dylib`mach_msg_trap + 10 
    frame #1: 0x9c2c41f6 libsystem_kernel.dylib`mach_msg + 70 
    frame #2: 0x0178110a CoreFoundation`__CFRunLoopServiceMachPort + 186 
    frame #3: 0x016e45d5 CoreFoundation`__CFRunLoopRun + 1445 
    frame #4: 0x016e3d84 CoreFoundation`CFRunLoopRunSpecific + 212 
    frame #5: 0x016e3c9b CoreFoundation`CFRunLoopRunInMode + 123 
    frame #6: 0x0012286b MapKit`MKNormalizedPointForLayer + 30057 
    frame #7: 0x00ca64d6 Foundation`-[NSThread main] + 76 
    frame #8: 0x00ca6447 Foundation`__NSThread__main__ + 1258 
    frame #9: 0x93ebced9 libsystem_c.dylib`_pthread_start + 335 

    thread #8: tid = 0x2903, 0x9c2c6b42 libsystem_kernel.dylib`select$DARWIN_EXTSN + 10 
    frame #0: 0x9c2c6b42 libsystem_kernel.dylib`select$DARWIN_EXTSN + 10 
    frame #1: 0x017157cb CoreFoundation`__CFSocketManager + 939 
    frame #2: 0x93ebced9 libsystem_c.dylib`_pthread_start + 335 

    thread #9: tid = 0x2a03, 0x9c2c702e libsystem_kernel.dylib`__workq_kernreturn + 10 
    frame #0: 0x9c2c702e libsystem_kernel.dylib`__workq_kernreturn + 10 
    frame #1: 0x93ebeccf libsystem_c.dylib`_pthread_wqthread + 773 

編輯:Crashlytics支持團隊幫我調試這一點,這似乎解決它的東西是使用「重置內容和設置...」菜單項,在模擬器應用程序。目前還不清楚爲什麼會發生這種情況,但我沒有再受到調試中斷的影響。

回答

3

SIGKILL通常暗示您已被操作系統殺死。您的控制檯日誌將比堆棧跟蹤更有用。如果它在設備上,我會懷疑使用太多的內存,但在模擬器中這是不太可能的。另一個常見的SIGKILL是,如果你阻塞你的主線程太長了,所以我會尋找(雖然我不認爲模擬器提供了那個)。

但你最好看的地方是在運行日誌。

+0

感謝您的迴應!我在運行日誌中看到的唯一一件事是當地理編碼完成時我的「updateMap」NSLog。我認爲現在是實施通用應用程序委託方法的好時機,以查看它們是否正在被調用。當我運行在Instruments時,內存佔用大約6MB。我正在使用ARC。 – bneely 2012-04-25 23:01:09

+0

唉,我只是將NSLogs添加到幾個常見的應用程序委託方法中,問題得到了重現,並且在SIGKILL之前沒有任何方法(包括applicationDidReceiveMemoryWarning :)被調用。 – bneely 2012-04-25 23:08:33

+0

「被阻塞的主線程」SIGKILL會在回溯中顯示正在運行的主線程嗎? (這正是我所期望的,而且這會比較容易理解。) – bneely 2012-04-25 23:38:43

相關問題