Interpretación iPhone Crash Entrar / Seguimiento de la pila

votos
4

Estoy usando el SDK TestFlight y he recibido varios informes de fallos idéntica a ésta. Sin embargo, estoy teniendo problemas para entender, y lo que la causa subyacente de la crisis es de los informes?

Exception

SIGSEGV
2 libsystem_c.dylib 0x32862e92 _sigtramp + 42
3 Foundation 0x33750d1c -[NSError dealloc] + 60...

Exception reason

SIGSEGV

Stacktrace

0 MyAppName 0x0013faba testflight_backtrace + 382
1 MyAppName 0x00140708 TFSignalHandler + 264
2 libsystem_c.dylib 0x32862e92 _sigtramp + 42
3 Foundation 0x33750d1c -[NSError dealloc] + 60
4 libobjc.A.dylib 0x39230488 _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 168
5 CoreFoundation 0x31de9440 _CFAutoreleasePoolPop + 16
6 Foundation 0x33751f7a -[NSAutoreleasePool drain] + 122
7 CoreData 0x35e0a4b2 -[NSManagedObjectContext save:] + 1210
8 MyAppName 0x000b7168 MR_swapMethodsFromClass + 18076
9 CoreData 0x35e0dbc0 developerSubmittedBlockToNSManagedObjectContextPerform + 88
10 libdispatch.dylib 0x335974b6 _dispatch_client_callout + 22
11 libdispatch.dylib 0x33598dca _dispatch_main_queue_callback_4CF$VARIANT$up + 226
12 CoreFoundation 0x31e79f3a __CFRunLoopRun + 1290
13 CoreFoundation 0x31decebc CFRunLoopRunSpecific + 356
14 CoreFoundation 0x31decd48 CFRunLoopRunInMode + 104
15 GraphicsServices 0x36e092ea GSEventRunModal + 74
16 UIKit 0x320db2f8 UIApplicationMain + 1120
17 MyAppName 0x00099122 main (main.m:17)
18 MyAppName 0x000990d7 start + 39

Detalles adicionales:

  • Los usuarios informan de este accidente ocurre 1-2 segundos después de la aplicación se inicia
  • La aplicación utiliza Core de datos y MagicalRecord (que es donde el método MR_swapMethodsFromClass viene)
  • No puedo reproducir este problema en los dispositivos de prueba cuando se ejecuta desde Xcode (iPhone 3GS, iPhone 4 o iPhone 5) que se ejecuta varias versiones iOS (iOS 5.1, 6.0, 6.1)

EDITAR

Sigue trabajando en la solución de este problema ... He sido capaz de volver a crearlo (pero no con un depurador asociado).

Aquí está la más extraña parcialmente: si un usuario tiene una versión anterior de la aplicación y se instala una actualización (distribuido a través de la prueba de vuelo), consiguen este error.

Sin embargo, si primero borrar la aplicación antigua e instalar la actualización, no se produce el error.

Publicado el 24/05/2013 a las 21:17
por usuario
En otros idiomas...                            


2 respuestas

votos
14

Vamos a caminar a través de él:

0 MyAppName 0x0013faba testflight_backtrace + 382
1 MyAppName 0x00140708 TFSignalHandler + 264

Eso es TestFlight. Esto es después de que el accidente ha sucedido, por lo que ciertamente no es la causa.

2 libsystem_c.dylib 0x32862e92 _sigtramp + 42

Este es el punto en el que cogimos el accidente. "Sigtramp" es la "cama elástica." Señal Esa es una forma elegante de decir "Cogí una señal (caída) y ahora voy a despedir a algún otro sitio en el código."

3 Foundation 0x33750d1c -[NSError dealloc] + 60

Ah. Esto es importante. Nos colamos mientras desasignar una NSError. Eso significa que el NSErrorse sobre-liberados o bajo-retenida.

4 libobjc.A.dylib 0x39230488 _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 168
5 CoreFoundation 0x31de9440 _CFAutoreleasePoolPop + 16
6 Foundation 0x33751f7a -[NSAutoreleasePool drain] + 122

Triste ... se manifiesta mientras drena la piscina autorelease. Eso significa que el error real podría ser un largo camino desde aquí. Pero al menos sabemos que el tipo de objeto. NSZombies podrían ser de utilidad para tratar de encontrar el objeto específico.

7 CoreData 0x35e0a4b2 -[NSManagedObjectContext save:] + 1210

Y la piscina autorelease estaba drenando durante una MOC guardar. Eso sugiere que probablemente relacionada con su código de datos básicos. Es por lo menos donde te verías en primer lugar.

Las cosas a tener en cuenta son:

  • El error es casi seguro que en el código.
  • Si no está en su código, es probable que en la mágica Registro
  • No asuma que está en la base de datos. Ese es el lugar menos probable para el error dado esta pila.

Aquí está la más extraña parcialmente: si un usuario tiene una versión anterior de la aplicación y se instala una actualización (distribuido a través de la prueba de vuelo), consiguen este error.

Sin embargo, si primero borrar la aplicación antigua e instalar la actualización, no se produce el error.

Es probable que en el código de actualización a continuación. Lo más probable en la materia de migración de datos básicos. Auditar todos los usos de NSErroren esa zona del código. Eliminar todas las advertencias del compilador y el analizador. Y tratar NSZombies si es reproducible.

Respondida el 05/06/2013 a las 00:38
fuente por usuario

votos
0

Usted debe tratar de añadir una versión de modelo para el modelo de datos. Se trabajó para mí, tuve un problema similar relacionada mágico-Record.

Respondida el 07/06/2013 a las 09:43
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more