From ac8b96db2b5b5a178ca74fc32c86b0c8e5bee4cb Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Thu, 24 Sep 2009 19:45:12 +0200 Subject: [PATCH] We can only wait for the signals that have been blocked, not for SIGUSR1, SIGUSR2, etc. --- src/c/unixint.d | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/c/unixint.d b/src/c/unixint.d index d9b73d6ce..622e85593 100644 --- a/src/c/unixint.d +++ b/src/c/unixint.d @@ -851,7 +851,6 @@ asynchronous_signal_servicing_thread() * signals, but this can not be done for SIGFPE, SIGSEGV, etc */ pthread_sigmask(SIG_SETMASK, NULL, &handled_set); - sigfillset(&handled_set); CL_CATCH_ALL_BEGIN(ecl_process_env()) { for (;;) { /* Waiting may fail! */ @@ -1026,6 +1025,10 @@ install_process_interrupt_handler() signal); } mysignal(signal, non_evil_signal_handler); +#ifdef HAVE_SIGROCMASK + sigdelset(cl_core.default_sigmask, signal); + pthread_sigmask(SIG_SETMASK, cl_core.default_sigmask, NULL); +#endif } #endif }