An analysis of interrupt behavior

David T. Lewis lewis at mail.msen.com
Sun Apr 3 21:24:32 UTC 2005


On Fri, Apr 01, 2005 at 12:34:55AM -0800, Andreas Raab wrote:
> Tim Rowledge wrote:
> > The amusing part is that the semaphore used for low space has the lowspace
> > process on its list and we remove it as part of signalling. Maybe if we stuck
> > the active process on the end as some 'helpful context' it would make life
> > simpler. Or a subclass of Semaphore with a more explicit ivar(s) if we want to
> > reduce confusion potential.
> 
> I think it's a little more complex than that. It would be nice if we 
> could define a few reliable test cases to spec out what it actually is 
> that we think ought to work. I'll throw in the following:
> 
> * "[true] whileTrue" - we must be able to interrupt this
> * "[[true] whileTrue] forkAt: Processor userSchedulingPriority + 1" - 
> again we must be able to interrupt that
> * "Smalltalk stackOverflow" - we must be able to recover from that
> * "[Smalltalk stackOverflow] forkAt: Processor userSchedulingPriority + 
> 1" - again we must be able to recover from that

I posted "[VM][ENH] LowSpaceAndInterruptHandler-dtl" that demonstrates
one way to handle this. All four of the above test cases pass in Morphic
with these changes applied (using a Unix VM both with and without fixed
memory allocation).

Unfortunately this does require a VM change, so it would be better
if someone can think of a way to handle it without touching the VM.
I could not see any good way to do that.

Dave





More information about the Squeak-dev mailing list