Thanks to Geoff, the problem is narrowed to a crash at
self._socket.send() call in the modified ThreadedAppServer.py:401
print "start loop"
while sent < reslen:
print "<%d>" % sent
val = self._buffer[sent:sent+8192]
cnt = self._socket.send(val)
sent = sent + cnt
except socket.error, e:
if e==errno.EPIPE: #broken
print "StreamOut Error: ", e
self._socket = None
print "end loop"
And the result I get... (before it dumps me to the prompt...)
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?
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