概要
アプリの最後のアップデートがリリースされて以来、多くのユーザーがアプリが起動しなくなったことについて不満を漏らし始めました。2人の異なるユーザーからクラッシュログとコンソールログ、およびクラッシュからのビデオを受け取りました。
私たちのアプリはすべてのデバイスでクラッシュするわけではありませんが、クラッシュすると、アイコンをタップしてから1秒以内に毎回クラッシュします(ビデオにはこれと友人の電話が表示されます)。
クラッシュログは非常に奇妙です。バックトレースが含まれておらず、フレームポインタ(R7)が0x00000000であるためです。このアップデートではあまり変更を加えていません。変更したものがないため、このようにスタックが破損する可能性があります。さらに、アプリを再インストールすると問題が修正されます。これにより、エラーはコードではなく、どこかで破損した可能性のあるバイナリにあると思われます。
詳細
一部のユーザーによると、前回の更新以降、起動時にアプリがクラッシュします。この問題を再現することはできませんが、1人のユーザーからクラッシュログを受け取りました。ログはユーザーのハードドライブ(〜/ 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
[...]
アップデート
同じユーザーから送られてきたビデオは、イントロアニメーションが開始する前でもアプリがクラッシュすることを示しています。したがって、アプリが実際に実行される前(またはアプリが実行されるコードの最初の行の1つ)。
ARMv6 / 7アーキテクチャでは、R7レジスタがフレームポインタを保持します。前のスタックフレームを指している必要がありますが、この場合は0x00000000です。多くのレジスタは実際にはnullです。何が原因でしょうか?
また、クラッシュは非常に一貫しています。アイコンをタップしてから1秒以内に毎回クラッシュします。少なくともこの特定のユーザーにとっては。アプリが「起動しない」という報告は、より多くありますが、具体的ではありません。アプリを再インストールすると、ユーザーが抱えていた問題が修正されます。
コンソールログにも多くは表示されません。これだけです。
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のテクニカルサービスにリクエストを送信しました。ここに報告します。
アップルテクニカルサービスアップデート
バグレポートを投稿しましたが、クラッシュ時のコンソールログを要求されました。私はそれらに1つを提供しましたが、私の理解ではあまり使用されていません。それ外:
2012-10-23 09:14:18 +0000 backboardd Application 'UIKitApplication:com.company.myapp[0xdd31]' exited abnormally with signal 11: Segmentation fault: 11
技術部門もこの問題について何をすべきかわかりませんが、コードを変更せずに新しいバイナリをアップロードしないようにアドバイスしました。問題がなくなるかどうかをテストする方法はありません(wtf)。それが機能しない場合は、ユーザーをさらに混乱させます。
まだ私のバグレポートへの回答を待っています...