SIGBUS

SIGBUS
Descripción Señal de error de bus
Defecto terminar con un volcado de memoria
Códigos SA_SIGINFO
No tiene códigos específicos.

En los sistemas POSIX , SIGBUS  es una señal de error de bus al acceder a la memoria física.

SIGBUS es una constante entera definida en el archivo de cabecera signal.h. Los nombres simbólicos de las señales se utilizan en lugar de los números, ya que los números de las señales pueden diferir en diferentes implementaciones.

Etimología

SIG : prefijo de señal  común (de la señal en inglés  ), BUS  : inglés. bus  - bus de datos (o bus de direcciones).  

Uso

Un proceso puede obtener SIGBUS si se accede incorrectamente a la memoria:

Desalineación de datos Intento de acceso que no cumple con las reglas de alineación adoptadas en el procesador en uso. Acceso a memoria física inexistente Acceder a direcciones para las que no hay memoria instalada en el ordenador. Una excepción es similar a una falla de segmentación, pero se aplica a direcciones físicas en lugar de direcciones virtuales. Error de hardware específico del objeto Un caso más raro, por ejemplo en Solaris , tal señal ocurre cuando las páginas de la memoria virtual ya no están disponibles, debido a problemas para acceder al objeto que está asignado a ellas (por ejemplo, cuando un mmap()archivo asignado se truncó posteriormente [1] Archivado el 16 de julio de 2010 en Wayback Machine  .

El sistema operativo puede proporcionar información adicional sobre el error mediante la pila de señales  , lo que puede ayudar al desarrollador a depurar el error.

De forma predeterminada, el proceso se bloquea con un volcado de memoria (y/u otra operación específica de la plataforma) que se puede utilizar para obtener información sobre las condiciones en las que se produjo la excepción.

SIGBUS puede ser interceptado o ignorado. Sin embargo, ignorar SIGBUS puede, en algunos casos, conducir a resultados impredecibles. Un ejemplo de un programa que intercepta SIGBUS es un depurador que puede analizar la pila e informar al desarrollador en qué etapa ocurrió el error.