iOSアプリ クラッシュレポート よく見かける Excepition

EXC_BAD_ACCESS (SIGSEGV)

発生原因

  • リリース済みメモリーにアクセス
  • 存在しないObjectにアクセス

特徴

  • Exception Subtype にKERN_INVALID_ADDRESSがくる

発生アドレスとPCを比較する

  • 同じなら – 命令の fetch エラー
  • 異なる – 参照先エラー

EXC_BAD_ACCESS (SIGBUS)

発生原因

  • read-only メモリーに書き込み

特徴

  • Exception Subtype に KERN_PROTECTION_FAILURE がくる

発生アドレスとPCを比較する

  • 同じなら – 命令のfetchエラー(メソッド名)
  • 異なる – 参照先エラー

EXC_CRASH (SIGABRT)

発生原因

  • Objective-C の Exception が発生したが Catch されなかった

特徴

  • 他の thread を確認する必要がある。
  • Last Exception Backtrace が表示される場合がある。

EXC_BREAKPOINT (SIGTRAP)

発生原因

  • 非 Optional Type に nil が入ってくる
  • forced unwrapping 失敗

特徴

  • まずはデバッガーに制御を渡すができない場合はクラッシュ

EXC_BAD_INSTRUCTION (SIGILL)

発生原因

  • CPU が不正な命令(UD2)を実行 UD2:この命令自体には意味がない

特徴

  • 過程を調べる必要がある
  • Frame の中を調査する

SIGKILL

発生原因

  • iOS から強制終了
  • Termination Reason に詳細
Code 備考
0x8badf00d watchdog のタイムアウト(メインスレッドがブロックされてる場合など)
0xbad22222 VoIP アプリが頻繁に最下位
0xc00010cc 発熱により OS がアプリを強制終了
0xdead10cc アプリが suspend 状態(バックグラウンド)になり、ロックされたファイル、SQLite の DB に対し操作をすると発生
0x2bad45sec 画面がロックされた状態で描画をするなど、セキュリティ違反

参考サイト