Socket>>#waitForDataFor:ifClosed:ifTimedOut: large delay hangs
keith_hodges at yahoo.co.uk
Mon Jan 14 17:21:01 UTC 2008
Tom Phoenix wrote:
> 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.
> --Tom Phoenix
In 3.10 there is a timeout calculating function which does take roll
over into account.
More information about the Squeak-dev