Преобразование сигнала в NSException работает только в первый раз - PullRequest
1 голос
/ 26 июля 2010

Похоже, что когда сигналы BSD преобразуются в выданные исключения, они работают только в первый раз, но не в последующие.

Я пытался преобразовать сигналы в исключение с помощью следующего вызова, который я сделал в методе main перед вызовом NSApplicationMain:

[[NSExceptionHandler defaultExceptionHandler] setExceptionHandlingMask:NSHandleUncaughtSystemExceptionMask];

Это работает в первый раз, когда signal произошло. Но во второй раз поток просто зависает, но все же позволяет другим потокам работать. Есть ли способ, которым я могу сделать это каждый раз?

Кстати, я проверил это, имея кнопку, которая вызывает нарушение SIGSEGV, записав в адрес ноль:

char* p = NULL;
*p = 'x';

Я хочу, чтобы каждый раз вызывалось исключение - точно так же, как в NullPointerException в Java. Но в настоящее время он работает только при первом запуске, а затем поток зависает.

...