当前位置: 首页 > 知识库问答 >
问题:

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

汲永嘉
2023-03-14

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

我的问题是,为什么应用程序会因为内存问题而崩溃,即使我们在ARC上,并且我们不能用相同的步骤复制它。如何应对此类碰撞?

其中一份事故报告如下:

CrashReporterKey:896d0c8676c0e02eb292865a654825359de4d427硬件模型:iPod4,1版本:5510(3.0.0)操作系统版本:iPhone操作系统6.1。日期/时间:2013-08-15 09:50:51.000-0700固件外翻:2.27。0报告版本:104

异常类型:EXC_错误访问(SIGSEGV)异常代码:内核地址在0x31fd4078处无效崩溃线程:0

线程0名称:调度队列:com.apple.main线程0崩溃:0 libobjc。A. dylib 0x3b1ac5b0objc_msgSend16 1 UIKit 0x3533c350 0x35338000 17232 2UIKit 0x3533b6c8 0x35338000 14024 3
UIKit 0x3533b118 0x35338000 12568 4
GraphicsServices 0x3702d5a0 0x37027000 26016 5
GraphicsServices 0x3702d1d0 0x37027000 25040 6
CoreFoundation0x33508170 0x33471000 618864 7
CoreFoundation 0x33508110 0x33471000 618768 8
CoreFoundation 0x33506f98 0x33471000 614296 9
CoreFoundation 0x33479eb8 CFRunLoopRun具体352 10 CoreFoundation 0x33479d48 CFRunLoopRunInMode 104 11 GraphicsServices 0x3702c2e8 GSEventRunModal 72 12 UIKit 0x3538f300 UIApplication ationMain 1120 13MyApp 0x000a8e58主20

线程1名称:调度队列:com。苹果libdispatch管理器线程1:0 libsystem\u内核。动态库0x3b69f648 kevent64 24 1
libdispatch。动态库0x3b5cadf8 0x3b5c7000 15864

线程2名称:WebThread线程2:0 WebCore
0x39503560 0x3945d000 681312 1 WebCore
0x394e7f90 0x3945d000 569232 2 WebCore
0x394e2788 0x3945d000 546696 3 WebCore
0x396ca8a8\u zN7WebCore11框架加载程序16从父项64分离WebKit 0x39e12618 0x39d8d000 546328 5
WebCore 0x394699c8 0x3945D051656
WebKit WebKit0x39e12490 0x39d8d000 545936 7
WebKit 0x39e18570 0x39d8d000 570736 8
WebKit 0x39e184a8 0x39d8d000 570536 9
WebCore 0x394fb850 0x3945d000 649296 10 CoreFoundation 0x33508680 0x3347100620160 11 CoreFoundation 0x33507ee8 0x3347100618216 12 CoreFoundation 0x33506cb0 0x3347100613552 13 CoreFoundation 0x33479898 EB8CFRunLoopRunSpecific 352 14 CoreFoundation 0x33479d48 CFRunLoopRunInMode 104 15 WebCore 0x39467500 0x3945d000 42240 16 libsystem_c.dylib 0x3b608310 0x3b5f7000 70416

线程3名称:ComRunLoop线程3:0
libsystem_kernel.dylib0x3b6af6a4__semwait_signal24 1
Foundation 0x33decc60 0x33d99000 343136 2
MyApp 0x002be680-[ComRunLoop runLoopThread:] 504 3 Foundation 0x33e49e80 0x33d99000 724608 4<--plhd-1/>0x3b608310 0x3b5f7000 70416

线程4名称:com。苹果CFSocket。私有线程4:0
libsystem\u内核。动态库0x3b6af594选择$DARWIN_EXTSN 20 1 libsystem_c.动态库0x3b608310 0x3b5f7000 70416

线程5:0 libsystem\u内核。DYLIB 0x3B6AF6A4αSimaWiTi信号24 1基金会0x33 DEC6060 0x33 D9000 343136 343136 MyAPP 0x00 33 3580-[KSCRASHADSLION监控RunMeal] 244 0x3E4E8080 0x33 D9000 724608 4 LIB系统C DyLB < BR> 0x3B608310 0x3B5F7000 70416

线程6名称: KSCrash异常处理程序(二级)线程6:0
libsystem_kernel.dylib0x3b69eeb4mach_msg_trap20 1
MyApp 0x0032f710ksmachexc_i_handleExceptions124 2libsystem_c.dylib0x3b608310 0x3b5f7000 70416

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

线程8名称:com。苹果NSURLConnectionLoader线程8:0
libsystem\u内核。DYLIB 0x3B69EEB4 MaCH MsggTRAP 20 0C350508040 0x34071000 618560 618560 2 BR>岩心处理0x33 5066DA0 0x334 71000 613792 3 3 BR>岩心圈0x334 79EB8 CFRunLoun-Run-Load 352 352 4岩心联合作用0x334 79D48libsystem_c.dylib 0x3b608310 0x3b5f7000 70416

线程9名称:JavaScriptCore::无块线程9:0
libsystem\u内核。dylib 0x3b6af08c\uuuu psynch\u cvwait 24 1
libsystem\u c.dylib 0x3b600aa0 pthread\u cond\u timedwait 40 2 JavaScriptCore 0x37422c70\u zn3wtf15线程条件9 timedwaiterns\u 5执行104 3 JavaScriptCore 0x37534550 0x373c7000 1496400 4
JavaScriptCore 0x37546fa8 0x373c7000 1572776 5

线程10名称:调度队列:com。苹果根后台优先级线程10:0 MyApp 0x00320a18[KSCrashReportFilterAppleFmt filterWithReportStyle:]0 1 libdispatch。动态库0x3b5c9118 0x3b5c7000 8472 2
libdispatch。动态库0x3b5d7258 0x3b5c7000 66136 3
libdispatch。动态库0x3b5d73b8 0x3b5c7000 66488 4

线程11:0libsystem_kernel.dylib0x3b6afd98__workq_kernreturn8 1libsystem_c.dylib0x3b5fda10 0x3b5f7000 27152

线程12:0 libsystem\u内核。dylib 0x3b6afd98 uu工作密钥返回8 1 libsystem_c.dylib 0x3b5fda10 0x3b5f7000 27152

线程13:0 libsystem\u内核。dylib 0x3b6afd98 uu工作密钥返回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:0x2FD597PC:0x355B30AC2000B10

额外信息:

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

A8B4BC3B209FF240B499D52FADD81A3BA8B4BC3BC099D52F45D91A3BD0A6D31FC899D52FF1D0B3BA0A820D0A6D31F000000000020B23F00000000806DD9BF00000000E073ECBF00000000000000000009F63BF209FF240789AD52F51C3350000000080DD9BF00000000E073ECBFDA1B7C21209FF240

值得注意的地址:{"r1":{"地址": 897483456,"类型":"字符串","值":"加速度计: didAccelerate:" }, "r11":{"地址": 533964496,"类":"UIAcc在加速度计","ivars": { "_委托":{"地址": 533897520,"类型":"未知"}、"_updateInterval": 0.1}、"类型":"objc_object"}、"r2":{"地址": 533964496、"类":"UIAcc在计"、"ivars": { "_委托":{"地址": 533897520、"类型":"未知" }, "_updateInterval": 0.1}、"类型":"objc_object"},"r3":{"地址":547923104,"类":"UI加速","ivars":{"时间戳":76274,"x":0.0708008,"y":-0.397308,"z":-0.889145},"类型":"objc_object"},"r5":{"地址":547923104,"class":"UI加速","ivars":{"时间戳": 76274,"x": 0.0708008,"y":-0.397308,"z":-0.889145},"type":"objc_object"},"r8":{"地址": 547925792,"class":"__NSCFType","ivars":{},"type":"objc_object" }, " stack@0x2fd599a0 ": { "地址": 1002222760,"class":"UIAcceleration","type":"objc_class" }, " stack@0x2fd599b0 ": { "地址": 1002222760,"class":"UIAcceleration","type":"objc_class"},"stack@0x2fd599bc ": { "地址":533964496,"类":"UI加速度计","ivars": { "_委托":{"地址":533897520,"类型":"未知" }, "_更新间隔":0.1},"类型":"objc_object" }, "stack@0x2fd599c8": { "地址:547923104,类:UIAcceleration,ivars:{时间戳:76274,x:0.0708008,y:-0.397308,z:-0.889145},类型:objc_object" }, " stack@0x2fd599cc ": { "地址:533964496,"类":"UIAccelereter","ivars": { "_委托":{"地址": 533897520,"类型":"未知" }, "_更新间隔": 0.1},"类型":"objc_object"}}

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

共有1个答案

佴淮晨
2023-03-14

编写错误代码仍然是可能的,即使在使用ARC时也是如此——这不是魔法,而且仍然有规则。在本例中,请尝试在启用“NSZombies”的情况下在Xcode中运行应用程序的调试版本。这样做的目的是,每当你的应用程序试图释放一个对象时,Objective-C就会用一个NSZombie对象来替换它,当你试图使用它时,它会提供一个更有用的错误消息(就像你愚蠢的CrashDoctor告诉你的那样,尝试去引用垃圾指针)。

 类似资料:
  • 不久前,我打开电脑处理我一直在开发的Minecraft mod,但我没有像往常一样运行,而是得到了这个例外: 在尝试了几个小时之后,我意识到我的代码没有问题。我试着运行我制作的其他java程序。一个简单的Hello World程序工作了,但我的LWJGL游戏也出现了同样的异常,我使用的任何程序都因文件未找到而崩溃。IO程序也适用于通过GitHub从事同一项目的其他人。 来自IntelliJ的日志太

  • Kafka过去在我自己的电脑上工作得很好。我正在另一台电脑上工作,上面写着 为目录C:\tmp\kafka logs(kafka.server.LogDirFailureChannel)java中的\uu consumer\u offset-41创建日志时出错。木卫一。IOException:映射在sun失败。尼奥。总经理。Kafka地图(FileChannelImpl.java:940)。日志抽

  • 问题内容: 我已配置Java将垃圾回收信息转储到日志中(详细GC)。我不确定日志中的垃圾回收项是什么意思。这些条目的示例发布在下面。我在Google上四处搜寻,但找不到可靠的解释。 我有一些合理的猜测,但我正在寻找答案,这些答案提供了对条目中数字含义的严格定义,并有可靠的依据。引用sun文档的所有答案的自动+1。我的问题是: PSYoungGen指的是什么?我认为这与上一代(年轻人)有关,但是究竟

  • 我注意到,当我在后台发送FCM负载时,我看到通知消息被显示,这与文档一致,但我看到收到的每个通知消息的本机通知。当我的应用程序在后台时,我收到了3条推送消息(带有通知负载),现在我在通知托盘中看到了3条本机通知。为什么他们没有崩溃?默认情况下,根据FCM文档,所有通知消息都是可折叠的。参考文件:https://firebase.google.com/docs/cloud-messaging/con

  • 你知道这里发生了什么吗?可以恢复消息和队列吗?如何使用ActiveMQ Artemis数据?所有队列/消息都丢失了。只有dlq/expiryqueue。 我们必须更改配置。所以我们开始更新从机。 为了将故障转移到从服务器以修复主服务器,我们执行了@16:32 在Master上有一些警告,但不多。 在从服务器上,我们可以看到一些超时和连接失败。不确定Slave是否接管了队列并且工作正常。 @16:4

  • 我在x64 Windows 10 pro上)我下载了最新版本的JDK和Android Studio,想学习如何构建Android应用程序,直到安装和管理SDK和AVD一切正常,我创建了一个新的Hello World项目,它开始下载一些东西,然后突然崩溃,现在当我启动Android Studio时,它正常打开,但在完成文件索引时崩溃,没有错误消息,它只是关闭。我试着以管理员的身份运行,创建了一个新的