You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Anders B�rjeson <an...@ticnet.se> on 1999/12/14 14:49:47 UTC

general/5466: Location: url sent to a MSIE 4. or MSIE 5. Makes all apache server child process die and be restarted

>Number:         5466
>Category:       general
>Synopsis:       Location: url sent to a MSIE 4. or MSIE 5. Makes all apache server child process die and be restarted
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    apache
>State:          open
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Tue Dec 14 05:50:00 PST 1999
>Last-Modified:
>Originator:     anders@ticnet.se
>Organization:
apache
>Release:        1.3.4
>Environment:
Linux "hostname" 2.2.12-20 #1 Mon Sep 27 10:40:35 EDT 1999 i686 unknown
RedHat 6.1 
>Description:
I have a cgi-script that sends the location-verb
"Location: http://name.dom.se/cgi-bin/script.cgi?some_variables"
when the client-browser is a Microsoft Internet Explorer 4. or 5.
Requesting SERVER_PROTOCOL= HTTP/1.1 
all my apache child processes dies, and becomes restarted by the apache-father
process who do not die.

An strace of the father-process looks like this
wait4(-1, 0xbffffd28, WNOHANG, NULL)    = 0
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
time(NULL)                              = 945178042
wait4(-1, 0xbffffd28, WNOHANG, NULL)    = 0
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
time(NULL)                              = 945178043
wait4(-1, 0xbffffd28, WNOHANG, NULL)    = 0
select(0, NULL, NULL, NULL, {1, 0})     = ? ERESTARTNOHAND (To be restarted)
--- SIGCHLD (Child exited) ---
select(0, NULL, NULL, NULL, {0, 280000}) = ? ERESTARTNOHAND (To be restarted)
--- SIGCHLD (Child exited) ---
select(0, NULL, NULL, NULL, {0, 280000}) = ? ERESTARTNOHAND (To be restarted)
--- SIGCHLD (Child exited) ---
select(0, NULL, NULL, NULL, {0, 280000}) = ? ERESTARTNOHAND (To be restarted)
--- SIGCHLD (Child exited) ---
select(0, NULL, NULL, NULL, {0, 280000}) = ? ERESTARTNOHAND (To be restarted)
--- SIGCHLD (Child exited) ---
select(0, NULL, NULL, NULL, {0, 280000}) = ? ERESTARTNOHAND (To be restarted)
--- SIGCHLD (Child exited) ---
select(0, NULL, NULL, NULL, {0, 280000}) = ? ERESTARTNOHAND (To be restarted)
--- SIGCHLD (Child exited) ---
select(0, NULL, NULL, NULL, {0, 270000}) = 0 (Timeout)
time(NULL)                              = 945178044
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 19192
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 19191
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 19190
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 19189
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 19175
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 19174
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 0], WNOHANG, NULL) = 19164
wait4(-1, 0xbffffd28, WNOHANG, NULL)    = -1 ECHILD (No child processes)
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
time(NULL)                              = 945178045
fork()                                  = 28883
wait4(-1, 0xbffffd28, WNOHANG, NULL)    = 0


>How-To-Repeat:
Here are two sampe cgi-scripts that can reproduce the problem.

############## one.cgi
#!/bin/ksh

# disable filename globbing
set -f

echo "Location: http://name.dom.se/cgi-bin/two.cgi?\c"
echo "A=23456789012345678901234567890123456789012345678&\c"
echo "B=23456789012345678901234567890123456789012345678&\c"
echo "C=23456789012345678901234567890123456789012345678&\c"
echo "D=23456789012345678901234567890123456789012345678&\c"
echo "E=23456789012345678901234567890123456789012345678&\c"
echo "F=23456789012345678901234567890123456789012345678&\c"
echo "G=23456789012345678901234567890123456789012345678&\c"
echo "H=23456789012345678901234567890123456789012345678&\c"
echo "J=23456789012345678901234567890123456789012345678&\c"
echo "K=\c"
echo "\n\n"
###############

############## two.cgi
#!/bin/sh

# disable filename globbing
set -f

echo Content-type: text/html
echo

cat path/file.html
#####################
(file.html is a html-file 13590 bytes in size)

These two scripts can reproduce the problem 3 times out of 10 tries
>Fix:
# The following two lines in httpd.conf makes the problem dissaper
#  (instead of 100 death per our it's decreased to 4 to 5.
BrowserMatch "MSIE 4\." nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "MSIE 5\." nokeepalive downgrade-1.0 force-response-1.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 make sure the]
[subject line starts with the report component and number, with ]
[or without any 'Re:' prefixes (such as "general/1098:" or      ]
["Re: general/1098:").  If the subject doesn't match this       ]
[pattern, your message will be misfiled and ignored.  The       ]
["apbugs" address is not added to the Cc line of messages from  ]
[the database automatically because of the potential for mail   ]
[loops.  If you do not include this Cc, your reply may be ig-   ]
[nored unless you are responding to an explicit request from a  ]
[developer.  Reply only with text; DO NOT SEND ATTACHMENTS!     ]