Mantis - Squeak
Viewing Issue Advanced Details
650 Kernel crash always 12-11-04 19:16 01-07-05 20:57
lewis  
 
normal  
closed  
fixed  
none    
none 3.8  
0000650: (Delay forMilliseconds: 625/4) wait ==> BOOM
A Delay created from a fractional millisecond value will hang a Squeak image. The error cannot be caught and the image is left in an unrecoverable condition (at least I don't know how to recover it).

The fix is to ensure that a Delays are created with integral values.
Don't ask me know I found this one ;-)

Delay class>>forMilliseconds: did not force conversion to Integer. Delay class>>forSeconds: already had this, so I added the corresponding conversion to #forMilliseconds.

Change set attached.
 DelayForMillisecondsFix-dtl.cs.gz [^] (601 bytes) 12-11-04 19:16

Notes
(0000908)
laza   
12-11-04 20:42   
On a quick look I think the reason is that when the primitive fails the semaphore of the that active delay will never be signaled and so the delay will never be expunged, blocking all other delays.

The fix guards against this by either successfully converting the argument into an integer or forcing an error in a uncritical area otherwise.
(0001017)
bert   
01-07-05 20:00   
6542DelayFix-dtl.cs