尝试修复崩溃:QuartzCore - CA::release_objects(X::List<void const*>*)
Posted
技术标签:
【中文标题】尝试修复崩溃:QuartzCore - CA::release_objects(X::List<void const*>*)【英文标题】:Trying to Fix Crash: QuartzCore - CA::release_objects(X::List<void const*>*) 【发布时间】:2015-02-21 20:16:42 【问题描述】:我们的应用发生了几次崩溃,想看看你们中是否有人可能有一些见解或有类似的经历。我在下面分享了崩溃日志信息。
运行 ios 8.1。我们已经通过仪器、静态分析仪运行它,但仍在努力找出问题所在。
QuartzCore
CA::release_objects(X::List<void const*>*)
13
Crashed: Thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x0042de0f48aa7488
Thread : Crashed: Thread
0 libobjc.A.dylib 0x0000000193debbdc objc_msgSend + 28
1 CoreFoundation 0x0000000183561228 CFRelease + 524
2 QuartzCore 0x0000000187788644 CA::release_objects(X::List<void const*>*) + 32
3 QuartzCore 0x000000018778e498 -[CAAnimation dealloc] + 80
4 libobjc.A.dylib 0x0000000193df1724 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 564
5 libobjc.A.dylib 0x0000000193df2754 (anonymous namespace)::AutoreleasePoolPage::tls_dealloc(void*) + 72
6 libsystem_pthread.dylib 0x00000001945fa3e0 _pthread_tsd_cleanup + 200
7 libsystem_pthread.dylib 0x00000001945fa0ac _pthread_exit + 140
8 libsystem_pthread.dylib 0x00000001945fb330 pthread_exit + 44
9 Foundation 0x0000000184487000 -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:]
10 Foundation 0x0000000184555c24 __NSThread__main__ + 1096
11 libsystem_pthread.dylib 0x00000001945fbe80 _pthread_body + 164
12 libsystem_pthread.dylib 0x00000001945fbddc _pthread_body
【问题讨论】:
参见 CFRelease() - 这意味着 QuartzCore 试图释放一个对象,该对象要么是 nil,要么是之前被释放的。我会尝试在启用 Zombies 的情况下运行您的应用 - 这可能会帮助您找到问题(搜索以获取有关如何启用它的大量建议)。 我已经启用了 Zombies,但不幸的是它并没有太大帮助。 你的意思是“不是很有帮助”?你的意思是你听不懂吗?僵尸日志消息实际上说了什么? - 此外,很明显这里有问题的代码涉及performSelectorOnMainThread:withObject:waitUntilDone:
和某种动画;您找不到并显示该代码吗?
【参考方案1】:
这里的问题是,您在 Core Animation 没有预料到的对象上进行了一次额外的发布,因此问题出现在您的代码中,但在动画框架完成其清理阶段时暴露出来。
要解决此问题,请使用 Profiling。选择 Allocations profiler,然后单击 Launch Configuration for Heap Allocations 下的记录引用计数。
那么当遇到问题时,您将能够看到分配历史记录,并且一个版本将不会配对,并且已从您的源代码文件之一发布。
【讨论】:
以上是关于尝试修复崩溃:QuartzCore - CA::release_objects(X::List<void const*>*)的主要内容,如果未能解决你的问题,请参考以下文章