From: Clark C . E. <cc...@cl...> - 2001-10-22 22:32:15
|
Thanks to Geoff, the problem is narrowed to a crash at self._socket.send() call in the modified ThreadedAppServer.py:401 code below... print "start loop" while sent < reslen: try: print "<%d>" % sent val = self._buffer[sent:sent+8192] print "." cnt = self._socket.send(val) print "," sent = sent + cnt except socket.error, e: if e[0]==errno.EPIPE: #broken pass else: print "StreamOut Error: ", e self._socket.close() self._socket = None break print "end loop" And the result I get... (before it dumps me to the prompt...) end loop start loop end loop start loop <0> . , <8192> . , <16384> . So. It reads in what to write... but when it goes to write to the socket self._socket.send(val) it crashes. Thoughts as to how to proceed? Clark On Mon, Oct 22, 2001 at 05:19:42PM -0400, Geoff Talvola wrote: | At 05:23 PM 10/22/01 -0400, you wrote: | >You can duplicate the error by... | > | > 1. Having two servlets, A B | > 2. Servlet A takes a while to return all of it's data. | > 3. User clicks on A, and before A finishes clicks on B. | > 4. Latency (small pipe) helps to illustrate the problem | > if I duplicate what my user encounteres locally... | > I don't get the error. | | Ah, you're right. I can reliably reproduce the problem (even locally on | the same machine as the web server and app server). This is on WinNT | 4.0. It doesn't crash the server, I just get the message "StreamOut | Error: (10053, 'Software caused connection abort')". | | I can't understand why this would crash on Linux. The area to look is in | ThreadedAppServer.py around line 407 -- that's where Windows is printing | the error message. Try adding some extra exception handlers and debugging | print statements to see what's really happening. | | I'll try to reproduce this at home on my Linux box, but since I only have a | single machine, not a network, I may not be able to provoke the problem at | home at all. | | | -- | | - Geoff Talvola | gtalvola@NameConnector.com |