Interested Article - SIGBUS

В POSIX -системах, SIGBUS сигнал , сигнализирующий об ошибке шины, при обращении к физической памяти.

SIGBUS — целочисленная константа, определённая в заголовочном файле signal.h . Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.

Этимология

SIG — общий префикс сигналов (от англ. signal ), BUS англ. bus шина данных (или адресная шина).

Использование

Процесс может получить SIGBUS при неправильном обращении к памяти:

Неправильное выравнивание данных
При попытке обращения, не удовлетворяющей правилам выравнивания, принятым на применяемом процессоре.
Обращение к несуществующей физической памяти
Обращение к адресам, для которых на компьютере не установлено памяти. Исключение аналогично ошибке сегментации, но в применении к физическим, а не виртуальным адресам.
Аппаратная ошибка специфичная объекту
Более редкий случай, например в Solaris такой сигнал возникает, когда страницы виртуальной памяти перестают быть доступны, из-за проблем доступа к объекту, который на них отображён (например, когда отображённый с помощью mmap () файл был впоследствии урезан от 16 июля 2010 на Wayback Machine (англ.) ).

Операционная система может предоставить дополнительные данные о возникшей ошибке, используя стек сигнала ( англ. signal stack ), который может помочь разработчику в отладке данной ошибки.

По умолчанию, процесс аварийно завершается с генерацией дампа памяти (и/или другой операции зависящей от платформы), который можно использовать для получения информации об условиях возникновения исключения.

SIGBUS может быть перехвачен или проигнорирован. Однако игнорирование SIGBUS, в некоторых случаях, может привести к непредсказуемым результатам. Примером программы, перехватывающей SIGBUS, может служить отладчик , который способен проанализировать стек и информировать разработчика на каком этапе произошла ошибка.

Источник —

Same as SIGBUS