iPhone Absturz stack-trace VS Crash-Bericht

Nur einige Zeit... auf einen Absturz, ohne es zu verstehen. Das ist ein Klassiker:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000010

Das führt mich zu einem Speicher-Problem, die auf die ungültige Adresse 0x10

Was mich stört ist, dass mir die crash-Bericht und stack-trace, der sich unterscheiden:


Die crash-Bericht, gesendet durch den Benutzer (symbolicated erfolgreich, dass das passiert) :

Thread 0 Crashed:
0   libobjc.A.dylib                 0x000027d8 objc_msgSend + 16
1   UIKit                           0x0005e9d2 -[UIViewAnimationState animationDidStop:finished:] + 54
2   QuartzCore                      0x0002d8c2 run_animation_callbacks(double, void*) + 286
3   QuartzCore                      0x0002d764 CA::timer_callback(__CFRunLoopTimer*, void*) + 116
4   CoreFoundation                  0x000567f4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 8
5   CoreFoundation                  0x000562a6 __CFRunLoopDoTimer + 854
6   CoreFoundation                  0x0002779e __CFRunLoopRun + 1082
7   CoreFoundation                  0x00027270 CFRunLoopRunSpecific + 224
8   CoreFoundation                  0x00027178 CFRunLoopRunInMode + 52
9   GraphicsServices                0x000045ec GSEventRunModal + 108
10  GraphicsServices                0x00004698 GSEventRun + 56
11  UIKit                           0x0000411c -[UIApplication _run] + 396
12  UIKit                           0x00002128 UIApplicationMain + 664
13  MyApp                           0x00003158 main (main.m:13)
14  MyApp                           0x00003120 0x1000 + 8480

Der crash-stack-trace (heute live von einem Exception-Handler)

0   MyApp                               0x000d79c3 0x0 + 883139
1   MyApp                               0x000d790b 0x0 + 882955
2   libSystem.B.dylib                   0x302765d3 _sigtramp + 42
3   UIKit                               0x31eab9d9 -[UIViewAnimationState animationDidStop:finished:] + 60
4   QuartzCore                          0x33a178c9 _ZL23run_animation_callbacksdPv + 292
5   QuartzCore                          0x33a1776b _ZN2CAL14timer_callbackEP16__CFRunLoopTimerPv + 122
6   CoreFoundation                      0x3084e7fb __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14
7   CoreFoundation                      0x3084e2ad __CFRunLoopDoTimer + 860
8   CoreFoundation                      0x3081f7a5 __CFRunLoopRun + 1088
9   CoreFoundation                      0x3081f277 CFRunLoopRunSpecific + 230
10  CoreFoundation                      0x3081f17f CFRunLoopRunInMode + 58
11  GraphicsServices                    0x31e445f3 GSEventRunModal + 114
12  GraphicsServices                    0x31e4469f GSEventRun + 62
13  UIKit                               0x31e51123 -[UIApplication _run] + 402
14  UIKit                               0x31e4f12f UIApplicationMain + 670
15  MyApp                               0x0000315f 0x0 + 12639
16  MyApp                               0x00003128 0x0 + 12584

Beide unterscheiden sich, und die stack-trace-Punkte, um den Absturz in meinem code, aber Adressen kann ich weder symbolicate noch identifizieren. Ich denke die crash-Bericht gibt an, dass eine Nachricht gesendet wurde, auf eine freigegebene Instanz... Wahrscheinlich im Zusammenhang mit der Nutzung von :

+ (void)setAnimationDelegate:(id)delegate
+ (void)setAnimationDidStopSelector:(SEL)selector

Also hier (endlich!) meine Fragen:

  1. Was erklärt die Unterschiede zwischen den logs? (libobjc.Ein vs-libSystem.B ??)
  2. Hat der SIGBUS stammt aus meinem code oder von UIKit?
  3. Wie kann ich entziffern, der stack-trace der oberen Adressen (0x000d79??, die atos nicht behoben)
  4. Ist, dass das, was ich denke, ein Problem mit einer animation scheitern zu Ende? ähnlich wie diese > Wie unset Delegierten auf UIView setAnimationDelegate: anrufen?
  5. AFAIK setAnimationDelegate soll beibehalten delegieren... Jemand bestätigen?

BEARBEITEN: ich kann nicht mit NSZombiesEnabled ist dies ein crash-Bericht aus einem veröffentlichten app einen Absturz, dass ich es nicht geschafft zu reproduzieren Entwicklungsumgebung. Ich habe nur diese Protokolle, um zu diagnostizieren.

Schreibe einen Kommentar