From your notes, it looks like you properly built in the changes. I'll update the bugzilla entry with your report of failure on Tru64. The code will be fixed before long. And thanks for trying it out.
You may wish to look over the latest comments to the PR at
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21737
Take care,
Jeff
Richard Jackson wrote:
Jeff Trawick,
I applied and tested the patch you checked in 9/2/2003
diff -c alloc.c.20030904 alloc.c.20030904a *** alloc.c.20030904 Thu Sep 4 12:10:42 2003 --- alloc.c.20030904a Thu Sep 4 12:12:37 2003 *************** *** 3096,3107 **** if ((p->kill_how == kill_after_timeout) || (p->kill_how == kill_only_once)) { /* Subprocess may be dead already. Only need the timeout if not. */ ! if (ap_os_kill(p->pid, SIGTERM) == -1) { p->kill_how = kill_never; ! } ! else { need_timeout = 1; - } } else if (p->kill_how == kill_always) { kill(p->pid, SIGKILL); --- 3096,3105 ---- if ((p->kill_how == kill_after_timeout) || (p->kill_how == kill_only_once)) { /* Subprocess may be dead already. Only need the timeout if not. */ ! if ( (ap_os_kill(p->pid, SIGTERM) == -1) && (errno == ESRCH) ) p->kill_how = kill_never; ! else need_timeout = 1; } else if (p->kill_how == kill_always) { kill(p->pid, SIGKILL);
Still left defunct processes on our Tru64 UNIX 5.1A system. I assume after changing the alloc.c file, performing a make and copy httpd into place is sufficient...
. cd /usr/local/src/apache_1.3.28 . cp -p src/main/alloc.c src/main/alloc.c.20030904 . modify src/main/alloc.c . make >& make.log2 & . strip src/httpd . cp -p src/httpd /usr/local/apache/bin/httpd.new . cd /usr/local/apache/bin . (mv httpd httpd.20030904;mv httpd.new httpd) . /sbin/init.d/https-apache stop . /sbin/init.d/https-apache start
Since the above patch did not work, I tried the patch suggested by Ralf Engelschall, http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=105952652425849&w=2
diff -c alloc.c.20030904 alloc.c *** alloc.c.20030904 Thu Sep 4 12:10:42 2003 --- alloc.c Thu Sep 4 14:22:35 2003 *************** *** 3096,3107 **** if ((p->kill_how == kill_after_timeout) || (p->kill_how == kill_only_once)) { /* Subprocess may be dead already. Only need the timeout if not. */ ! if (ap_os_kill(p->pid, SIGTERM) == -1) { ! p->kill_how = kill_never; ! } ! else { ! need_timeout = 1; ! } } else if (p->kill_how == kill_always) { kill(p->pid, SIGKILL); --- 3096,3103 ---- if ((p->kill_how == kill_after_timeout) || (p->kill_how == kill_only_once)) { /* Subprocess may be dead already. Only need the timeout if not. */ ! ap_os_kill(p->pid, SIGTERM); ! need_timeout = 1; } else if (p->kill_how == kill_always) { kill(p->pid, SIGKILL);
Since I have been using Ralf's patch, I have not had a single defunct process.