You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Steve VanDevender <st...@darkwing.uoregon.edu> on 1998/07/14 20:31:07 UTC

config/2612: apachectl does not check if `cat httpd.pid` is an httpd process

>Number:         2612
>Category:       config
>Synopsis:       apachectl does not check if `cat httpd.pid` is an httpd process
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    apache
>State:          open
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Tue Jul 14 11:40:00 PDT 1998
>Last-Modified:
>Originator:     stevev@darkwing.uoregon.edu
>Organization:
apache
>Release:        
>Environment:
Solaris 2.6 with recommended patches current to July 1998
SunOS darkwing 5.6 Generic_105181-06 sun4d sparc
>Description:
We discovered during our most recent reboot that Apache 1.3.0 did not start
at boot because a process existed that was not the master HTTPD process but
which had the same PID as in the existing httpd.pid file.
>How-To-Repeat:
Boot without auto-starting Apache.  Somehow create a process with the same PID
as the Apache HTTPD that was running before the reboot.  Run "apachectl start".
>Fix:
The patch appended below modifies the 'grep' in the apachectl script so that it
matches "$PID.*httpd" instead of just "$PID"; this prevents apachectl from
falsely recognizing a different process as the master httpd.  (Line numbers
differ from the distributed apachectl because of further local customizations
to our installed apachectl script.)

@@ -49,7 +53,7 @@
     # check for pidfile
     if [ -f $PIDFILE ] ; then
        PID=`cat $PIDFILE`
-       PS=`ps -p $PID 2>/dev/null | tail -1 | grep $PID`
+       PS=`ps -p $PID 2>/dev/null | tail -1 | grep "$PID.*httpd"`
        if [ "x$PS" = "x" ]; then
            STATUS="httpd (pid $PID?) not running"
            RUNNING=0
>Audit-Trail:
>Unformatted:
[In order for any reply to be added to the PR database, ]
[you need to include <ap...@Apache.Org> in the Cc line ]
[and leave the subject line UNCHANGED.  This is not done]
[automatically because of the potential for mail loops. ]