Разматывается ли стек при возникновении сигнала SIGABRT?

Разматывается ли стек (запускаются деструкторы), когда SIGABRT возникает в C++?

Спасибо.


person WilliamKF    schedule 10.12.2009    source источник


Ответы (4)


Этот ответ указывает, что деструкторы не вызываются.

person Bill Zeller    schedule 10.12.2009

Нет, раскручивание стека вызывают только исключения. Сигналы являются частью POSIX, который является C API, поэтому он не «осведомлен» о возможностях C++, таких как исключения.

person Wyzard    schedule 10.12.2009

На справочной странице signal(3) на моем компьютере с Mac OS X написано

  No    Name         Default Action       Description
...
 6     SIGABRT      create core image    abort program (formerly SIGIOT)

что подсказывает мне, что по умолчанию не раскручиваться...

person dmckee --- ex-moderator kitten    schedule 10.12.2009

сигнал SIGABRT используется для создания основного файла работающего приложения некоторое время. Мы некоторое время используем этот сигнал для отладки приложения. И насколько я знаю, деструкторы по этому сигналу не вызываются.

person Vivek    schedule 10.12.2009