2011-06-09 27 views
12

¿Cómo se puede resolver una KERN_PROTECTION_FAILURE y una KERN_INVALID ADDRESS? Ambos parecen suceder exactamente en el mismo lugar cuando ejecuto mi aplicación.¿Cómo resolver KERN_PROTECTION_FAILURE y KERN_INVALID_ADDRESS?

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0x6d783f44 
Crashed Thread: 2 

Thread 2 Crashed: 
0 libobjc.A.dylib     0x34a80464 objc_msgSend + 16 
1 Foundation      0x31171dda __+[__NSOperationInternal _observeValueForKeyPath:ofObject:changeKind:oldValue:newValue:indexes:context:]_block_invoke_7 + 10 
2 libSystem.B.dylib    0x30dd9678 _dispatch_call_block_and_release + 12 
3 libSystem.B.dylib    0x30dd9b98 _dispatch_worker_thread2 + 120 
4 libSystem.B.dylib    0x30d7e24a _pthread_wqthread + 258 
5 libSystem.B.dylib    0x30d76970 start_wqthread + 0 

Y:

Exception Type: EXC_BAD_ACCESS (SIGBUS) 
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000011 
Crashed Thread: 7 

Thread 7 Crashed: 
0 libobjc.A.dylib     0x34a80464 objc_msgSend + 16 
1 Foundation      0x31171dfc -[NSOperation completionBlock] + 16 
2 Foundation      0x31171dda __+[__NSOperationInternal _observeValueForKeyPath:ofObject:changeKind:oldValue:newValue:indexes:context:]_block_invoke_7 + 10 
3 libSystem.B.dylib    0x30dd9678 _dispatch_call_block_and_release + 12 
4 libSystem.B.dylib    0x30dd9b98 _dispatch_worker_thread2 + 120 
5 libSystem.B.dylib    0x30d7e24a _pthread_wqthread + 258 
6 libSystem.B.dylib    0x30d76970 start_wqthread + 0 

Lo extraño es, que se bloquea en un iPad 1 (iOS 4.2.1), pero no en un iPad 2 (iOS 4.3.2). ¿Podría ser un problema con el iPad o con la memoria? ¿O es realmente un error en mi código? Si es así, ¿por qué no puedo reproducirlo en el iPad 2?

+0

Estoy investigando un accidente como este. Tengo algunos miles de usuarios que habrán usado mi nueva versión desde su lanzamiento, y solo recibo 4 personas con un bloqueo repetido en el lanzamiento. TODOS están en iOS 4.2.1 (que es relativamente raro hoy en día, tal vez el 10% de la base de usuarios?), Que también es el caso en su ejemplo. ¿Recuerdas cuál fue la solución para ti? –

+1

Tuve este problema recientemente y este fue el resultado de búsqueda superior, así que lo estoy planteando con la esperanza de que pueda ayudar a otra persona a terminar aquí como yo. Tuve un NSArray de objetos. Repasé todos los objetos en for() loop y luego liberé la matriz (que debería liberar todos los objetos, y en mi caso, desasignarlos). Cuando lancé la matriz, tuve un bloqueo con este error. Resulta que la razón por la que tuve el mismo objeto en la matriz más de una vez, una vez que me aseguré de que cada objeto solo se añadiera una vez a la matriz, este problema desapareció. Espero que ayude a alguien! – Pedro

Respuesta

9

EXC_BAD_ACCESS los errores suelen ser al tratar de enviar un mensaje a un objeto que ha sido desasignado. En este caso, parece ser algo en su NSOperation que ya ha sido lanzado. Esto es casi seguro un error en tu código. En cuanto a por qué ocurre en un iPad y no en el otro, podría ser que en un dispositivo la memoria que solía contener su objeto haya sido reutilizada, pero en el otro todavía tiene un zombi de su objeto.

Una explicación mucho más completa es here.

Cuestiones relacionadas