You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Noel Barber <nb...@amteva.com> on 1997/03/28 20:10:01 UTC

mod_cgi/283: Re-Load of a CGI generated form causes server to hang

>Number:         283
>Category:       mod_cgi
>Synopsis:       Re-Load of a CGI generated form causes server to hang
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    apache (Apache HTTP Project)
>State:          open
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Fri Mar 28 11:10:00 1997
>Originator:     nbarber@amteva.com
>Organization:
apache
>Release:        1.1.3
>Environment:
SCO Unix 2.1 
Apache 1.1.3
Gnu compiler 
Netscape 3.o browser
>Description:
We are running a Tcl CGI that will generate a simple table based report.
The report is always generated successfully when the CGI is called from the submitting forrm. However, when the re-load/refresh button is hit multiple times it will cause the server to hang. The browser seems to behave normally, prompting for a re-post of the form data used by the CGI. However the server hangs with the following error in the erro_log file :

[Fri Feb 21 16:15:12 1997] accept: Protocol error
[Fri Feb 21 16:15:12 1997] - socket error: accept failed


When I do a truss -p on the different server http processes running, they are all sleeping. The output from the truss is:

 truss -p 8876
fcntl(5, F_SETLKW, 0x08064390)  (sleeping...)

The root process seems to be hung in a loop. The same truss command on the root process returns the following continually until the process is killed:

    Received signal #14, SIGALRM, in wait() [caught]
wait()                                          Err#4  EINTR
setcontext(0x0806836C)
lseek(6, 0, 0)                                  = 0
read(6, "06 p\0\001\0\0\0AC "\0\0".., 1200)     = 1200
getcontext(0x0806836C)
signal(SIGALRM, 0x0804B860)                     = SIG_DFL
alarm(1)


The browser will eventually time-out the request, but we have to kill and re-start the server so that we can once again contact the site.

>How-To-Repeat:
I would suggest writing a simple tcl CGI that generates a form from post data, and hitting the re-load command multiple times until it hangs. If you fail to reproduce it I may be able to send you some scripts that will.
>Fix:
Not a clue
>Audit-Trail:
>Unformatted: