Date: Tue, 5 Feb 2002 13:06:23 +1100 (EST) From: callum.gibson@db.com To: hackers@freebsd.org Subject: pthread_sigmask problem Message-ID: <20020205020623.75168.qmail@merton.aus.deuba.com>
next in thread | raw e-mail | index | archive | help
Hi all, I have an application which attempts to block all signals using pthread_sigmask(). I'm aware that this only works on the current thread, however this call occurs before any other threads are created and so should be inherited. I call it as follows: sigset_t signalSet; (void)sigfillset(&signalSet); (void)pthread_sigmask(SIG_BLOCK, &signalSet, NULL); However, it seems that signals such as SIGPIPE, SIGINT, etc will still kill the process. I also tried replacing the pthread_sigmask call with sigprocmask to see if it made any difference, which it didn't. The only other relevant info I can think of, is that I start up another thread specifically for catching SIGTERM, thusly: (void)sigemptyset(&signalSet); (void)sigaddset(&signalSet, SIGTERM); if (sigwait(&signalSet, &signo) < 0 || signo != SIGTERM) /* some error handling */; /* shutdown cleanly */ etc. This part still works as expected. Additionally, I have the same code working under Solaris threads (not pthreads on Solaris) fine, the only relevant change being the call thr_sigsetmask instead of pthread_sigmask. The same behaviour is exhibited on 4.3-RELEASE and 4.4-RELEASE. Any ideas on what is wrong? regards, Callum (c)2002 Callum Gibson callum.gibson@db.com Global Markets IT, Deutsche Bank, Australia 61 2 9258 1620 ### The opinions in this message are mine and not Deutsche's ### To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020205020623.75168.qmail>