web-dev-qa-db-ja.com

0x0000000000000000のKERN_INVALID_ADDRESS

Xcode6.3.2を使用してiPadアプリケーションを開発しました。クラッシュのために却下されたレビューのためにアプリケーションをAppStoreに送信しました。以下は、iTunesからのクラッシュレポートです。

Incident Identifier: 88DD7F94-3382-4241-A0D7-C3E7F6D20737
CrashReporter Key:   9881ae0cc3b3fbfccfd0ce1496d2fa08fec08782
Hardware Model:      xxx

Path:                /private/var/mobile/Containers/Bundle/Application/FDBBD67F-0EF7-43FB-80CB-8308A10A2D29/Vehicle Visuals.app/Vehicle Visuals
Identifier:          com.vehiclevisuals.Vehicle-Visuals
Version:             2.0.0 (1.1.0)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2015-06-12 12:33:57.988 -0700
Launch Time:         2015-06-12 12:22:14.581 -0700
OS Version:          iOS 8.3 (12F69)
Report Version:      105

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.Apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x0000000195da7bdc 0x195d8c000 + 113628
1   QuartzCore                      0x00000001889fdc2c 0x1889ec000 + 72748
2   Vehicle Visuals                 0x0000000100126828 0x1000ec000 + 239656
3   Vehicle Visuals                 0x0000000100101e80 0x1000ec000 + 89728
4   UIKit                           0x0000000189118778 0x1890a4000 + 477048
5   UIKit                           0x0000000189116750 0x1890a4000 + 468816
6   UIKit                           0x0000000189112000 0x1890a4000 + 450560
7   UIKit                           0x00000001890b175c 0x1890a4000 + 55132
8   QuartzCore                      0x00000001889f9e18 0x1889ec000 + 56856
9   QuartzCore                      0x00000001889f4880 0x1889ec000 + 34944
10  QuartzCore                      0x00000001889f4724 0x1889ec000 + 34596
11  QuartzCore                      0x00000001889f3eb8 0x1889ec000 + 32440
12  QuartzCore                      0x00000001889f3c38 0x1889ec000 + 31800
13  UIKit                           0x0000000189137f8c 0x1890a4000 + 606092
14  UIKit                           0x0000000189137ef0 0x1890a4000 + 605936
15  CoreFoundation                  0x000000018462c2a0 0x18454c000 + 918176
16  CoreFoundation                  0x000000018462922c 0x18454c000 + 905772
17  CoreFoundation                  0x000000018462955c 0x18454c000 + 906588
18  CoreFoundation                  0x00000001845552d0 0x18454c000 + 37584
19  GraphicsServices                0x000000018dc436f8 0x18dc38000 + 46840
20  UIKit                           0x000000018911afa8 0x1890a4000 + 487336
21  Vehicle Visuals                 0x000000010013a1cc 0x1000ec000 + 319948
22  libdyld.dylib                   0x0000000196412a04 0x196410000 + 10756

Thread 1 name:  Dispatch queue: com.Apple.libdispatch-manager

レポートによると、OSバージョン:iOS 8.3(12F69)でクラッシュします。同じ構成(iOSバージョン8.3(12F69))のすべてのシミュレーター(iPad Air、iPad 2、iPad Retina)でアプリをテストし、iOSバージョン8.3(12F69)のデバイス(iPad mini)でもテストしましたが、私の側で墜落しませんでした。しかし、同じiOSバージョンの友人のiPad Airでクラッシュします(以下のように、異なる無効なアドレスで同じクラッシュレポートが表示されます)

例外タイプ:EXC_BAD_ACCESS(SIGSEGV)例外サブタイプ:0x0000000000000020のKERN_INVALID_ADDRESSスレッドによってトリガー:0

デバイスを使用してデバッグできるように、iPadAirを持っていません。

また、次のコマンドを使用して、シンボリッククラッシュレポートを作成しようとしました。

xcrun atos -o VehicleVisuals 0x0000000000000020

しかし、それは私に次の16進コードを与えるだけです。

0x00000020(VehicleVisuals内)

私は象徴のために リンク をフォローしています。

クラッシュの問題が実際にどこにあるのかを認識できません。誰か助けてくれませんか?

9
Mahesh

EXC_BAD_ACCESSは通常、無効なメモリアドレスにObj-Cメッセージを送信しているために発生します。これは、割り当てが解除されたオブジェクトにアクセスしようとしている可能性があることを意味します。

このオブジェクトは同時にリリースされていないため、他のデバイスで動作している可能性があります。

最近、deallocでタイマーが無効になっておらず、ターゲットメソッドが呼び出されたときに、そのオブジェクトが存在しなくなったために、同様のクラッシュが発生しました。

NSZombieオブジェクトを有効にして、割り当てが解除されているオブジェクトが見つかるかどうかを確認できます。 xCode 6では、[製品]> [スキーム]> [スキームの編集]> [診断]> [ゾンビオブジェクトの有効化]で有効にできます。

また、NSZombieEnabledが検出できないこれらの種類のエラーがたくさんあります。残念ながら、それを解決する魔法は何もありません。 2番目のオプションは、機器を使用してアプリを実行し(特にメモリリーク)、何かを取得できるかどうかを確認することです。これが機能しない場合は、コードを確認して、割り当て解除されたオブジェクトにアクセスしようとしている可能性がないことを確認する必要があります。それが役に立てば幸い。

幸運を!

5
Gemma del Olmo