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