<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p><br>
</p>
<meta content="text/html; charset=UTF-8">
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<p>Hi Lauren,</p>
<p><br>
</p>
<p>I think this issue has already been discussed in <span>Kernel-ct.1405 et al. (Squeak Inbox Talk might be a nice way to find all related discussions to "BlockCannotReturn"). What do you think about the solutions proposed there? :-)</span></p>
<p><span><br>
</span></p>
<p><span>Best,</span></p>
<p><span>Christoph</span></p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Lauren Pullen <drurowin@gmail.com><br>
<b>Gesendet:</b> Donnerstag, 28. April 2022 07:25:44<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org<br>
<b>Betreff:</b> [squeak-dev] SIGTRAP when Proceeding from BlockCannotReturn</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt">
<div class="PlainText">I found a VM crash while doing my UI testing.<br>
<br>
platform sources revision VM: 202204190959<br>
runner@Mac-1650369142700.local:work/opensmalltalk-vm/opensmalltalk-vm<br>
Date: Tue Apr 19 11:59:48 2022 CommitHash: 2a0e785 Plugins: 202204190959<br>
runner@Mac-1650369142700.local:work/opensmalltalk-vm/opensmalltalk-vm<br>
<br>
If you make the novice mistake of putting a ^ in a block and evaluating<br>
that block after the method returns, a debugger window helpfully appears<br>
saying BlockCannotReturn.<br>
<br>
If you press Proceed the OS will kill Squeak.  No crash.dmp file is<br>
created for this crash.<br>
<br>
The debugger does not respect the value of #isResumable (which<br>
BlockCannotReturn returns true for, by the way) and always permits the<br>
user to resume the operation using the Proceed button.  I believe there<br>
is a method on Exception that also disregards #isResumable  To force an<br>
operation to never proceed you must return the Exception after signaling it.<br>
<br>
Where is the best place to fix this?  We can make the debugger respect<br>
#isResumable and set BlockCannotReturn to return false.  We can also<br>
make Context>>cannotReturn:to: never return normally.  We can also catch<br>
nil in the VM.<br>
<br>
</div>
</span></font></div>
</body>
</html>