brian       97/01/24 13:06:37

  Modified:    src       http_main.c
  Log:
  Reviewed by:  Brian Behlendorf, Randy Terbush, Roy T. Fielding
  Submitted by: [EMAIL PROTECTED], Adrian Filipi-Martin <[EMAIL PROTECTED]>
  
  > Adrian Filipi-Martin <[EMAIL PROTECTED]> writes:
  > When starting httpd or restarting it with a SIGHUP, the following is logged
  > to the error_log:
  >
  > [Wed Jan  8 14:21:03 1997] created shared memory segment #4206
  > [Wed Jan  8 14:21:03 1997] sigaction(SIGSEGV): Invalid argument
  > [Wed Jan  8 14:21:03 1997] sigaction(SIGBUS): Invalid argument
  > [Wed Jan  8 14:21:03 1997] Server configured -- resuming normal operations
  >
  > (Note that the shared memory segment message is only present when the daemon
  > is send a SIGHUP signal to restart it.)
  >
  > These error messages do not appear to have any real effect upon the 
operation
  > of the server.  I expect they would not matter until it has either a bus or
  > a segment fault.
  >
  > In any case, I looked at the source with gdb and the fact that a sigaction
  > structure is not initialized completely in http_main.c seems to be the 
culprit.
  > In any case a small patch is included below that does the required clearing 
of
  > the sigaction structure and fixes the problem
  
  Revision  Changes    Path
  1.110     +1 -1      apache/src/http_main.c
  
  Index: http_main.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_main.c,v
  retrieving revision 1.109
  retrieving revision 1.110
  diff -C3 -r1.109 -r1.110
  *** http_main.c       1997/01/24 02:49:57     1.109
  --- http_main.c       1997/01/24 21:06:33     1.110
  ***************
  *** 1303,1308 ****
  --- 1303,1309 ----
    {
    #ifndef NO_USE_SIGACTION
        struct sigaction sa;
  +     memset(&sa,0,sizeof sa);
    
        if (!one_process) {
        sa.sa_handler = (void (*)())seg_fault;
  ***************
  *** 1314,1320 ****
        }
        /* USE WITH EXTREME CAUTION. Graceful restarts are known to break */
        /*  problems will be dealt with in a future release */
  -     memset(&sa,0,sizeof sa);
        sa.sa_handler=(void (*)())sig_term;
        if(sigaction(SIGTERM,&sa,NULL) < 0)
        log_unixerr("sigaction(SIGTERM)", NULL, NULL, server_conf);
  --- 1315,1320 ----
  
  
  

Reply via email to