c++ objective-c c signals

c++ - ¿Qué significa SEGV_ACCERR?



objective-c signals (2)

Estoy examinando algunos fallos que todos tienen la señal SIGSEGV con la razón SEGV_ACCERR. Después de buscar SEGV_ACCERR, lo más cercano que he encontrado a una explicación legible para los humanos es: Permisos no válidos para objetos

¿Qué significa esto en un sentido más general? ¿Cuándo surgiría un SEGV_ACCERR? ¿Hay más documentación específica sobre este motivo?


Este es un error que casi siempre he visto en dispositivos iOS de 64 bits y puede ocurrir si varios subprocesos leen y cambian una variable en ARC. Por ejemplo, solucioné un bloqueo hoy en el que varios subprocesos en segundo plano estaban leyendo y usando una variable estática NSDate y NSString y actualizándolas sin hacer ningún tipo de bloqueo o puesta en cola.

El uso de objetos de datos centrales en varios subprocesos también puede causar este bloqueo, como he visto muchas veces en mis registros de bloqueo.

También uso Crittercism, y este bloqueo en particular fue un SEGV_ACCERR que solo afectó a dispositivos de 64 bits.


He visto esto en los casos en que el código intenta ejecutarse desde lugares que no sean "texto".

Por ejemplo, si su puntero está apuntando a una función en montón o pila e intenta ejecutar ese código (desde montón o pila), la CPU lanza esta excepción.