<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Calibri Light";
        panose-1:2 15 3 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.gmail-m-5175141591949779556msonospacing, li.gmail-m-5175141591949779556msonospacing, div.gmail-m-5175141591949779556msonospacing
        {mso-style-name:gmail-m_-5175141591949779556msonospacing;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.gmail-m-5175141591949779556xmsonormal, li.gmail-m-5175141591949779556xmsonormal, div.gmail-m-5175141591949779556xmsonormal
        {mso-style-name:gmail-m_-5175141591949779556xmsonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.gmail-m-5175141591949779556xmsonospacing, li.gmail-m-5175141591949779556xmsonospacing, div.gmail-m-5175141591949779556xmsonospacing
        {mso-style-name:gmail-m_-5175141591949779556xmsonospacing;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.gmail-apple-converted-space
        {mso-style-name:gmail-apple-converted-space;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Eliot,</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> <span style="font-size:12.0pt">I think the explicit check is good, but is perhaps better if it reads self isTerminated. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">Yes, checking for suspendedContext ifNil: [^self] is good as it protects against MNU (nil jump) in situations like:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-size:12.0pt">p := [] newProcess suspendedContext: nil.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-size:12.0pt">p signalException: Notification<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt">Checking for self isTerminated ifTrue: [^self] would even cover your previous example:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-size:12.0pt">p := [Semaphore new wait] fork.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-size:12.0pt">Processor yield.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-size:12.0pt">p terminate.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-size:12.0pt">p signalException: Notification<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In this case you can theoretically signal from a terminated process; but I guess it does no harm :)</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks for the examples!<o:p></o:p></p>
<p class="MsoNormal">best,</p>
<p class="MsoNormal">Jaromir</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:eliot.miranda@gmail.com">Eliot Miranda</a><br>
<b>Sent: </b>Monday, June 27, 2022 20:00<br>
<b>To: </b><a href="mailto:squeak-dev@lists.squeakfoundation.org">The general-purpose Squeak developers list</a><br>
<b>Subject: </b>Re: [squeak-dev] The Trunk: Kernel-eem.1484.mcz</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Hi Jaromir,<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Mon, Jun 27, 2022 at 9:05 AM Jaromir Matas <<a href="mailto:mail@jaromir.net">mail@jaromir.net</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
Hi Eliot,</p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
The attached version of #signalException fixes the stack issue (MNU) when the extra context returns (#jump takes care if it) - for your review.</p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Beautiful.  That's a really nice implementation.<o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
 I have one more question: do you prefer to continue in case of nil suspendedContext or would you rather return (as suggested here)?</p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Turns out it should error.  The usage that I had in VMMaker was<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">shutdownModule<br>
    <doNotGenerate><br>
   <span class="gmail-apple-converted-space"> </span>| guiProcess activeProcess |<br>
   <span class="gmail-apple-converted-space"> </span>threads ifNil: [^self].<br>
   <span class="gmail-apple-converted-space"> </span>(guiProcess := self guiProcess) ~= (activeProcess := Processor activeProcess) ifTrue:<br>
   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>[guiProcess<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>signalException:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>(Notification
 new tag: #evaluateQuit; yourself).<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space">  </span>Project current spawnNewProcessIfThisIsUI: activeProcess.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space">  </span>activeProcess terminate].<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> ...</span><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-converted-space"><span style="font-size:12.0pt">but it is now</span></span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">shutdownModule<br>
    <doNotGenerate><br>
   <span class="gmail-apple-converted-space"> </span>| guiProcess activeProcess |<br>
   <span class="gmail-apple-converted-space"> </span>threads ifNil: [^self].<br>
   <span class="gmail-apple-converted-space"> </span>(guiProcess := self guiProcess) ~= (activeProcess := Processor activeProcess) ifTrue:<br>
   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>[guiProcess isTerminated ifFalse:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>[guiProcess<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>signalException:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space"> </span>     <span class="gmail-apple-converted-space"> </span> <span class="gmail-apple-converted-space"> </span> 
  <span class="gmail-apple-converted-space"> </span>(Notification new tag: #evaluateQuit; yourself)].<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space">  </span>Project current spawnNewProcessIfThisIsUI: activeProcess.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> </span>   <span class="gmail-apple-converted-space">  </span>activeProcess terminate].<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">   <span class="gmail-apple-converted-space"> ...</span><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span class="gmail-apple-converted-space"><span style="font-size:12.0pt">and the suspendedContext being nil is no longer an issue.</span></span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
                …</p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
                suspendedContext ifNil: [^self error: 'no suspended context!!!!'].</p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
Also, #signalException originally didn’t resume suspended processes (mentioned in the comments) but your latest version resumes all immediately;  the intended semantics is hard to judge without real experience, so just doublechecking. :)</p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">I think the explicit check is good, but is perhaps better if it reads self isTerminated.  Can you commit to trunk or do you need me to?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
 Many thanks,</p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
Jaromir</p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">You're the one who deserves thanks.<o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="gmail-m-5175141591949779556msonospacing"><strong><span style="font-family:"Calibri Light",sans-serif;color:#333333;font-weight:normal">Jaromír Matas</span></strong></p>
<p class="gmail-m-5175141591949779556msonospacing"><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-family:"Calibri Light",sans-serif">mail@jaromir.net</span></a></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
 </p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
<img border="0" width="694" height="2" style="width:7.2291in;height:.0208in" id="gmail-m_-5175141591949779556Horizontal_x0020_Line_x0020_1" src="cid:181a64d3026af9f1f1c1"></p>
<div id="gmail-m_-5175141591949779556divRplyFwdMsg">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
<b><span style="color:black">From:</span></b><span style="color:black"> Squeak-dev <</span><a href="mailto:squeak-dev-bounces@lists.squeakfoundation.org" target="_blank">squeak-dev-bounces@lists.squeakfoundation.org</a><span style="color:black">> on behalf
 of Jaromir Matas <</span><a href="mailto:mail@jaromir.net" target="_blank">mail@jaromir.net</a><span style="color:black">><br>
<b>Sent:</b> Monday, June 27, 2022 10:12:25 AM<br>
<b>To:</b> The general-purpose Squeak developers list <</span><a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank">squeak-dev@lists.squeakfoundation.org</a><span style="color:black">><br>
<b>Subject:</b> Re: [squeak-dev] The Trunk: Kernel-eem.1484.mcz</span> </p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
 </p>
</div>
</div>
<div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal">Hi Marcel,</p>
<p class="gmail-m-5175141591949779556xmsonormal">I think we have oversimplified #signalException.</p>
<p class="gmail-m-5175141591949779556xmsonormal">It looks like only tests use it in the Trunk (and those test are ok either way) but Eliot apparently has some not-so-happy usages elsewhere.</p>
<p class="gmail-m-5175141591949779556xmsonormal"> </p>
<p class="gmail-m-5175141591949779556xmsonormal">My suggestion is attached; unfortunately there are no tests for this functionality so I guess the ultimate criteria is whether it works for Eliot ;)</p>
<p class="gmail-m-5175141591949779556xmsonormal">Best,</p>
<p class="gmail-m-5175141591949779556xmsonormal">Jaromir</p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS">--</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><strong><span style="font-family:"Calibri Light",sans-serif;color:#333333;font-weight:normal">Jaromír Matas</span></strong></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-family:"Calibri Light",sans-serif">mail@jaromir.net</span></a></p>
<p class="gmail-m-5175141591949779556xmsonormal"> </p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="gmail-m-5175141591949779556xmsonormal"><b>From: </b><a href="mailto:marcel.taeumel@hpi.de" target="_blank">Marcel Taeumel</a><br>
<b>Sent: </b>Monday, June 27, 2022 9:38<br>
<b>To: </b><a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank">squeak-dev</a><br>
<b>Subject: </b>Re: [squeak-dev] The Trunk: Kernel-eem.1484.mcz</p>
</div>
<p class="gmail-m-5175141591949779556xmsonormal"> </p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Hi Eliot, hi Jaromir --</span></p>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Please resolve this issue ASAP. I did not expect such a commit given that we are in "CODE FREEZE" at this point. A short notice/discussion
 would have been nice.</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Yet, thanks for working on this issue. :-) Can we leave it as is or is another change required?</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Best,</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Marcel</span></p>
</div>
<blockquote style="border:none;border-left:solid windowtext 1.0pt;padding:0in 0in 0in 8.0pt;margin-left:0in;margin-top:15.0pt;margin-bottom:5.0pt">
<p style="margin-top:7.5pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#AAAAAA">Am 26.06.2022 23:57:23 schrieb Jaromir Matas <</span><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">mail@jaromir.net</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#AAAAAA">>:</span></p>
<div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Hi Eliot,</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">How about like this:<br>
<br>
signalException: anException</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                "Signal an exception in the receiver process...if the receiver is currently</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                suspended, the exception will get signaled when the receiver is resumed.  If
</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                the receiver is blocked on a Semaphore, it will be immediately re-awakened</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                and the exception will be signaled; if the exception is resumed, then the receiver</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                will return to a blocked state unless the blocking Semaphore has excess signals"</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                | oldList |</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                "If we are the active process, go ahead and signal the exception"</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                self isActiveProcess ifTrue: [^anException signal].</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                "Suspend myself first to ensure that I won't run away in the</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                midst of the following modifications."</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                (oldList := myList) ifNotNil: [self suspend].</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">               
</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                suspendedContext ifNil: [self error: 'no suspended context!!'].</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                "Add a new method context to the stack that will signal the exception"</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                suspendedContext := Context</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                                sender: suspendedContext</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                                receiver: self</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                                method: (self class lookupSelector: #pvtSignal:)</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                                arguments: {anException}.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                "If we are not on a list to be run (i.e. this process is suspended), then when the</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                process is resumed, it will signal the exception"</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                oldList ifNotNil: [self resume]</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">pvtSignal: anException</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                "Private. This method is used to signal an exception from another</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                process...the receiver must be the active process."</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                "Since this method is not called in a normal way, we need to take care</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                that it doesn't directly return to the caller (because I believe that could</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                have the potential to push an unwanted object on the caller's stack)."</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                | blocker |</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                self isActiveProcess ifFalse: [^self].</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                anException signal.</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                blocker := Semaphore new.</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                [self suspend.</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                suspendedContext := suspendedContext swapSender: nil.</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                self resume] fork.</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                blocker wait.</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">--</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><strong><span style="font-size:10.0pt;font-family:"Calibri Light",sans-serif;color:#333333;font-weight:normal">Jaromír Matas</span></strong></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-size:10.0pt;font-family:"Calibri Light",sans-serif">mail@jaromir.net</span></a></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="gmail-m-5175141591949779556xmsonormal"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">From:
</span></b><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">Jaromir Matas</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<b>Sent: </b>Sunday, June 26, 2022 20:41<br>
<b>To: </b></span><a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">The general-purpose Squeak developers list</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<b>Subject: </b>Re: [squeak-dev] The Trunk: Kernel-eem.1484.mcz</span></p>
</div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Hi Eliot,</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">I think the MNU error situation corresponds to the scenario described in pvtSignal:list:; unless I’m mistaken or you find more elegant
 way I’d suggest to use the helper method again; fortunately nicely simplified thanks to the new suspend:</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">pvtSignal: anException</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                "Private. This method is used to signal an exception from another</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                process...the receiver must be the active process."</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                "Since this method is not called in a normal way, we need to take care</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                that it doesn't directly return to the caller (because I believe that could</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                have the potential to push an unwanted object on the caller's stack)."</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                | blocker |</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                self isActiveProcess ifFalse: [^self].</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                anException signal.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                blocker := Semaphore new.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                [self suspend.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                suspendedContext := suspendedContext swapSender: nil.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                self resume] fork.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">                blocker wait.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">What do you think?</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Best,</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Jaromir</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="gmail-m-5175141591949779556xmsonormal"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">From:
</span></b><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">Jaromir Matas</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<b>Sent: </b>Sunday, June 26, 2022 19:03<br>
<b>To: </b></span><a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">The general-purpose Squeak developers list</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<b>Subject: </b>Re: [squeak-dev] The Trunk: Kernel-eem.1484.mcz</span></p>
</div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Hi Eliot,</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Thanks for the examples; I have a problem with this one:</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">p := [Semaphore new wait] fork.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Processor yield.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">p signalException: Notification</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">It gives me MNU: UndefinedObject>>wait</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">The reason is:</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">1) you place the new context (Notification signal) on top of the previous suspendedContext (Semaphore new wait); its pc is at the wait.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">2) now when the (Notification signal) context finally returns it places its return value on the top of its senders stack -> and this is
 a problem because when you send the wait it takes the stack top as the receiver (but that’s changed in the meantime) if I understand it correctly – resulting in the MNU</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Is this a bug? I’ve never used #signalException so I’m not entirely sure what to expect from it but it behaves differently than in 5.3.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Enclosing a screen snip. If, at that moment, you do suspendedContext pop, the computation will proceed as expected.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">I’ll keep looking at it but wanted to let you know…</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Thanks,</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Jaromir</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><span lang="CS" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">--</span></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><strong><span style="font-size:10.0pt;font-family:"Calibri Light",sans-serif;color:#333333;font-weight:normal">Jaromír Matas</span></strong></p>
<p class="gmail-m-5175141591949779556xmsonospacing"><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-size:10.0pt;font-family:"Calibri Light",sans-serif">mail@jaromir.net</span></a></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="gmail-m-5175141591949779556xmsonormal"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">From:
</span></b><a href="mailto:eliot.miranda@gmail.com" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">Eliot Miranda</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<b>Sent: </b>Saturday, June 25, 2022 21:12<br>
<b>To: </b></span><a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">The general-purpose Squeak developers list</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<b>Subject: </b>Re: [squeak-dev] The Trunk: Kernel-eem.1484.mcz</span></p>
</div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<div>
<div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
</div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">On Sat, Jun 25, 2022 at 1:50 AM Jaromir Matas <</span><a href="mailto:mail@jaromir.net" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">mail@jaromir.net</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">>
 wrote:</span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Hi Eliot,</span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">I missed that one, sorry.
</span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">I’ve just tried this example and only got an assertion error (without your fix):</span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">p := [] newProcess suspendedContext: nil.</span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">p signalException: Error</span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">I just can’t figure out in which case you got the BCR exception :)</span></p>
</div>
</div>
</blockquote>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">In the VMMaker VM simulator, when the simulator window is closed, the closing code attempts to close any and all notifiers & debuggers
 .  I'm working on the threaded FFI plugin, which in the simulator has multiple Smalltalk processes emulating OS threads.  To close each notifier it needs to deliver a tagged Notification signal to the relevant process.  Some of these processes are waiting
 on semaphores.  If they are the old code would suspend, which would set the process's suspendedContext to nil, and result in a cannot return error as the signal was being delivered.</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">So the example to test is</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">p := [Semaphore new wait] fork.</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">Processor yield.</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">p signalException: Notification</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">With the old signalException: version and the new suspend primitive this would crash with the BCR error.  Or something like that.  Maybe
 it had to be terminated, as in</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">p := [Semaphore new wait] fork.</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">Processor yield.</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">p terminate.</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">p signalException: Notification</span></p>
</div>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">But you get the idea.  If the process's suspendedContext is nil then the context that is put on top of the stack towards the end of signalException:
 will not be able to return.</span></p>
</div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Thanks!</span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Jaromir</span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">From:
</span></b><a href="mailto:commits@source.squeak.org" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">commits@source.squeak.org</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<b>Sent: </b>Saturday, June 25, 2022 1:58<br>
<b>To: </b></span><a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">squeak-dev@lists.squeakfoundation.org</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">;
</span><a href="mailto:packages@lists.squeakfoundation.org" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">packages@lists.squeakfoundation.org</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<b>Subject: </b>[squeak-dev] The Trunk: Kernel-eem.1484.mcz</span></p>
</div>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="mso-margin-top-alt:5.0pt;margin-right:0in;margin-bottom:12.0pt;margin-left:19.2pt">
<span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">Eliot Miranda uploaded a new version of Kernel to project The Trunk:<br>
</span><a href="http://source.squeak.org/trunk/Kernel-eem.1484.mcz" target="_blank"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">http://source.squeak.org/trunk/Kernel-eem.1484.mcz</span></a><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br>
<br>
==================== Summary ====================<br>
<br>
Name: Kernel-eem.1484<br>
Author: eem<br>
Time: 24 June 2022, 4:58:09.258613 pm<br>
UUID: f8ca934f-5875-434a-8cec-4d055099bdb6<br>
Ancestors: Kernel-mt.1483<br>
<br>
Fix a bug in Process>>signalException: where signalling a suspended process would cause a cannot return exception.<br>
<br>
=============== Diff against Kernel-mt.1483 ===============<br>
<br>
Item was changed:<br>
  ----- Method: Process>>signalException: (in category 'signaling') -----<br>
  signalException: anException<br>
         "Signal an exception in the receiver process...if the receiver is currently<br>
         suspended, the exception will get signaled when the receiver is resumed.  If
<br>
         the receiver is blocked on a Semaphore, it will be immediately re-awakened<br>
         and the exception will be signaled; if the exception is resumed, then the receiver<br>
         will return to a blocked state unless the blocking Semaphore has excess signals"<br>
  <br>
         "If we are the active process, go ahead and signal the exception"<br>
          self isActiveProcess ifTrue: [^anException signal].<br>
  <br>
         "Suspend myself first to ensure that I won't run away<br>
          in the midst of the following modifications."<br>
+        self isSuspended ifFalse:<br>
+                [self suspend].<br>
+        suspendedContext ifNil: [self error: 'no suspended context!!!!'].<br>
+        suspendedContext := Context<br>
-         self suspend.<br>
-         suspendedContext := Context<br>
                                                                 sender: suspendedContext<br>
                                                                 receiver: anException<br>
                                                                 method: (anException class lookupSelector: #signal)<br>
                                                                 arguments: #().<br>
+        ^self resume!<br>
-         ^self resume!</span></p>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
</div>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-left:19.2pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</blockquote>
</div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"><br clear="all">
</span></p>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black">--
</span></p>
<div>
<div>
<div>
<div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">_,,,^..^,,,_</span></p>
</div>
</div>
</div>
</div>
</div>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">best, Eliot</span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
</div>
</div>
</blockquote>
<p class="gmail-m-5175141591949779556xmsonormal" style="margin-right:.5in"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:black"> </span></p>
<p class="gmail-m-5175141591949779556xmsonormal"> </p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt">
 </p>
</div>
</div>
</div>
</div>
<p class="MsoNormal" style="margin-left:9.6pt"><o:p> </o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">_,,,^..^,,,_<o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><span style="font-size:12.0pt">best, Eliot<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>