You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by gr...@apache.org on 2003/05/15 22:28:18 UTC

cvs commit: httpd-2.0/server mpm_common.c

gregames    2003/05/15 13:28:18

  Modified:    .        Tag: APACHE_2_0_BRANCH CHANGES STATUS configure.in
               include  Tag: APACHE_2_0_BRANCH mpm_common.h
               os/unix  Tag: APACHE_2_0_BRANCH unixd.c
               server   Tag: APACHE_2_0_BRANCH mpm_common.c
  Log:
  backport the following change from 2.1:
      Enable coredumps on Linux 2.4+ if CoreDumpDirectory is coded
  
  I tried to clarify the doc, but it still looks like geek-speak.  Any ideas
  on how to better explain this to users would be appreciated.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.988.2.99 +4 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.988.2.98
  retrieving revision 1.988.2.99
  diff -u -r1.988.2.98 -r1.988.2.99
  --- CHANGES	15 May 2003 00:50:43 -0000	1.988.2.98
  +++ CHANGES	15 May 2003 20:28:16 -0000	1.988.2.99
  @@ -1,5 +1,9 @@
   Changes with Apache 2.0.46
   
  +  *) Linux 2.4+: If Apache is started as root and you code 
  +     CoreDumpDirectory, coredumps are enabled via the prctl() syscall.
  +     [Greg Ames]
  +
     *) ap_get_mime_headers_core: allocate space for the trailing null
        when folding is in effect.
        PR 18170 [Peter Mayne <Pe...@SPAM_SUX.ap.spherion.com>]
  
  
  
  1.751.2.281 +1 -14     httpd-2.0/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/STATUS,v
  retrieving revision 1.751.2.280
  retrieving revision 1.751.2.281
  diff -u -r1.751.2.280 -r1.751.2.281
  --- STATUS	15 May 2003 18:08:38 -0000	1.751.2.280
  +++ STATUS	15 May 2003 20:28:16 -0000	1.751.2.281
  @@ -187,19 +187,6 @@
                  (above) will look at this independently
         DELETE ME when the SSLC 2.3 compatibility entry above is removed
   
  -    * Enable coredumps on Linux 2.4+ if CoreDumpDirectory is coded
  -      os/unix/unixd.c                 r1.57
  -      configure.in                    r1.245   
  -      docs/manual/mod/mpm_common.xml  r1.23
  -      include/mpm_common.h            r1.41
  -      server/mpm_common.c             r1.104
  -      +1: gregames, trawick, jim, nd
  -      (trawick volunteers to regenerate/commit/site-update the html
  -      corresponding to mpm_common.xml if that isn't something you're
  -      comfortable with doing)
  -      (the docs should explain the thing better. Currently it's not
  -       really understandable for users. If nobody else does, nd tries to.)
  -
       * Ensure that ssl-std.conf is generated at configure time, and switch
         to using the expanded config variables to work the same as 
         httpd-std.conf PR: 19611
  
  
  
  1.232.2.8 +2 -0      httpd-2.0/configure.in
  
  Index: configure.in
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/configure.in,v
  retrieving revision 1.232.2.7
  retrieving revision 1.232.2.8
  diff -u -r1.232.2.7 -r1.232.2.8
  --- configure.in	13 May 2003 16:30:01 -0000	1.232.2.7
  +++ configure.in	15 May 2003 20:28:17 -0000	1.232.2.8
  @@ -275,6 +275,7 @@
   pwd.h \
   grp.h \
   strings.h \
  +sys/prctl.h \
   sys/processor.h \
   sys/sem.h
   )
  @@ -296,6 +297,7 @@
   getgrnam \
   initgroups \
   bindprocessor \
  +prctl \
   timegm \
   )
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.39.2.4  +1 -0      httpd-2.0/include/mpm_common.h
  
  Index: mpm_common.h
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/include/mpm_common.h,v
  retrieving revision 1.39.2.3
  retrieving revision 1.39.2.4
  diff -u -r1.39.2.3 -r1.39.2.4
  --- mpm_common.h	17 Apr 2003 20:26:33 -0000	1.39.2.3
  +++ mpm_common.h	15 May 2003 20:28:18 -0000	1.39.2.4
  @@ -276,6 +276,7 @@
    */
   #ifdef AP_MPM_WANT_SET_COREDUMPDIR
   extern char ap_coredump_dir[MAX_STRING_LEN];
  +extern int ap_coredumpdir_configured;
   const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy,
                                      const char *arg);
   #endif
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.55.2.2  +15 -0     httpd-2.0/os/unix/unixd.c
  
  Index: unixd.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/os/unix/unixd.c,v
  retrieving revision 1.55.2.1
  retrieving revision 1.55.2.2
  diff -u -r1.55.2.1 -r1.55.2.2
  --- unixd.c	3 Feb 2003 17:31:58 -0000	1.55.2.1
  +++ unixd.c	15 May 2003 20:28:18 -0000	1.55.2.2
  @@ -89,6 +89,9 @@
   #ifdef HAVE_SYS_SEM_H
   #include <sys/sem.h>
   #endif
  +#ifdef HAVE_SYS_PRCTL_H
  +#include <sys/prctl.h>
  +#endif
   
   unixd_config_rec unixd_config;
   
  @@ -181,6 +184,18 @@
                       (long) unixd_config.user_id);
   	return -1;
       }
  +#if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE) 
  +    /* this applies to Linux 2.4+ */
  +#ifdef AP_MPM_WANT_SET_COREDUMPDIR
  +    if (ap_coredumpdir_configured) {
  +        if (prctl(PR_SET_DUMPABLE, 1)) {
  +            ap_log_error(APLOG_MARK, APLOG_ALERT, errno, NULL,
  +                         "set dumpable failed - this child will not coredump"
  +                         " after software errors");
  +        }
  +    }
  +#endif
  +#endif
   #endif
       return 0;
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.102.2.4 +2 -0      httpd-2.0/server/mpm_common.c
  
  Index: mpm_common.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/server/mpm_common.c,v
  retrieving revision 1.102.2.3
  retrieving revision 1.102.2.4
  diff -u -r1.102.2.3 -r1.102.2.4
  --- mpm_common.c	17 Apr 2003 20:26:33 -0000	1.102.2.3
  +++ mpm_common.c	15 May 2003 20:28:18 -0000	1.102.2.4
  @@ -634,6 +634,7 @@
   
   #ifdef AP_MPM_WANT_SET_COREDUMPDIR
   char ap_coredump_dir[MAX_STRING_LEN];
  +int ap_coredumpdir_configured;
   
   const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy,
                                      const char *arg)
  @@ -660,6 +661,7 @@
                              " is not a directory", NULL);
       }
       apr_cpystrn(ap_coredump_dir, fname, sizeof(ap_coredump_dir));
  +    ap_coredumpdir_configured = 1;
       return NULL;
   }
   #endif