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