iOS崩溃日志,回溯不可用 总结

iOS崩溃日志,回溯不可用 总结,ios,crash,Ios,Crash,自从我们的应用程序的上一次更新发布以来,许多用户开始抱怨应用程序不再启动。我们收到了来自两个不同用户的崩溃日志和控制台日志,以及来自崩溃的视频 我们的应用程序不会在每台设备上崩溃,但当它崩溃时,每次都会在点击图标的一秒钟内崩溃(视频显示了这一点以及朋友的手机) 崩溃日志非常奇怪,因为它不包含回溯,并且帧指针(R7)是0x00000000。我们没有为此更新做太多更改,我们所做的任何更改都不会像这样损坏堆栈。此外,重新安装应用程序解决了这个问题。这让我们相信错误不在我们的代码中,而是在二进制文件中,

自从我们的应用程序的上一次更新发布以来,许多用户开始抱怨应用程序不再启动。我们收到了来自两个不同用户的崩溃日志和控制台日志,以及来自崩溃的视频

我们的应用程序不会在每台设备上崩溃,但当它崩溃时,每次都会在点击图标的一秒钟内崩溃(视频显示了这一点以及朋友的手机)

崩溃日志非常奇怪,因为它不包含回溯,并且帧指针(R7)是0x00000000。我们没有为此更新做太多更改,我们所做的任何更改都不会像这样损坏堆栈。此外,重新安装应用程序解决了这个问题。这让我们相信错误不在我们的代码中,而是在二进制文件中,而二进制文件可能已经在某个地方损坏了

细节 一些用户表示,自上次更新以来,我们的应用程序在启动时崩溃。我们无法重现此问题,但收到了来自其中一个用户的崩溃日志。日志来自用户的硬盘驱动器(~/Library/Logs/CrashReporter/MobileDevice/)。我从一个经历过同样问题的朋友的电话里直接看到了同样的事情

一旦我们的应用程序从iOS接收到控制,就会出现此崩溃(请参阅更新)。但是,崩溃日志不包含回溯,并说明未知线程上发生了错误。我试着用符号来表示原木,但显然没有什么可以用符号来表示

这似乎是某种空指针错误,但为什么没有回溯?什么会导致这种类型的错误?我可以做些什么来重现/解决它

Incident Identifier: 984C8208-F4B4-4325-90B3-C9BE371E1A12
CrashReporter Key:   c512972e5cd00e75d8d7a6ddb59ff9a08946fd7b
Hardware Model:      iPad3,3
Process:         MyApp [3224]
Path:            /var/mobile/Applications/A0AEAA1D-7E5D-4BDC-8C9F-EA5FF4595059/MyApp.app/MyApp
Identifier:      MyApp
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2012-10-18 09:27:06.158 +0200
OS Version:      iOS 6.0 (10A403)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000
Highlighted Thread:  0

Backtrace not available

Unknown thread crashed with ARM Thread State (32-bit):
    r0: 0x000e64e0    r1: 0x7f8940c0      r2: 0x00000000      r3: 0x3c56cb88
    r4: 0x2fd1bd34    r5: 0x00000000      r6: 0x00000000      r7: 0x00000000
    r8: 0x2fd1bd3c    r9: 0x3c5688a8     r10: 0x00000000     r11: 0x00000000
    ip: 0x80000028    sp: 0x2fd1bd40      lr: 0x2fe9a8d7      pc: 0x000e64e0
  cpsr: 0x60000010

Binary Images:
   0xe5000 -   0x170fff +MyApp armv7  <15fd2c3131d03790bcd321411a241390> /var/mobile/Applications/A0AEAA1D-7E5D-4BDC-8C9F-EA5FF4595059/MyApp.app/MyApp
0x2fe96000 - 0x2feb6fff  dyld armv7  <75594988728831d98e1f7c4c7b7ca29d> /usr/lib/dyld
[...]
技术部门也不知道该怎么办,但建议我们不要在没有任何代码更改的情况下上传新的二进制文件。没有办法测试问题是否消失(wtf),如果它不起作用,用户会更加不安


仍在等待我的错误报告的答案…

联系苹果技术支持后,我们被要求提交一份错误报告,描述此问题。我们已经从iTunes上传了崩溃报告、控制台日志、这个版本的Xcode存档和这个版本的IPA文件(应用商店文件)

等待了大约一周后,我们今天收到了来自技术支持部门的以下电子邮件:

你好,

我想让您知道,已经为之前发生的问题制定了解决方案 导致安装应用程序更新的客户崩溃

安装更新后发生崩溃的客户可以 通过在应用商店中再次更新应用来修复此问题。这将 安装应用程序的固定版本

应用商店中应显示应用的更新。更新遗嘱 重新安装应用程序的当前版本,并修复与此相关的任何崩溃 安装错误。应用程序保存的所有数据将不受 更新

如果您没有看到应用程序的更新,请告诉我,或者 安装更新后仍会出现崩溃

如果您对您的应用程序因此收到的任何评论感到担忧 关于此问题,请直接与门店团队联系 和参考票号[我的号码]

我们与一位安装了该应用程序崩溃版本的朋友进行了核实。他确认下载了更新,并修复了问题。苹果公司创建的更新目前还没有出现在iTunes Connect中,但它显然是有效的


我对苹果提供的服务很满意。我想事情偶尔会出错,甚至苹果神也会犯错。遗憾的是,我们的用户并不总是那么宽容(尽管大多数是这样)。似乎苹果甚至在没有要求的情况下为我们删除了所有的1星评论。我们目前无法检查,因为AppFigures目前因飓风桑迪而关闭…

不确定为什么您没有看到回溯,但您肯定存在某种形式的内存问题。你用弧吗?@madmik3我没有用弧。我认为,访问已发布的对象不会导致nil指针0x00000000。我已经检查了为这个版本更改并在启动时执行的代码位,所有这些都不会导致空指针。如果你愿意,我可以发布。我想你已经看过这个问题的答案了:-特别是关于缓冲区溢出的那个。你是如何编写你的介绍动画的?也许这个答案会有所帮助:@Deanwomberne我确实看到了这个问题,但到目前为止可能还没有给予足够的关注。我发现R7被用作帧指针来跟踪上一个堆栈帧。R7的值为0x00000000,这将是一个问题。缓冲区溢出看起来确实是一个合乎逻辑的原因。我好久没换过开场白了。它使用非常简单的核心动画函数为UIImageView的透明度设置动画。我将在我的问题中添加我怀疑的其他代码。
2012-10-23 09:14:18 +0000 backboardd Application 'UIKitApplication:com.company.myapp[0xdd31]' exited abnormally with signal 11: Segmentation fault: 11