VectorKit MapKit堆栈溢出崩溃

时间:2014-12-29 16:49:31

标签: ios objective-c crash ios8 mapkit

我们在基于iOS的应用程序中看到一个奇怪的崩溃,我无法弄清楚。基本上在某些方面,以下代码行反复重复,在崩溃日志中重复超过100次:

6   VectorKit                      0x000000019050c6f8 __86-[VKMapCameraController _animateToPosition:pitch:yaw:duration:timingCurve:completion:]_block_invoke347 + 40
7   VectorKit                      0x0000000190485a30 -[VKAnimation _stopAnimation:] + 140
8   VectorKit                      0x0000000190488b20 -[VKMapCameraController setYaw:animated:] + 100
9   MapKit                         0x000000018540263c -[MKMapView snapToNorth:] + 148
在最后致电之前

0   CoreFoundation                 0x0000000183251e38 _CFArrayReplaceValues + 152
1   CoreFoundation                 0x000000018332876c __CFRepositionTimerInMode + 108
2   CoreFoundation                 0x000000018332876c __CFRepositionTimerInMode + 108
3   CoreFoundation                 0x0000000183272630 CFRunLoopTimerSetNextFireDate + 580
4   MapKit                         0x00000001853e8588 -[MKMapView _didChangeRegionMidstream:] + 196
5   MapKit                         0x0000000185404e90 -[MKMapView mapLayer:didChangeRegionAnimated:] + 60

其中_CGArrayReplaceValues在0x000000016fccbef0错误时与EXC_BAD_ACCESS KERN_PROTECTION_FAILURE崩溃。

我想指出我们从不直接调用此崩溃报告中的任何方法,实际上VectorKit是完全私有的Apple框架。我们在app远程相关的唯一事情是调用基本的setRegion:animated:方法,通常是在用户点击注释到所述注释的中心之后。值得指出的是,这仅发生在iOS 8上。没有报告过单个iOS 7崩溃。

以下是完整崩溃报告的链接:http://crashes.to/s/f09eb96c753

感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

尝试启用 NSZombieEnabled 。启用后,当对象达到保留计数0时,不会被解除分配,而是将其自身变为 NSZombie 实例。当僵尸收到消息时,它将记录警告而不是以不可预测的方式崩溃或表现。

说实话,我不确定为什么这只会在iOS 8而不是iOS 7上崩溃,但 EXC_BAD_ACCESS 信号是将无效指针传递给系统调用的结果,所以你可能会在某处取消引用空指针。

如果上述NSZombieEnabled没有发现问题,请尝试使用静态分析器