iOS崩溃日志,回溯不可用

概要

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

我们的应用程序不会在每个设备上崩溃,但是当它在一秒钟内点击图标(video显示以及朋友的电话)时,每次都会崩溃。

崩溃日志是非常奇怪的,因为它不包含回溯和框架指针(R7)是0x00000000。 对于这个更新,我们没有太大的改变,没有任何改变可以像这样破坏堆栈。 此外,重新安装应用程序可以解决问题。 这导致我们相信这个错误不在我们的代码中,而是在可能已经被破坏的二进制文件中。

细节

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

我们的应用程序从iOS获得控制权后,此崩溃似乎就会发生(请参阅更新)。 但是,崩溃日志不包含回溯,并指出在未知线程上发生错误。 我试图用符号表示日志,但显然没有任何象征意义。

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

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 [...] 

更新

同一用户发送给我的video指示应用程序甚至介绍animation开始之前崩溃。 所以在应用程序实际运行之前(或者我们的应用程序运行的第一行代码之一)。

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

另外,崩溃是非常一致的; 它在每次点击图标的时候都会崩溃。 至less对于这个特定的用户。 我们已经有了更多,但不太具体的应用“不开始”的报道。 重新安装应用程序可以修复用户遇到的任何问题。

控制台日志不会显示太多,只是这个:

这听起来非常像通过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技术服务更新

我已经发布了一个错误报告,他们要求一个崩溃时间的控制台日志。 我已经提供了一个,这对我的理解并不包含太多的用途。 除:

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

技术部门也不知道如何处理这个问题,但是build议我们不要在没有任何代码改变的情况下上传新的二进制文件。 没有办法testing问题是否消失(跆拳道),如果它不起作用,会更加恼火的用户。

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

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

等待大约一周后,我们今天收到了Tech Support的以下电子邮件:

你好,

我想告诉您,针对导致安装应用更新的客户崩溃问题的补丁。

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

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

请让我知道,如果您没有看到您的应用程序的更新,或者安装更新后仍然看到崩溃。

如果您担心由于此问题而收到您的应用程序的任何评论,请直接联系店铺团队http://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wa/jumpTo?page=contactUs&contactfaq=customerreviewremovalrequest和参考券号码%5B我的号码%5D&#x3002;

我们与安装了应用程序崩溃版本的朋友进行了检查。 他确认他下载了更新,并解决了这个问题。 苹果公司创造的更新目前还没有出现在iTunes Connect中,但它显然起作用。

我对苹果提供的服务感到满意。 事情偶尔会出错我猜,即使是苹果的神也会犯错。 太糟糕了,我们的用户并不总是那么宽容(尽pipe大部分是)。 看来苹果公司甚至为我们删除了所有的1星评价,没有问。 目前我们无法检查,因为AppFigures目前因桑迪飓风而瘫痪。