iOS崩溃日志,回溯不可用

Jer*_*uma 6 crash ios

摘要

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

我们的应用程序不会在每台设备上崩溃,但是当它发生时,它会在一秒钟内点击图标(视频显示此信息以及朋友的电话)时每次都会崩溃.

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

细节

根据一些用户的说法,我们的应用程序自上次更新后在启动时崩溃.我们无法重现此问题,但收到了一个用户的崩溃日志.日志来自用户的硬盘驱动器(〜/ Library/Logs/CrashReporter/MobileDevice /).我直接从遇到同样问题的朋友的电话中看到了同样的事情.

一旦我们的应用程序从iOS获得控制权,就会发生此崩溃(请参阅更新).但是,崩溃日志不包含回溯,并指出未知线程上发生错误.我试着象征着日志,但显然没有什么可以象征的.

它似乎是某种nullpointer错误,但为什么没有回溯?什么可能导致这种类型的错误,我该怎么做才能重现/解决它?

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
[...]
Run Code Online (Sandbox Code Playgroud)

更新

由同一用户发送给我的视频表明应用程序甚至介绍动画开始之前就崩溃了.因此,在应用程序实际运行之前(或者我们的应用程序运行的第一行代码之一).

在ARMv6/7架构中,R7寄存器保存帧指针.它应该指向前一个堆栈帧,但在我们的例子中是0x00000000.实际上很多寄存器都是null.有什么可能导致这种情况?

此外,崩溃是非常一致的; 它会在每秒钟内点击图标崩溃.至少对于这个特定的用户.我们有更多但不太具体的报道称应用程序"无法启动".重新安装该应用程序可修复用户遇到的任何问题.

控制台日志也没有显示太多,只是这样:

它开始听起来非常像通过App Store更新破坏二进制文件,但仅限于更新:

http://www.pcworld.com/article/258827/updated_apps_crashing_heres_what_you_need_to_know.html

http://www.marco.org/2012/07/04/app-store-corrupt-binaries

我已向Apple的技术服务部门发出请求以帮助解决此问题.我会在这里报告.

Apple技术服务更新

我发布了一个错误报告,他们要求提供崩溃时间的控制台日志.我已经提供了一个,据我所知,它没有太多用处.除了:

2012-10-23 09:14:18 +0000 backboardd Application 'UIKitApplication:com.company.myapp[0xdd31]' exited abnormally with signal 11: Segmentation fault: 11
Run Code Online (Sandbox Code Playgroud)

技术部门也不知道如何处理这个问题,但建议我们不要在没有任何代码更改的情况下上传新的二进制文件.没有办法测试问题是否消失(wtf),如果它不起作用,它将使用户更加沮丧.

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

Jer*_*uma 3

联系 Apple 技术支持后,我们被要求提交一份描述此问题的错误报告。我们已经从 iTunes 上传了该版本的崩溃报告、控制台日志、Xcode 的存档以及该版本的 IPA 文件(App Store 文件)。

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

你好,

我想让您知道,导致安装应用更新的客户崩溃的问题已得到修复。

安装更新后遇到崩溃的客户可以通过在 App Store 中再次更新应用程序来解决问题。这将安装应用程序的固定版本。

您的应用程序的更新应该出现在 App Store 中。更新将重新安装应用程序的当前版本,并修复与错误安装相关的任何崩溃。应用程序保存的所有数据都不会受到更新的影响。

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

如果您对您的应用因此问题而收到的任何评论有疑问,请直接联系商店团队: http://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wa/jumpTo ?page=contactUs&contactfaq=customerreviewremovalrequest 以及参考票号 [我的号码]。

我们咨询了一位安装了该应用程序崩溃版本的朋友。他确认他下载了更新并解决了问题。Apple 创建的更新到目前为止尚未出现在 iTunes Connect 中,但它显然有效。

我对 Apple 提供的服务感到满意。我猜事情偶尔会出错,即使是苹果之神也会犯错误。可惜我们的用户并不总是那么宽容(尽管大多数都是)。看来苹果甚至在没有询问的情况下为我们删除了所有 1 星评论。我们目前无法检查,因为 AppFigures 目前因桑迪飓风而关闭......