Похоже, что когда сигналы BSD преобразуются в выданные исключения, они работают только в первый раз, но не в последующие.
Я пытался преобразовать сигналы в исключение с помощью следующего вызова, который я сделал в методе main перед вызовом NSApplicationMain
:
[[NSExceptionHandler defaultExceptionHandler] setExceptionHandlingMask:NSHandleUncaughtSystemExceptionMask];
Это работает в первый раз, когда signal
произошло. Но во второй раз поток просто зависает, но все же позволяет другим потокам работать. Есть ли способ, которым я могу сделать это каждый раз?
Кстати, я проверил это, имея кнопку, которая вызывает нарушение SIGSEGV
, записав в адрес ноль:
char* p = NULL;
*p = 'x';
Я хочу, чтобы каждый раз вызывалось исключение - точно так же, как в NullPointerException
в Java. Но в настоящее время он работает только при первом запуске, а затем поток зависает.