- SIGBUS
-
SIGBUS Описание: Сигнал ошибки шины По умолчанию: завершение с дампом памяти коды SA_SIGINFO (не имеет специфических кодов) В POSIX-системах, SIGBUS — сигнал, сигнализирующий об ошибке шины, при обращении к физической памяти.
SIGBUS
— целочисленная константа, определённая в заголовочном файлеsignal.h
. Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.Этимология
SIG — общий префикс сигналов (от англ. signal), BUS — англ. bus — шина данных (или адресная шина).
Использование
Процесс может получить SIGBUS при неправильном обращении к памяти:
- Неправильное выравнивание данных
- При попытке обращения не удовлетворяющей правилам выравнивания принятым на применяемом процессоре.
- Обращение к несуществующей физической памяти
- Обращение к адресам, для которых на компьютере не установлено памяти. Исключение аналогично ошибке сегментации, но в применении к физическим, а не виртуальным адресам.
- Аппаратная ошибка специфичная объекту
- Более редкий случай, например в Solaris такой сигнал возникает, когда страницы виртуальной памяти перестают быть доступны, из-за проблем доступа к объекту, который на них отображён (например, когда отображённый с помощью
mmap()
файл был впоследствии урезан [1] (англ.)).
Операционная система может предоставить дополнительные данные о возникшей ошибке, используя стек сигнала (англ. signal stack), который может помочь разработчику в отладке данной ошибки.
По умолчанию, процесс аварийно завершается с генерацией дампа памяти (и/или другой операции зависящей от платформы), который можно использовать для получения информации об условиях возникновения исключения.
SIGBUS может быть перехвачен или проигнорирован. Однако игнорирование SIGBUS, в некоторых случаях, может привести к непредсказуемым результатам. Примером программы, перехватывающей SIGBUS, может служить отладчик, который способен проанализировать стек и информировать разработчика на каком этапе произошла ошибка.
Сигналы POSIX SIGABRT | SIGALRM | SIGFPE | SIGHUP | SIGILL | SIGINT | SIGKILL | SIGPIPE | SIGQUIT | SIGSEGV | SIGTERM | SIGUSR1 | SIGUSR2 | SIGCHLD | SIGCONT | SIGSTOP | SIGTSTP | SIGTTIN | SIGTTOU | SIGBUS | SIGPOLL | SIGPROF | SIGSYS | SIGTRAP | SIGURG | SIGVTALRM | SIGXCPU | SIGXFSZ | Сигналы реального времени (определяемые пользователем) — SIGRTMIN — SIGRTMAX.
Некоторые сигналы не включенные в POSIX и синонимы SIGIOT | SIGEMT | SIGSTKFLT | SIGIO | SIGCLD | SIGPWR (SIGINFO) | SIGLOST | SIGWINCH | SIGUNUSED Категория:- Сигналы POSIX
Wikimedia Foundation. 2010.