- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近收到了如下所示的崩溃报告:
0 libobjc.A.dylib 0x0000000193dfea88 object_cxxDestructFromClass(objc_object*, objc_class*) + 0
1 libobjc.A.dylib 0x0000000193e0bf34 objc_destructInstance + 88
2 libobjc.A.dylib 0x0000000193e0bf8c object_dispose + 24
3 我的应用程序 0x00000001000d88fc -[CCAction dealloc] + 44
4 我的应用程序 0x00000001000e6bf8 -[CCActionSequence .cxx_destruct] + 36
5 libobjc.A.dylib 0x0000000193dfeb18 object_cxxDestructFromClass(objc_object*, objc_class*) + 144
6 libobjc.A.dylib 0x0000000193e0bf34 objc_destructInstance + 88
7 libobjc.A.dylib 0x0000000193e0bf8c object_dispose + 24
8 我的应用程序 0x00000001000d88fc -[CCAction dealloc] + 44
9 我的应用程序 0x00000001000e6bf8 -[CCActionSequence .cxx_destruct] + 36
10 libobjc.A.dylib 0x0000000193dfeb18 object_cxxDestructFromClass(objc_object*, objc_class*) + 144
11 libobjc.A.dylib 0x0000000193e0bf34 objc_destructInstance + 88
12 libobjc.A.dylib 0x0000000193e0bf8c object_dispose + 24
13 我的应用程序 0x00000001000d88fc -[CCAction dealloc] + 44
14 我的应用程序 0x00000001000e6bf8 -[CCActionSequence .cxx_destruct] + 36
...它会一直这样下去。 dealloc
中发生某种无限递归,导致堆栈溢出。
只有 2 个方法调用对我可见,其中之一是 .cxx_destruct
,它是 ARC 使用的内部私有(private)方法。另一个是CCAction
的dealloc
方法,里面只有一条log语句:
-(void) dealloc {
CCLOGINFO(@"cocos2d: deallocing %@", self);
}
崩溃真的很难重现;我只见过一次。但是我的应用程序尚未向公众发布,所以我真的很想弄清楚是什么原因造成的。非常感谢任何调试帮助。
我正在使用 Cocos2D 3.3.0
和 iOS 8.1
最佳答案
如果您使用的是 ARC,则在 dealloc
中向 self
发送消息不会像以前在手动内存管理中那样工作。 ARC 在调用 dealloc
之前在 .cxx_destruct
中完成所有清理/处理,因此在 dealloc
中将消息发送到 self
将导致未定义的行为 - 很可能会崩溃。与手动内存管理不同,您可以在调用 [super dealloc]
之前在 dealloc
中向 self
发送消息。
从您的代码看来,CCLogInfo
正在向 self
发送消息,很可能是 [self description]
(假设 CCLogInfo
参数只是带有参数的格式字符串)。这会导致崩溃,但我不确定为什么会导致递归 - 你能把代码分享给 CCLogInfo
吗?
关于ios - libobjc dealloc 中的 KERN_PROTECTION_FAILURE(堆栈溢出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27747131/
我正在尝试解决在使用我的应用程序期间在不同时间点时不时发生的不可预测的崩溃。我非常感谢任何帮助,因为我对它可能是什么感到迷失,我确实转换为 ARC 并在需要时使用了 @AutoReleasePool,
我的 iPhone 应用程序崩溃了,我从 Crashlytics(iPhone 5C,iOS 7.1.1)获得了以下堆栈跟踪。它持续了 500 多行,我在任何地方都看不到任何引用我的代码的内容。有什么
我遇到了一个有趣的崩溃,我似乎永远无法在模拟器上复制它: Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: KERN_PROTECTI
我最近开始经历以下崩溃。 崩溃:com.socketio.engineHandleQueue EXC_BAD_ACCESS KERN_PROTECTION_FAILURE 0x000000001650
我有多个崩溃报告指向以下内容: Thread : Crashed: NSOperationQueue 0x18c7fba0 0 libsystem_platform.dylib 0x38
Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000 什么是内
iPhone 操作系统上的 KERN_INVALID_ADDRESS 和 KERN_PROTECTION_FAILURE 有什么区别? 我有两个来自临时 Beta 测试人员的崩溃报告,它们相隔 5 分
我收到如下错误(经过审查和修剪以保护专有信息): Process: MyExecutable [7150] Path: /Applicat
我最近收到了如下所示的崩溃报告: 0 libobjc.A.dylib 0x0000000193dfea88 object_cxxDestructFromClass(objc_object*, objc
我收到这个错误 Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FAI
这是来自 Crashlytics 的两个堆栈跟踪,两者都包含我的代码的同一行,但导致了两次不同的崩溃。 # OS Version: 10.3.2 (14F90) # Device: iPad 5 #
我的程序崩溃了: Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FA
我是一名优秀的程序员,十分优秀!