For me it looks like the new VM solves the problem (on W2K) of 1) swiki-icons not (re)appearing always 2) edits resulting in server not found (IIRC) errors A nice catch! Thanks, Hans
-----Original Message----- From: Andreas Raab [mailto:[EMAIL PROTECTED]] Sent: Thursday, February 14, 2002 1:09 PM To: [EMAIL PROTECTED] Subject: RE: [pws] Problem with Swiki not serving images Folks, I still didn't have any time to test on Win2K but Diego Gomez reported a networking problem which allowed me to track down another of those network buggers (fortunately, he had a reliable test case). Could somebody try to see if the latest fixes do solve the problems you've been seeing?! There's a new VM in town at: http://isgwww.cs.uni-magdeburg.de/~raab/squeak/alpha/SqueakNetFix2.zip If you're interested, below is the message to Diego explaining the problem. Cheers, - Andreas -----Original Message----- From: Andreas Raab [mailto:[EMAIL PROTECTED]] Sent: Thursday, February 14, 2002 12:19 AM To: '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]' Subject: RE: RE: A Windows socket question Diego, I found it. As I said that was an _excellent_ catch. For your amusement here's what happened: The real problem was that the VM didn't clean up the OS socket handle when a close operation succeeded. Now this doesn't sound like a big problem, but you need to consider that there's a destroy operation following afterwards which may operate on the (successfully closed) socket handle. Usually, this results in a sequence where if the close succeeds the destroy fails. Which is effectively fine since abort is really the last resort and may fail without causing harm. _HOWEVER_, something in your configuration went slightly different (I'm not even quite sure how ;-) In effect, what happened was that inbetween the close and the destroy a new socket was accepted. This happens on the VM level (e.g., in a separate thread which is basically run at interrupt time). And this operation could give the newly accepted socket the handle of the socket which was closed before (since after a successful close the socket handle is invalid). Which - just a second later - got destroyed. E.g., the sequence is roughly as follows: server accepts socket with handle XXX server processes data using socket server closes socket with handle XXX <- client attempt new connection -> <- server VM accepts new socket in thread with handle XXX -> server destroys socket with handle XXX This leaves the client in the state where it thinks the connection has been abnormally closed by the host (which is correct!) and the host in a state where it may even think that the socket is entirely valid! Note that one of the interesting things here is that due to Squeak process scheduling the time between the close and the destroy can be arbitrarily large. Anyways, I've uploaded a new VM onto http://isgwww.cs.uni-magdeburg.de/~raab/squeak/alpha/SqueakNetFix2.zip which solves that problem. Let me know how it goes - if it works out I'll inform the PWS people. Cheers, - Andreas
