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
|