[BUG] User interrupts no longer interrupt locked UI process

Ned Konz ned at squeakland.org
Fri Mar 19 18:49:09 UTC 2004


On Thursday 18 March 2004 10:15 pm, Tim Rowledge wrote:
> Looking at your 21000 sends per 3mS, if we started off at 1000 (for the
> reset value) then after 1000 sends, we bump reset by 10 and continue;
> afte another 1010 we do it again since we're still under 3mS. And again
> and again for roughly  20 times before we reach 21000 and the point at
> which it ought to even out.
>
> I'd be interested to see why it goes much beyond 21000. I'm sure it
> does, since on my much slower machine it also goes pretty berserk.
>
> Something is very odd here; even with reset clamped to 1000  and
> ioProcess polling happening every 5mS (which it keeps doing all the way
> to out-of-memory) I _still_ can't get an interrupt. If if do a huge
> iterative loop there's no problem at all.  Have we screwed up something
> in the message-send vs backward branch area?

What happens is that checkForInterrupts is not being called in the case of 
recursion into empty methods.

Instead, quickCheckForInterrupts is being called, and it only decrements by 1.

Try this in a debugger:

* start Squeak
* do a tight recursion into an otherwise empty method:

testRecursion
	self testRecursion

* interrupt the process from the debugger
* set a breakpoint on checkForInterrupts()
* resume Squeak

you'll see that cfI is not being called at all and the counter continues to 
increase.

This is why I stuck a reset for the counter at the end of fullGC().

-- 
Ned Konz
http://bike-nomad.com/squeak/



More information about the Squeak-dev mailing list