Socket>>#waitForDataFor:ifClosed:ifTimedOut: large delay hangs
process
Tom Phoenix
rootbeer at redcat.com
Mon Jan 14 16:44:42 UTC 2008
On Jan 14, 2008 7:55 AM, <squeakdev1 at reider.net> wrote:
> On rare occasions I've seen
> Socket>>#waitForDataFor:ifClosed:ifTimedOut: (3.9 svp 7/27/2003 00:16)
> pass a very large duration to readSemaphore waitTimeoutMSecs:. Large
> enough to either hang the process for days, or cause Delay to complain
> that delays cant exceed ~6 days. (when the duration should have been a
> max of 300 seconds).
>
> Is it possible that there is a problem in this code when the
> millisecondClockValue is reset or rolls over?
It certainly smells like that, doesn't it? The code in
Socket>>#waitFor... doesn't show any awareness that the millisecond
clock can roll over. If the deadline falls just after a rollover, then
once the clock went back to zero, that method would ask for a delay
that lasts until after the *next* rollover. I think you've nailed it.
You should file a bug report for this on Mantis, if there isn't one already.
http://bugs.squeak.org
Cheers!
--Tom Phoenix
More information about the Squeak-dev
mailing list
|