[squeak-dev] The semantics of halfway-executed unwind contexts during process termination

Jaromir Matas m at jaromir.net
Wed May 19 18:04:21 UTC 2021


Hi Christoph,

I posted some additional arguments in
http://forum.world.st/Solving-multiple-termination-bugs-summary-proposal-tp5128285p5129859.html

> [...] the fact that an error has been signaled means that the
> signalerContext is "infected" so under no 
> circumstances, abandoning the process should resume the execution of this
> infected context! 

This is what really got me thinking... yes, resuming errors sounds like a
bad idea. But the point is if you terminate a totally healthy process in the
middle of its unwind block then there's no reason to prevent its normal
completion. The thing is you don't know in advance. But a debugger is a
different story - you see an error and make a conscious decision - Proceed
or Abandon? That's why I was looking for a Kill button :) Currently the
consensus is Abandon = terminate, however this is not a given, it can be
reconsidered... e.g. use the unwind version of regular #return/#resume/ etc
- without unwinding halfway through block - that could make a good sense...

It means two different unwind semantics could really be desirable and
justified: If a healthy process terminates, let it unwind as much as
possible including all unwind blocks halfway-through execution.

If a broken process terminates via Abandoning the debugger, use the current
"return" unwind semantics - i.e. execute only not-yet-started unwind blocks.

What do you think?

I'm looking forward to your thoughts.
best,



-----
^[^ Jaromir
--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html


More information about the Squeak-dev mailing list