У меня есть тестовая программа для части библиотеки C, где я обрабатываю сигналы. В этой тестовой программе много кода - настолько, что я чувствую, что публикация здесь будет затруднять ответ на мой вопрос.SIGSEGV отправлен дважды - программа аварийных ситуаций после обработки
В основном то, что происходит, заключается в том, что я заставляю систему отправлять мне SIGSEGV внутри фонового потока. Я обрабатываю этот сигнал, а затем тест закончен. Основной поток будет ждать этого, а часть обработчика сигнала - перезапустить основной поток. Когда основной поток перезагружается Я восстанавливаю обработчик сигнала по умолчаниюsignal(SIGSEGV, SIG_DFL)
, а затем получаю другой SIGSEGV.
Я понимаю, что у меня много кода, и это вполне может быть моей ошибкой, но есть ли общее объяснение того, почему SIGSEGV будет стрелять дважды? Этого не происходит, когда я вызываю другие сигналы (хотя я их не пробовал).
Чтобы уточнить, что я на OS X, пишу на C, компилируя с gcc.