Crash Report analysieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Crash Report analysieren

    Hallo zusammen,

    vor ein paar Tagen habe ich euch gefragt wie man am besten an die Crash Reports auf den Geräten von Kunden rankommt. Durch das QuincyKit habe ich diese Reports nun, die helfen mir aber nur wenig weiter. Die App stürzt direkt beim Start ab in einer DrawRect Methode eines OpenSource Pakets welches ich in der App nutze. Leider stürzt die App nur bei einem sehr geringen Teil an Personen ab.

    Geräte der Kunden sind unterschiedlich, iPad 2, 3 und 4. iOS Version ebenso, von 5.1.1 bis 6.1.3 ist so einiges dabei. Auf einem iPad 3 mit der neusten iOS Version stürzt die App bei einem Kunden direkt ab, bei einem anderen nicht. Auf meinen Testgeräten ebenso nicht. Woran kann das liegen? Wieso läuft bei manchen die Methode durch, bei anderen nicht?

    Anbei der Crash Report von einem iPad 2 mit iOS 5.1.1. Ich nutze in dieser App PrettyKit um die Tabellen etwas aufzuhübschen.

    Crash Report:

    CrashReporter Key: [TODO]
    Hardware Model: iPad2,1
    Process: NewApp [16265]
    Path: /Users/USER/NewApp.app/NewApp
    Identifier: com.xxx.App
    Version: 3.0.3
    Code Type: ARM
    Parent Process: launchd [1]

    Date/Time: 2013-04-13 02:42:23 +0000
    OS Version: iPhone OS 5.1.1 (9B206)
    Report Version: 104

    Exception Type: SIGSEGV
    Exception Codes: SEGV_ACCERR at 0x40000008
    Crashed Thread: 0

    Thread 0 Crashed:
    0 libobjc.A.dylib 0x31639f78 0x31636000 + 16248
    1 NewApp 0x00082903 -[PrettyTableViewCellBackground drawRect:] (PrettyTableViewCell.m:317)
    2 UIKit 0x31a30165 0x31a1e000 + 74085
    3 QuartzCore 0x3566f4e5 0x35664000 + 46309
    4 QuartzCore 0x3566eb3f 0x35664000 + 43839
    5 QuartzCore 0x3566e335 0x35664000 + 41781
    6 QuartzCore 0x3566df61 0x35664000 + 40801
    7 QuartzCore 0x3566dea3 0x35664000 + 40611
    8 QuartzCore 0x3566d84b 0x35664000 + 38987
    9 QuartzCore 0x3566d57f 0x35664000 + 38271
    10 QuartzCore 0x356654b9 0x35664000 + 5305
    11 CoreFoundation 0x317c8b1b 0x3173b000 + 580379
    12 CoreFoundation 0x317c6d57 0x3173b000 + 572759
    13 CoreFoundation 0x317c70b1 0x3173b000 + 573617
    14 CoreFoundation 0x3174a4a5 0x3173b000 + 62629
    15 CoreFoundation 0x3174a36d 0x3173b000 + 62317
    16 GraphicsServices 0x32c23439 0x32c1f000 + 17465
    17 UIKit 0x31a4fcd5 0x31a1e000 + 203989
    18 NewApp 0x000788b3 main (main.m:16)

    Thread 1:
    0 libsystem_kernel.dylib 0x3815c3a8 0x3815b000 + 5032
    1 libdispatch.dylib 0x3499ac29 0x34997000 + 15401

    Thread 2:
    0 libsystem_kernel.dylib 0x3816ccd4 0x3815b000 + 72916

    Thread 3:
    0 libsystem_kernel.dylib 0x3816ccd4 0x3815b000 + 72916

    Thread 4:
    0 libsystem_kernel.dylib 0x3815c004 0x3815b000 + 4100
    1 CoreFoundation 0x317c83f3 0x3173b000 + 578547
    2 CoreFoundation 0x317c712b 0x3173b000 + 573739
    3 CoreFoundation 0x3174a4a5 0x3173b000 + 62629
    4 CoreFoundation 0x3174a36d 0x3173b000 + 62317
    5 WebCore 0x31f6aca3 0x31ec1000 + 695459
    6 libsystem_c.dylib 0x33fc0735 0x33fb2000 + 59189

    Thread 5:
    0 libsystem_kernel.dylib 0x3815c004 0x3815b000 + 4100
    1 CoreFoundation 0x317c83f3 0x3173b000 + 578547
    2 CoreFoundation 0x317c712b 0x3173b000 + 573739
    3 CoreFoundation 0x3174a4a5 0x3173b000 + 62629
    4 CoreFoundation 0x3174a36d 0x3173b000 + 62317
    5 Foundation 0x37222bb9 0x37212000 + 68537
    6 Foundation 0x37222a81 0x37212000 + 68225
    7 Foundation 0x372b6591 0x37212000 + 673169
    8 libsystem_c.dylib 0x33fc0735 0x33fb2000 + 59189

    Thread 6:
    0 libsystem_kernel.dylib 0x3816ccd4 0x3815b000 + 72916

    Thread 7:
    0 libsystem_kernel.dylib 0x3816ccd4 0x3815b000 + 72916

    Thread 8:
    0 libsystem_kernel.dylib 0x3816c570 0x3815b000 + 71024
    1 libsystem_c.dylib 0x33fc0735 0x33fb2000 + 59189

    Thread 0 crashed with ARM Thread State:
    r0: 0x0fe1a210 r1: 0x001b8cdf r2: 0x40800000 r3: 0x40800000
    r4: 0x40000000 r5: 0x31e3ea9b r6: 0x40800000 r7: 0x2fe72b78
    r8: 0x43930000 r9: 0x0006e337 r10: 0x40800000 r11: 0x426c0000
    ip: 0x00082a49 sp: 0x2fe72b48 lr: 0x000821e7 pc: 0x31639f78
    cpsr: 0x00000030
  • Du weißt sogar welche Zeile das im Source ist: PrettyTableViewCell.m:317

    Und ein SIGSEGV heißt dass da auf einen illegalen Pointer zugegriffen wird. Wenn da z.B. ein *ptr oder ptr->abc steht, dann finde heraus warum da ein illegaler Pointer ankommt (Speichermanagement?). Evtl. kommt der aus Deinem Code.

    Und wenn es OpenSource ist, dann ist das ja super. Du kannst da noch weitere Tests oder Sicherheitsabfragen einbauen.