奇怪的崩溃消息“试图取消引用垃圾指针”

时间:2013-08-19 19:07:34

标签: iphone ios xcode cocoa-touch crash-reports

我的应用程序是ARC abide app但仍然看到多个崩溃消息"尝试取消引用垃圾指针"在崩溃报告中。他们很难诊断。

我的问题是,为什么应用程序因为内存问题而崩溃,即使我们处于ARC并且我们无法使用相同的步骤重现它。如何应对此类崩溃?

一个这样的崩溃报告如下:

  

CrashReporterKey:896d0c8676c0e02eb292865a654825359de4d427   HardwareModel:iPod4,1版本:5510(3.0.0)OSVersion:iPhone OS   6.1.3(10B329)日期/时间:2013-08-15 09:50:51.000 -0700 FirmwareVersion:2.27.0报告版本:104

     

异常类型:EXC_BAD_ACCESS(SIGSEGV)异常代码:   KERN_INVALID_ADDRESS位于0x31fd4078崩溃的线程:0

     

线程0名称:调度队列:com.apple.main-thread线程0   崩溃:0 libobjc.A.dylib 0x3b1ac5b0 objc_msgSend +   16 1 UIKit 0x3533c350 0x35338000 + 17232 2   UIKit 0x3533b6c8 0x35338000 + 14024 3
  UIKit 0x3533b118 0x35338000 + 12568 4
  GraphicsServices 0x3702d5a0 0x37027000 + 26016 5
  GraphicsServices 0x3702d1d0 0x37027000 + 25040 6
  CoreFoundation 0x33508170 0x33471000 + 618864 7
  CoreFoundation 0x33508110 0x33471000 + 618768 8
  CoreFoundation 0x33506f98 0x33471000 + 614296 9
  CoreFoundation 0x33479eb8 CFRunLoopRunSpecific + 352   10 CoreFoundation 0x33479d48 CFRunLoopRunInMode +   104 11 GraphicsServices 0x3702c2e8 GSEventRunModal +   72 12 UIKit 0x3538f300 UIApplicationMain +   1120 13 MyApp 0x000a8e58 main + 20

     

线程1名称:Dispatch queue:com.apple.libdispatch-manager Thread   1:0 libsystem_kernel.dylib 0x3b69f648 kevent64 + 24 1
  libdispatch.dylib 0x3b5cadf8 0x3b5c7000 + 15864

     

线程2名称:WebThread线程2:0 WebCore
  0x39503560 0x3945d000 + 681312 1 WebCore
  0x394e7f90 0x3945d000 + 569232 2 WebCore
  0x394e2788 0x3945d000 + 546696 3 WebCore
  0x396ca8a8 _ZN7WebCore11FrameLoader16detachFromParentEv + 64 4
  WebKit 0x39e12618 0x39d8d000 + 546328 5
  WebCore 0x394699c8 0x3945d000 + 51656 6
  WebKit 0x39e12490 0x39d8d000 + 545936 7
  WebKit 0x39e18570 0x39d8d000 + 570736 8
  WebKit 0x39e184a8 0x39d8d000 + 570536 9
  WebCore 0x394fb850 0x3945d000 + 649296 10   CoreFoundation 0x33508680 0x33471000 + 620160 11   CoreFoundation 0x33507ee8 0x33471000 + 618216 12   CoreFoundation 0x33506cb0 0x33471000 + 613552 13   CoreFoundation 0x33479eb8 CFRunLoopRunSpecific + 352   14 CoreFoundation 0x33479d48 CFRunLoopRunInMode +   104 15 WebCore 0x39467500 0x3945d000 + 42240   16 libsystem_c.dylib 0x3b608310 0x3b5f7000 + 70416

     

线程3名称:CommRunLoop线程3:0   libsystem_kernel.dylib 0x3b6af6a4 __semwait_signal + 24 1
  基础0x33decc60 0x33d99000 + 343136 2
  MyApp 0x002be680 - [CommRunLoop   runLoopThread:] + 504 3 Foundation 0x33e49e80   0x33d99000 + 724608 4 libsystem_c.dylib 0x3b608310   0x3b5f7000 + 70416

     

线程4名称:com.apple.CFSocket.private线程4:0
  libsystem_kernel.dylib 0x3b6af594选择$ DARWIN_EXTSN + 20 1   libsystem_c.dylib 0x3b608310 0x3b5f7000 + 70416

     

线程5:0 libsystem_kernel.dylib 0x3b6af6a4   __semwait_signal + 24 1基础0x33decc60 0x33d99000 + 343136 2 MyApp 0x00333580    - [KSCrashDeadlockMonitor runMonitor] + 244 3基础0x33e49e80 0x33d99000 + 724608 4 libsystem_c.dylib
  0x3b608310 0x3b5f7000 + 70416

     

线程6名称:KSCrash异常处理程序(辅助)线程6:0
  libsystem_kernel.dylib 0x3b69eeb4 mach_msg_trap + 20 1
  MyApp 0x0032f710 ksmachexc_i_handleExceptions   + 124 2 libsystem_c.dylib 0x3b608310 0x3b5f7000 + 70416

     

线程7名称:KSCrash异常处理程序(主)线程7:

     

线程8名称:com.apple.NSURLConnectionLoader线程8:0
  libsystem_kernel.dylib 0x3b69eeb4 mach_msg_trap + 20 1
  CoreFoundation 0x33508040 0x33471000 + 618560 2
  CoreFoundation 0x33506da0 0x33471000 + 613792 3
  CoreFoundation 0x33479eb8 CFRunLoopRunSpecific + 352   4 CoreFoundation 0x33479d48 CFRunLoopRunInMode +   104 5基础0x33dc63d0 0x33d99000 + 185296   6基金会0x33e49e80 0x33d99000 + 724608 7
  libsystem_c.dylib 0x3b608310 0x3b5f7000 + 70416

     

线程9名称:JavaScriptCore :: BlockFree线程9:0
  libsystem_kernel.dylib 0x3b6af08c __psynch_cvwait + 24 1
  libsystem_c.dylib 0x3b600aa0 pthread_cond_timedwait + 40   2 JavaScriptCore 0x37422c70   _ZN3WTF15ThreadCondition9timedWaitERNS_5MutexEd + 104 3 JavaScriptCore 0x37534550 0x373c7000 + 1496400 4
  JavaScriptCore 0x37546fa8 0x373c7000 + 1572776 5
  libsystem_c.dylib 0x3b608310 0x3b5f7000 + 70416

     

线程10名称:Dispatch queue:com.apple.root.background-priority   线程10:0 MyApp 0x00320a18   + [KSCrashReportFilterAppleFmt filterWithReportStyle:] + 0 1 libdispatch.dylib 0x3b5c9118 0x3b5c7000 + 8472 2
  libdispatch.dylib 0x3b5d7258 0x3b5c7000 + 66136 3
  libdispatch.dylib 0x3b5d73b8 0x3b5c7000 + 66488 4
  libsystem_c.dylib 0x3b5fda10 0x3b5f7000 + 27152

     

线程11:0 libsystem_kernel.dylib 0x3b6afd98   __workq_kernreturn + 8 1 libsystem_c.dylib 0x3b5fda10 0x3b5f7000 + 27152

     

线程12:0 libsystem_kernel.dylib 0x3b6afd98   __workq_kernreturn + 8 1 libsystem_c.dylib 0x3b5fda10 0x3b5f7000 + 27152

     

线程13:0 libsystem_kernel.dylib 0x3b6afd98   __workq_kernreturn + 8 1 libsystem_c.dylib 0x3b5fda10 0x3b5f7000 + 27152

     

线程0因ARM线程状态而崩溃:       r0:0x1fd2a130 r1:0x357e82c0 r2:0x1fd3a6d0 r3:0x20a8a4a0       r4:0x31fd4070 r5:0x20a8a4a0 r6:0x2fd59a10 r7:0x2fd599f8       r8:0x20a8af20 r9:0x0d5fa0b0 r10:0xbecb6c00 r11:0x1fd3a6d0       ip:0x3bb2bd64 sp:0x2fd599c8 lr:0x355abb97 pc:0x3b1ac5b0 cpsr:0x20000030

     

额外信息:

     

Stack Dump(0x2fd599a0-0x2fd59a18):

     

A8B4BC3B209FF240B499D52FADD81A3BA8B4BC3BC099D52F45D91A3BD0A6D31FC899D52FF1D01B3BA0A4A820D0A6D31F000000000020B23F00000000806DD9BF00000000E073ECBF0000000000000000009F63BF209FF240789AD52F51C3333500000000806DD9BF00000000E073ECBFDA1B7C21209FF240

     

值得注意的地址:{       " r1":{           "地址":897483456,           "输入":" string",           "价值":"加速计:didAccelerate:"       },       " r11":{           "地址":533964496,           " class":" UIAccelerometer",           " ivars":{               " _delegate":{                   "地址":533897520,                   "输入":"未知"               },               " _updateInterval":0.1           },           "输入":" objc_object"       },       " r2":{           "地址":533964496,           " class":" UIAccelerometer",           " ivars":{               " _delegate":{                   "地址":533897520,                   "输入":"未知"               },               " _updateInterval":0.1           },           "输入":" objc_object"       },       " r3":{           "地址":547923104,           " class":" UIAcceleration",           " ivars":{               "时间戳":76274,               " x":0.0708008,               " y":-0.397308,               " z":-0.889145           },           "输入":" objc_object"       },       " r5":{           "地址":547923104,           " class":" UIAcceleration",           " ivars":{               "时间戳":76274,               " x":0.0708008,               " y":-0.397308,               " z":-0.889145           },           "输入":" objc_object"       },       " r8":{           "地址":547925792,           " class":" __ NSCFType",           " ivars":{},           "输入":" objc_object"       },       " stack @ 0x2fd599a0":{           "地址":1002222760,           " class":" UIAcceleration",           "输入":" objc_class"       },       " stack @ 0x2fd599b0":{           "地址":1002222760,           " class":" UIAcceleration",           "输入":" objc_class"       },       " stack @ 0x2fd599bc":{           "地址":533964496,           " class":" UIAccelerometer",           " ivars":{               " _delegate":{                   "地址":533897520,                   "输入":"未知"               },               " _updateInterval":0.1           },           "输入":" objc_object"       },       " stack @ 0x2fd599c8":{           "地址":547923104,           " class":" UIAcceleration",           " ivars":{               "时间戳":76274,               " x":0.0708008,               " y":-0.397308,               " z":-0.889145           },           "输入":" objc_object"       },       " stack @ 0x2fd599cc":{           "地址":533964496,           " class":" UIAccelerometer",           " ivars":{               " _delegate":{                   "地址":533897520,                   "输入":"未知"               },               " _updateInterval":0.1           },           "输入":" objc_object"       }}

     

CrashDoctor诊断:尝试取消引用垃圾指针   0x31fd4078。

1 个答案:

答案 0 :(得分:5)

即使你正在使用ARC,它仍然可以编写错误的代码 - 这不是魔术,而且还有规则。在这种情况下,尝试在Xcode中运行您的应用程序的调试版本,并打开“NSZombies”。这样做,就是每当你的应用程序试图释放一个对象时,Objective-C会用一个NSZombie对象替换它,当你试图使用它时,它会提供一个更有用的错误信息(试图取消引用垃圾)指针,正如你愚蠢的CrashDoctor告诉你的那样)。