奇怪的崩溃,并显示消息“尝试取消引用垃圾指针”

Abh*_*nav 3 iphone xcode cocoa-touch crash-reports ios

我的应用程序是ARC abide应用程序,但仍然在崩溃报告中看到多次崩溃,并显示消息“尝试取消引用垃圾指针”。他们很难诊断。

我的问题是,即使在使用ARC之后,为什么应用程序也会由于内存问题而崩溃,而我们无法通过相同的步骤进行复制。如何解决此类崩溃?

其中一种崩溃报告如下:

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

异常类型:EXC_BAD_ACCESS(SIGSEGV)异常代码:0x31fd4078处的KERN_INVALID_ADDRESS损坏的线程: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 0x3533bs
显卡0x3533b118370 + 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名称:调度队列:com.apple.libdispatch-manager线程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基础0x33e49e80 0x33d99000 + 724608 4 libsystem_c.dylib 0x3b608310 0x3b5f7000 + 70416

线程4名称:com.apple.CFSocket.private线程4:0
libsystem_kernel.dylib 0x3b6af594 select $ 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 0x33b53 0374b4416310

线程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 0x3347999d 0x334790000 + 374Rundoop 0x3347999488 Run_Roop 3CFFounded 0x33479eb48 0 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名:调度队列:com.apple.root.background优先级的线程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

额外的信息:

堆栈转储(0x2fd599a0-0x2fd59a18):

A8B4BC3B209FF240B499D52FADD81A3BA8B4BC3BC099D52F45D91A3BD0A6D31FC899D52FF1D01B3BA0A4A820D0A6D31F000000000020B23F00000000806DD9BF00000000E073ECBF0000000000000000009F63BF209FF240007B3009B9003F9001B900BC3900B9003B900F9001B900B3D00CFA3D00C3D00A9B

著名的地址:{“ r1”:{“地址”:897483456,“类型”:“ string”,“值”:“ accelerometer:didAccelerate:”},“ r11”:{“地址”:533964496,“类别”: “ UIAccelerometer”,“ ivars”:{“ _delegate”:{“地址”:533897520,“ type”:“未知”},“ _updateInterval”:0.1},“ type”:“ objc_object”},“ r2”:{ “地址”:533964496,“类别”:“ UIAccelerometer”,“ ivars”:{“ _delegate”:{“ address”:533897520,“ type”:“ unknown”},“ _updateInterval”:0.1},“ type”:“ objc_object”},“ r3”:{“ address”:547923104,“ class”:“ UIAcceleration” ,“ ivars”:{“时间戳”:76274,“ x”:0.0708008,“ y”:-0.397308,“ z”:-0.889145},“ type”:“ objc_object”},“ r5”:{“地址” :547923104,“ class”:“ UIAcceleration”,“ ivars”:{“ timestamp”:76274,“x“:0.0708008,” y“:-0.397308,” z“:-0.889145},” type“:” objc_object“},” r8“:{” address“:547925792,” class“:” __NSCFType“,” ivars “:{},” type“:” objc_object“},” stack @ 0x2fd599a0“:{” address“:1002222760,” class“:” UIAcceleration“,” type“:” objc_class“},” stack @ 0x2fd599b0“: {“ address”:1002222760,“ class”:“ UIAcceleration”,“ type”:“ objc_class”},“ stack @ 0x2fd599bc”:{“ address”:533964496,“ class”:“ UIAccelerometer”,“ ivars”:{“ _delegate”:{“地址”:533897520,“ type”:“未知”},“ _updateInterval”:0.1},“ type”:“ objc_object”} ,“ stack @ 0x2fd599c8”:{“地址”:547923104,“类别”:“ UIAcceleration”,“ ivars”:{“时间戳”:76274,“ x”:0.0708008,“ y”:-0.397308,“ z”: -0.889145},“ type”:“ objc_object”},“ stack @ 0x2fd599cc”:{“ address”:533964496,“ class”:“ UIAccelerometer”,“ ivars”:{“ _delegate”:{“地址”:533897520,“ type”:“未知”},“ _updateInterval”:0.1},“ type”:“ objc_object”} }

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

小智 5

即使使用ARC,仍然可以编写错误的代码-这不是魔术,仍然有规则。在这种情况下,请尝试在“ NSZombies”已打开的情况下在Xcode中运行应用程序的调试版本。这样做是每次应用程序尝试取消分配对象时,Objective-C都会将其替换为一个NSZombie对象,该对象将在您尝试使用它时提供更有用的错误消息(尝试取消引用垃圾指针,这很愚蠢) CrashDoctor的事情告诉你)。