自从我们的应用程序的上次更新发布以来,许多用户开始抱怨该应用程序不再启动。我们收到了来自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
[...]
同一位用户发送给我的视频表明,在介绍动画开始之前,应用程序甚至崩溃。因此,在应用程序实际运行之前(或者我们的应用运行的第一行代码之一)。
在ARMv6 / 7架构中,R7寄存器保存帧指针。它应该指向前一个堆栈帧,但在我们的例子中是0x00000000。实际上很多寄存器都是null。有什么可能导致这种情况?
此外,崩溃非常一致;它会在敲击图标的一秒钟内每次崩溃。至少对于这个特定的用户。我们有更多但不太具体的应用报道,而不是开始#34;。重新安装该应用程序可以解决用户遇到的任何问题。
控制台日志也没有显示出来,只有这样:
它开始听起来非常像通过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
技术部门也不知道如何处理这个问题,但建议我们不要在没有任何代码更改的情况下上传新的二进制文件。没有办法测试问题是否消失(wtf),如果它不起作用,它将使用户更加烦恼。
仍在等待我的错误报告的答案......
答案 0 :(得分: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目前由于飓风桑迪而下降......