[squeak-dev] Re: Stalling own SqueakSource instance

Klaus D. Witzel klaus.witzel at cobss.com
Thu May 14 11:18:31 UTC 2009


On Thu, 14 May 2009 10:15:37 +0200, Tobias Pape wrote:

> Hello John,
>
> Am 2009-05-13 um 21:11 schrieb John M McIntosh:
>
>> sounds like
>>
>> http://bugs.squeak.org/view.php?id=6581
>
>
> Unfortunately, this doesn’t seem to be the case.
> I do not experiences this particular symptoms:
> - In the case of 100% cpu usage, I’m not able to
>    VNC the image anymore.
> - If I’m already connected by VNC, moving the mouse does
>    not help.
> - It only happens in case of a HTTP PUT (i.e., pushing a new
>    mcz) that happens to be aborted by the use.
>
> Debugging such a process revealed the following:
> -	in WAKom>>process: the PUT-specific beaviour is called,
> 	i.e., the PUTData is tried to be retrieved
> (*in the meantime, the “other end” aborts the upload, thus closing
> 	the connection. The Socket is still connected on “out end”, though.)
> --	we are now in SocketStream>>next:
> ---	the End of the Stream is tested (#atEnd)
> --	because “our end” is still connected (I think) and we did not receive
> 	all data (because the connection was closed on the other end) we
> 	are not atEnd and there seems to be data available
> ---	thus we reach SocketStream>>receiveData
> ----	and Socket>>receiveDataTimeout:into:
> -----	and Socket>>receiveDataTimeout:into:startingAt:
> -----	there, the line
> !	self waitForDataFor: timeout ifClosed: [] ifTimeOut: [].
> 	occurs.
> -------Socket>>waitForDataFor:ifClosed:ifTimeOut:  determines that the
>   	Socket is closed (in contrary to #atEnd above), yet the given
> 	closedBlock is empty
> -----	thus, in and Socket>>receiveDataTimeout:into:startingAt: the
> primitve
> 	for reading data is called, where 0 is returned
> ---	therefore, in SocketStream>>receiveData the bytesRead is 0 and
> 	inStream is not altered
> --	we are now back in SocketStream>>next:
> 	atEnd, again, says that the stream is not at end and still connected.
> 	and since the inStream is unaltered, the second condition states that
> there
> 	would be data to read.
>
> I consider this a vicious circle.
>    The only cure I found  up until now was manually terminating these
> processes.
> Can somebody confirm this? I’d be grateful for any response.

The above (re. in contrary to #atEnd, etc) reminded me of this one,

- http://bugs.squeak.org/view.php?id=6951

perhaps some of the socket states/method comments are out of sync?

/Klaus

> So Long,
> 	-Tobias


-- 
"If at first, the idea is not absurd, then there is no hope for it".  
Albert Einstein




More information about the Squeak-dev mailing list