You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by tr...@apache.org on 2002/08/08 21:14:21 UTC
cvs commit: apr/threadproc/unix signals.c
trawick 2002/08/08 12:14:19
Modified: . CHANGES
threadproc/unix signals.c
Log:
In apr_signal_thread() remove synchronous signals from the mask
passed to sigwait(). It is never valid for them to be there.
Some platforms silently ignore them, some return EINVAL, some
don't process it as desired.
One problem was found with an old Apache 2.0.30 build on AIX.
sig_coredump() wasn't getting called when a plug-in generated SIGABRT.
Removing SIGABRT from the signal mask passed to sigwait() by the
main worker thread fixed the problem. After reviewing sigwait()
documentation it was clear that none of the synchronous signals
should be in the mask passed to sigwait().
Revision Changes Path
1.317 +5 -0 apr/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apr/CHANGES,v
retrieving revision 1.316
retrieving revision 1.317
diff -u -r1.316 -r1.317
--- CHANGES 3 Aug 2002 20:58:55 -0000 1.316
+++ CHANGES 8 Aug 2002 19:14:17 -0000 1.317
@@ -1,5 +1,10 @@
Changes with APR b1
+ *) In apr_signal_thread() remove synchronous signals from the mask
+ passed to sigwait(). It is never valid for them to be there.
+ Some platforms silently ignore them, some return EINVAL, some
+ don't process it as desired. [Jeff Trawick]
+
*) Change config.nice generation to always expand variables.
[Justin Erenkrantz]
1.51 +3 -0 apr/threadproc/unix/signals.c
Index: signals.c
===================================================================
RCS file: /home/cvs/apr/threadproc/unix/signals.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- signals.c 23 Jul 2002 21:14:59 -0000 1.50
+++ signals.c 8 Aug 2002 19:14:19 -0000 1.51
@@ -374,6 +374,9 @@
sigdelset(&sig_mask, SIGWAITING);
#endif
+ /* no synchronous signals should be in the mask passed to sigwait() */
+ remove_sync_sigs(&sig_mask);
+
/* On AIX (4.3.3, at least), sigwait() won't wake up if the high-
* order bit of the second word of flags is turned on. sigdelset()
* returns an error when trying to turn this off, so we'll turn it