Date: Tue, 27 Jun 2000 14:30:17 -0700 (PDT) From: Jason Evans <jasone@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/lib/libc_r/uthread pthread_private.h uthread_init.c uthread_sigwait.c Message-ID: <200006272130.OAA69550@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
jasone 2000/06/27 14:30:17 PDT
Modified files:
lib/libc_r/uthread pthread_private.h uthread_init.c
uthread_sigwait.c
Log:
If multiple threads are blocked in sigwait() for the same signal that does
not have a user-supplied signal handler, when a signal is delivered, one
thread will receive the signal, and then the code reverts to having no
signal handler for the signal. This can leave the other sigwait()ing
threads stranded permanently if the signal is later ignored, or can result
in process termination when the process should have delivered the signal to
one of the threads in sigwait().
To fix this problem, maintain a count of sigwait()ers for each signal that
has no default signal handler. Use the count to correctly install/uninstall
dummy signal handlers.
Reviewed by: deischen
Revision Changes Path
1.42 +8 -1 src/lib/libc_r/uthread/pthread_private.h
1.24 +4 -1 src/lib/libc_r/uthread/uthread_init.c
1.14 +28 -5 src/lib/libc_r/uthread/uthread_sigwait.c
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006272130.OAA69550>
