On May 18, 2009, at 5:32 PM, Peter Steele wrote:
No, I'm not sending a signal within a signal. The signal handler is this:


pthread_mutex_lock(&keep_running_mutex);
KEEP_RUNNING = 0;
pthread_cond_signal(&keep_running_cond);
pthread_mutex_unlock(&keep_running_mutex);

This works fine, but at some point it seems to stop working. The app just continues to run as if it never received the -2 signal. We have to use a kill -9 to kill it, which we want to avoid because this prevents our shutdown code from executing.

The pthread_* calls you are making aren't listed as being safe to run within the context of a signal handler, and could cause a thread waiting on that condition to be unblocked and start running. Please see earlier comments about mixing threads and signal handlers.

--
-Chuck

_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to