SIGSEGV
SIGSEGV (от и ) — сигнал, используемый в POSIX-системах, посылаемый процессу при ошибках сегментации — отказах страниц и других попытках обращения к несуществующей области памяти или при обращениях с нарушением прав доступа.

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

В большинстве систем применяется техника подкачки страниц, когда память отображается в адресное пространство процесса страницами размером 4 КБ — 1 ГБ (в зависимости от аппаратной платформы и текущего режима работы процессора), по мере необходимости — по мере выделения памяти процессом. Страницы, в которые ещё ничего не отображено, а также «вытесненные» в процессе свопинга виртуальной памяти, или связанные с ещё незагруженными частями отображённого файла), вызывают отказ страницы. Обрабатывая страничное нарушение для «вытесненной» страницы памяти или незагруженной части файла, операционная система обеспечивает наличие страницы, вызывавшей нарушение (например, подгружая её с накопителя), при возврате к выполнению процесса (и с «вытеснением» другой страницы, если это необходимо). Если же в странице адресного пространства ранее ничего отображено не было, то операционная система посылает процессу сигнал SIGSEGV, чтобы прекратить его выполнение.

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

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

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

SIGSEGV может быть перехвачен или проигнорирован. Однако игнорирование SIGSEGV, в некоторых случаях, может привести к непредсказуемым результатам.

Примером программы, перехватывающей SIGSEGV, может служить отладчик, который способен проанализировать стек и информировать разработчика, на каком этапе произошла ошибка.
Q1412443
сигнал
Concept
Q14658
POSIX
Concept
Q1062340
ошибках сегментации
Concept
Q1928607
отказах страниц
Concept
Q1172314
прав доступа
Concept
Q656083
подкачки страниц
Concept
Q656083
свопинг
Concept
Q19423
переполнении буфера
Concept
Q759899
стеке
Concept
Q193231
отладчик
Concept
Q2996037
SIGSEGV
MISC
Q2996037
SIGSEGV
MISC
Q2996037
SIGSEGV
MISC
Q2996037
SIGSEGV
MISC
Q2996037
SIGSEGV
MISC
Q2996037
SIGSEGV
MISC
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+4^^http://www.w3.org/2001/XMLSchema#decimal
4
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
instance of
has cause