Posted by
Christoph Thiede on
May 28, 2021; 6:19pm
URL: https://forum.world.st/Solving-multiple-termination-bugs-summary-proposal-tp5128285p5130115.html
Hi Jaromir,
you convinced me with regard to the behavior of #terminate as well as the current definition of #testNestedUnwind - see [1]. :-) I still think my counter-proposal is relevant, we just should put it into a method with a different name. Debugger's Abandon should then use this method instead of #terminate. But please let's discuss in [1], it's already hard enough to keep an overview. :D
Regarding to your proposal:
Please see my comments in [2] about your proposed change to BlockCannotReturn.
> > Instead of reinventing the unwinding wheel in Process, I reused the existing logic from Context which is important deduplication.
> Well, actually I didn't reinvent the unwind pattern but intentionally reused it with as few changes as possible - I think it improves readability because people easily recognize this pattern from #resume:, #resume:through:, #unwindTo and even the previous #terminate used the exact same pattern for
an active process termination. Besides, using the same pattern for achieving a similar goal feels "safer" to me.
A pattern is good, but reusing the same code is even better. :-) I still see some signification duplication between #runUntilErrorOrReturnFrom: and #runUnwindUntilErrorOrReturnFrom: as well as between Process >> #terminate and Context >> #unwindTo:. But Kernel-jar.1411 already is a good step into the right direction as far as I can tell. :-)
What remains unacceptable or dangerous to me are your hard-coded exceptions in Process >> #complete:to:. If this is crucial to prevent akwards infinite recursions, we might not be immune against similar incidents for other kinds of recursion as well. Object >> #at:, for example, is no better than Object >> #doesNotUnderstand:. Actually, any exception or exception handler might produce a similar behavior. Could you provide a few concrete examples where this check is needed? Maybe we can find a more holistic solution to this issue.
> Again, I wanted to make as few changes as possible; but agreed absolutely :)
That is also a very reasonable goal which I had to learn myself the hard way. :) Keep going! :-)
Best,
Christoph
[1]
http://forum.world.st/The-semantics-of-halfway-executed-unwind-contexts-during-process-termination-tp5129800p5130110.html[2]
http://forum.world.st/The-Inbox-Kernel-ct-1405-mcz-tp5129706p5130114.html
Carpe Squeak!