Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Здесь 15.11.05 12:15 Число просмотров: 2693
Автор: amirul <Serge> Статус: The Elderman
|
> 1. Что-то во в этом роде я пробовал ...
> struct sigaction saUser; > void UserSignal (int signum) { trow; } // здесь в разных > комбинациях
> memset (&saUser,0,sizeof(saUser)); > saUser.sa_handler=&UserSignal; > sigaction (11,&saUser,NULL); > > Но как восстановить (продолжить) работу приложения после > перехвата 11 (SIGSEGV ) сигнала - у меня оно все время все > равно погибает ?
Здесь
http://gcc.gnu.org/ml/gcc/1999-01n/msg00342.html
говорят, что лучшее, что можно сделать - это сделать дополнительный поток для кидания exception-ов и засинхронизировать его каким либо образом с потоком обработки сигнала (предлагают поллить, но как по мне, то лучше event-ы)
У меня есть мысль, что можно все сделать на основе setjmp/longjmp, только нужно быть ОЧЕНЬ осторожным с локальными переменными (посмотреть в отладчике правильно ли раскручивается стек после throw-а из кода, в который перешли по longjmp).
> 2. Вы случайно отладкой многопотокового приложения не > занимались ? Отладкой с помощью gdb ?
Многопотокового - было, gdb - нет. Я виндовозник, а под виндой gdb существенно проигрывает микрософтовскому отладчику.
|
|
|