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