奇怪的堆栈跟踪多次发生神秘崩溃

时间:2013-08-14 11:38:21

标签: ios5 ios6 crash segmentation-fault sigsegv

我在应用程序商店上获得了这个应用程序,在10天内我遇到了超过6000次崩溃!我可以在HockeyApp上看到的堆栈跟踪非常神秘,而且根据iOS版本(5或6)我也有2种不同的堆栈跟踪,但我很确定它们都是同样的崩溃。 你怎么看待这件事?我应该去哪里找虫子?毋庸置疑,我无法重现它。

iOS 6

Thread 0 Crashed:
0   libobjc.A.dylib                     0x3ae395d0 _objc_msgSend + 16
1   Foundation                          0x338bc4a1 __NSThreadPerformPerform + 461
2   CoreFoundation                      0x32f798f7 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
3   CoreFoundation                      0x32f791f3 __CFRunLoopDoSources0 + 363
4   CoreFoundation                      0x32f77f2f __CFRunLoopRun + 647
5   CoreFoundation                      0x32eeb23d _CFRunLoopRunSpecific + 357
6   CoreFoundation                      0x32eeb0c9 _CFRunLoopRunInMode + 105
7   GraphicsServices                    0x36aa633b _GSEventRunModal + 75
8   UIKit                               0x34e072b9 _UIApplicationMain + 1121
9   <REDACTED>                        0x00055943 main (main.m:16)

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x736f7477
Crashed Thread:  0

iOS 5:

Thread 0 Crashed:
0   libobjc.A.dylib                     0x338c8f78 _objc_msgSend + 16
1   CoreFoundation                      0x35c091fb -[NSObject performSelector:withObject:] + 43
2   Foundation                          0x350d9747 ___NSThreadPerformPerform + 351
3   CoreFoundation                      0x35c7ead3 ___CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
4   CoreFoundation                      0x35c7e335 ___CFRunLoopDoSources0 + 365
5   CoreFoundation                      0x35c7d045 ___CFRunLoopRun + 653
6   CoreFoundation                      0x35c004a5 _CFRunLoopRunSpecific + 301
7   CoreFoundation                      0x35c0036d _CFRunLoopRunInMode + 105
8   GraphicsServices                    0x3399b439 _GSEventRunModal + 137
9   UIKit                               0x333d8cd5 _UIApplicationMain + 1081
10  <REDACTED>                        0x0003f32b main (main.m:16)

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0xf10d9e21
Crashed Thread:  0

我已经检查了每次调用performSelector:withObject:并且我看不到任何无法识别的选择器被调用。错误在哪里?

更新**包含来自后台线程的堆栈跟踪

Thread 1:
0   libsystem_kernel.dylib              0x3568a3a8 _kevent + 24
1   libdispatch.dylib                   0x339bdbc9 __dispatch_mgr_wakeup + 1

Thread 2:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 3:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 4:
0   libsystem_kernel.dylib              0x3569a0d8 ___psynch_mutexwait + 24
1   WebCore                             0x3721d4ef __ZL17_WebTryThreadLockb + 215
2   WebCore                             0x3721d7f3 __ZL14WebRunLoopLockP19__CFRunLoopObservermPv + 31
3   CoreFoundation                      0x355f8b1b ___CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 19
4   CoreFoundation                      0x355f6d57 ___CFRunLoopDoObservers + 259
5   CoreFoundation                      0x355f701f ___CFRunLoopRun + 615
6   CoreFoundation                      0x3557a4a5 _CFRunLoopRunSpecific + 301
7   CoreFoundation                      0x3557a36d _CFRunLoopRunInMode + 105
8   WebCore                             0x372c0ca3 __ZL12RunWebThreadPv + 403
9   libsystem_c.dylib                   0x34843735 __pthread_start + 321

Thread 5:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 6:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 7:
0   libsystem_kernel.dylib              0x3568a004 _mach_msg_trap + 20
1   CoreFoundation                      0x355f83f3 ___CFRunLoopServiceMachPort + 127
2   CoreFoundation                      0x355f712b ___CFRunLoopRun + 883
3   CoreFoundation                      0x3557a4a5 _CFRunLoopRunSpecific + 301
4   CoreFoundation                      0x3557a36d _CFRunLoopRunInMode + 105
5   Foundation                          0x349bfbb9 +[NSURLConnection(Loader) _resourceLoadLoop:] + 309
6   Foundation                          0x349bfa81 -[NSThread main] + 73
7   Foundation                          0x34a53591 ___NSThread__main__ + 1049
8   libsystem_c.dylib                   0x34843735 __pthread_start + 321

Thread 8:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 9:
0   libsystem_kernel.dylib              0x3569a570 ___select + 20
1   libsystem_c.dylib                   0x34843735 __pthread_start + 321

Thread 10:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 11:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 12:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 13:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 14:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 15:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 16:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 17:
0   libsystem_kernel.dylib              0x3569acd4 ___workq_kernreturn + 8

Thread 0 crashed with ARM Thread State:
    r0: 0x10910cc0     r1: 0x322194f6     r2: 0x00482a7a     r3: 0x00000000 
    r4: 0xf10a6823     r5: 0x00481a7a     r6: 0x33102823     r7: 0x2fef2e54 
    r8: 0x00482a7a     r9: 0x0c88653d    r10: 0x3efac9b4    r11: 0x00000000 
    ip: 0x004a710c     sp: 0x2fef2e38     lr: 0x00315cf3     pc: 0x33242f78 
  cpsr: 0x20080030 

由于

已编辑:由于DDPerformDebugger.m,我终于解决了它 崩溃是由客户提供的第三方框架引起的。 谢谢大家

1 个答案:

答案 0 :(得分:1)

您的应用中似乎有内存和线程问题。该应用程序正在尝试向已经解除分配的对象发送消息(方法)。

两个堆栈跟踪暗示了线程的使用。看起来你正在后台线程中做一些工作,然后发送一个消息到一个不再存在的对象(在主线程上?)。因此,检查后台线程的堆栈跟踪并查看它们正在执行的操作可能会有所帮助。