Ответ 1
Переполнение стека может привести к нескольким различным аппаратным ошибкам.
- Это может привести к попытке получить доступ к памяти, для которой у программы нет соответствующих разрешений → ядро поднимет сигнал
SIGSEGV
(нарушение сегментации) для процесса. - Это может привести к попытке выполнить незаконную инструкцию (например: вы перезаписали обратный адрес, чтобы указать на неверную инструкцию) → ядро поднимет сигнал
SIGILL
(незаконная команда). - Возможно, SIGBUS на некоторых платформах (например, исключение выравнивания).
Все эти ошибки возникают после. Опция заключается в добавлении защиты (ProPolice,...), чтобы перехватить переполнение стека, прежде чем они вызовут более серьезные проблемы.
Edit:
Вы имеете в виду "реальное переполнение стека". Ну, этот случай покрывается SEGV (пытается получить доступ к памяти, для которой процесс не имеет разрешений), поэтому он получает SEGV, а не специальный корпус для каждого отдельного случая более общего SEGV.