Esta publicación explica cómo analizar el mensaje de error de segmento en el archivo de mensajes e identificar el problema en el lado de la aplicación o del sistema operativo.
¿Qué es la "falta de segmentación"?
Una falla de segmentación (a menudo abreviada como segfault) o violación de acceso es una falla provocada por el hardware con protección de memoria, para notificar al sistema operativo (SO) sobre una violación de acceso a la memoria. El kernel de Linux responderá realizando alguna acción correctiva, generalmente pasando la falla al proceso infractor enviando al proceso una señal como #11. En algunos casos, los procesos pueden instalar un controlador de señales personalizado, lo que les permite recuperarse por sí mismos, pero de lo contrario se utiliza el controlador de señales predeterminado de Linux. La falla de segmento generalmente hará que el proceso finalice y genere un volcado del núcleo con la configuración adecuada de ulimit.
¿Cómo verificar?
1. Indicar defecto de segmento
Una falla de segmento generalmente solo significa un error en un proceso o programa en particular. No significa un error del Kernel de Linux. El kernel simplemente detecta el error del proceso o programa y (en algunas arquitecturas) imprime la información en el registro como se muestra a continuación:
09
2. ¿Qué significa detalles de este mensaje?
El valor RIP es el valor de registro del puntero de instrucción, el RSP es el valor de registro del puntero de pila. El valor de error es una máscara de bits de bits de código de error de error de página (de arch/x86/mm/fault.c):
19
Aquí está la definición del bit de error:
26
El código de error 15 es de 1111 bits. Finalmente, podemos conocer el significado de 1111 de la siguiente manera:
30
Este mensaje indica que la aplicación activa una falla de protección porque ese proceso intentó escribir el acceso a una sección reservada de la memoria en modo de usuario.