Флаг SA_RESETHAND в sigaction не работает для быстрых исключенийC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Флаг SA_RESETHAND в sigaction не работает для быстрых исключений

Сообщение Anonymous »

У меня есть кадр обработки исключений для приложения Xcode в macOS, который содержит код Cpp и Swift. Я использую фрейм сигналов Unix для обработки исключений с помощью sigaction. Мой обработчик сигнала sigaction вызывается при возникновении исключения Swift или Cpp. Однако в некоторых исключениях, таких как SIGSEGV, обработчик сигнала вызывается повторно. Чтобы справиться с этим, я использую флаг SA_RESETHAND, чтобы обработчик вызывался только один раз, а затем действие по умолчанию для сигнала выполнялось для завершения процесса.
Этот подход хорошо работает, когда исключение возникает из-за кода Cpp, однако, когда оно происходит из-за кода Swift, обработчик сигнала все равно вызывается повторно. Может кто-нибудь объяснить, почему это происходит и какое решение этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/783 ... exceptions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»