eliminar - desvincular iphone de icloud
¿Cuál es la diferencia entre KERN_INVALID_ADDRESS y KERN_PROTECTION_FAILURE? (1)
¿Cuál es la diferencia entre KERN_INVALID_ADDRESS
y KERN_PROTECTION_FAILURE
en iPhone OS?
Tengo dos informes de fallos de un probador beta ad hoc que están separados por 5 minutos y la principal diferencia entre ellos (aparte de la sección "Imágenes binarias:") es esta sección:
Reportar un:
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008
Informe B:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x67696c69
Por lo que vale, ambos tienen este rastro:
Thread 0 Crashed:
0 libobjc.A.dylib 0x30011940 objc_msgSend + 20
1 UIKit 0x30940174 -[UIWindow _shouldAutorotateToInterfaceOrientation:] + 60
2 UIKit 0x30a223d8 -[UIWindow _updateToInterfaceOrientation:duration:force:] + 36
3 UIKit 0x30958638 -[UIWindow _updateInterfaceOrientationFromDeviceOrientation] + 112
4 UIKit 0x30942514 -[UIWindow _handleDeviceOrientationChange:] + 72
5 Foundation 0x3054dc7a _nsnote_callback + 178
6 CoreFoundation 0x3024ea52 _CFXNotificationPostNotification + 298
7 Foundation 0x3054b854 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
8 UIKit 0x309414a4 -[UIDevice setOrientation:] + 124
9 UIKit 0x30938330 -[UIApplication handleEvent:withNewEvent:] + 5232
10 UIKit 0x30936ce8 -[UIApplication sendEvent:] + 60
11 UIKit 0x30936874 _UIApplicationHandleEvent + 4336
12 GraphicsServices 0x32046964 PurpleEventCallback + 1028
13 CoreFoundation 0x30254a70 CFRunLoopRunSpecific + 2296
14 CoreFoundation 0x30254164 CFRunLoopRunInMode + 44
15 GraphicsServices 0x3204529c GSEventRunModal + 188
16 UIKit 0x308f0374 -[UIApplication _run] + 552
17 UIKit 0x308eea8c UIApplicationMain + 960
18 MyApp 0x00015e24 0x1000 + 85540
19 MyApp 0x0000f138 0x1000 + 57656
Además, no implemento el método "shouldAutorotateToInterfaceOrientation:" en ningún lugar de mi código.
EXC_BAD_ACCESS (SIGBUS) KERN_PROTECTION_FAILURE
significa que la dirección virtual es obviamente incorrecta: la mayoría de las CPU deben acceder a la memoria en un determinado límite de bytes. Debido a que su acceso a los datos aquí está alineado para un valor de 64 bits (8), debe estar intentando ejecutar una instrucción que obtiene un valor de 128 bits (como la instrucción de comparación e intercambio CMPXCHG16B
). En cualquier caso, puedes ver en el ejemplo aquí que es 0x00000008
, lo que probablemente significa que estás accediendo a un elemento de estructura que está compensado con 8 bytes desde el principio, pero tu puntero de estructura es NULL
.
EXC_BAD_ACCESS (SIGSEGV) KERN_INVALID_ADDRESS
significa que la dirección virtual a la que hace EXC_BAD_ACCESS (SIGSEGV) KERN_INVALID_ADDRESS
no está en las tablas de páginas o no tiene acceso. Es una dirección virtual a la que no puedes acceder. Para su dirección de ejemplo, dirección 0x67696c69
, es probable que esto no sea un puntero que se haya tratado como un puntero; o su estructura de datos que contiene el puntero se liberó y se sobrescribió con otros datos.
Para su ejemplo KERN_INVALID_ADDRESS
, los datos del puntero deletrean ASCII ''ilig'' (porque es poco endian). Por lo tanto, la memoria donde se almacenó el puntero probablemente se sobrescribió con algún tipo de cadena.
En ambos casos, es probable que algo sobrescribiera las estructuras de datos en su UIWindow
.