[squeak-dev] error on process termination

Thiede, Christoph Christoph.Thiede at student.hpi.uni-potsdam.de
Wed Aug 19 11:07:24 UTC 2020


Hi Robert,


without knowing details about your error, can you eliminate the infinite loop by applying any of the proposed solutions from http://forum.world.st/I-broke-the-debugger-td5110752.html#a5110814?

Squeak - Dev - I broke the debugger?<http://forum.world.st/I-broke-the-debugger-td5110752.html#a5110814>
forum.world.st
I broke the debugger?. Weird thing her. I was trying out my old Plumbing example, mostly just as a way to improve the swiki page. Using a 19292 update 5.3 image on Mac. Found a recursion related bug in...

Best,
<http://www.hpi.de/>
Christoph
________________________________
Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von Robert Withers via Squeak-dev <squeak-dev at lists.squeakfoundation.org>
Gesendet: Samstag, 25. Juli 2020 14:22:47
An: Squeak-dev
Betreff: Re: [squeak-dev] error on process termination


To give you more context, I am looking into gaurding the Vat's eventualProcess to restart when curtailed. This method is the main processing event loop. Below that is the #restartEventLoop method.

PriorityVat>>#processSends

    [
        [Processor yield.
        self nextPriorityMsg ifNotNil: [:msg | msg value].
        normalQ notNil ] ifCurtailed: [self restartEventLoop]] whileTrue

PriorityVat>>#restartEventLoop

    | currentEventLoop |
    (Processor activeProcess == eventualProcess) ifTrue: [
        eventualProcess ifNotNil: [:ea | currentEventLoop := ea].
        eventualProcess := nil.
        eventualProcess := EventualProcess newOnVat: self.
        eventualProcess resumeAsProcess.
        currentEventLoop ifNotNil: [:ea | ea terminate ]].

The termination is where the #stepToCallee error occurs.

K, r

On 7/25/20 8:13 AM, Robert Withers wrote:

Hi y'all,

I am getting an error when terminating my process and it loops infinitely stacking this error recursively.

nil doesNotUnderstand: stepToCallee

This is called from Context>>#runUntilErrorOrReturnFrom: aSender after this method has tried to get the topContext. Somehow topContext is nil, and I am guessing that returns from one of the context pops, in the following code from #runUntilErrorOrReturnFrom:.

    "Control resumes here once above ensure block or exception handler is executed"
    ^ error ifNil: [
        "No error was raised, remove ensure context by stepping until popped"
        [ctxt isDead] whileFalse: [topContext := topContext stepToCallee].
        {topContext. nil}


Have I setup the process incorrectly to receive this error or is something else the issue?

Appreciated.

Kindly,
rabbit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200819/e5e69954/attachment-0001.html>


More information about the Squeak-dev mailing list