<html 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=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<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.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
        {mso-style-priority:1;
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.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 Juan, Gerald,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">this is weird; some terminated processes get stuck in the system because they are being referenced which is why they don't get garbage collected (stating the obvious, I know); the question that puzzles me is why they are being referenced...
 which is unfortunately beyond my 'paygrade' (i.e. my skills) ;)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">you can see an example of such a "stuck" process here:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Smalltalk garbageCollect.<o:p></o:p></p>
<p class="MsoNormal">process _ ( Process allSubInstances select: [ :process | process isTerminated ] ) anyOne.<o:p></o:p></p>
<p class="MsoNormal">( Object allSubInstances select: [:obj | obj pointsTo: process] ) explore<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In most cases the newly terminated processes get garbage collected shortly (automatically) but some get stuck somehow (because referenced) and seem to stay stuck. I'm observing a similar behavior in older images from earlier this year so
 the most recent modification in isTerminated or the UI behavior should not be causing it.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I'm not sure these 'stuck' terminated processes can cause memory issues Gerald observes but the truth is I don't understand the mechanism why they keep being referenced (and hence stuck).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I hope someone could shed some light here or point in the right direction. I'd like to make sure the changes in termination I suggested are not causing somehow this behavior, and fix them if they do, of course.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">best,<o:p></o:p></p>
<p class="MsoNormal">Jaromir<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNoSpacing"><span lang="CS">--</span><o:p></o:p></p>
<p class="MsoNoSpacing"><strong><span style="font-family:"Calibri Light",sans-serif;color:#333333;font-weight:normal">Jaromír Matas</span></strong><span style="font-family:"Calibri Light",sans-serif;color:#555555"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#8FAADC"><o:p> </o:p></span></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:cuis.01@klix.ch">Gerald Klix</a><br>
<b>Sent: </b>Thursday, October 20, 2022 18:20<br>
<b>To: </b><a href="mailto:cuis-dev@lists.cuis.st">cuis-dev@lists.cuis.st</a>; <a href="mailto:juan@cuis.st">
Juan Vuletich</a><br>
<b>Cc: </b><a href="mailto:mail@jaromir.net">Jaromir Matas</a><br>
<b>Subject: </b>[DEFECT] Debugger leaves terminated processes</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi all, Hi Juan,<br>
<br>
I think I found the cause of my huge images:<br>
The Debugger (or process termination)<br>
leaves terminated processes hanging around.<br>
<br>
First I saved the image before running the<br>
killer-Block (see the attached killit.st):<br>
<br>
-- snip --<br>
beforeLargeStack.image<br>
-rw-rw-r-- 1 bear bear 27M Okt 20 17:50 Haver6.0-5496-beforeLargeStack.image<br>
-- snap --<br>
<br>
Than I ran killit and simply closed the debugger window<br>
and saved the image:<br>
<br>
-- snip --<br>
-rw-rw-r-- 1 bear bear 1.9G Okt 20 17:51 Haver6.0-5496-afterLargeStack.image<br>
-- snap --<br>
<br>
 From 27 megabytes to 1.9 gigabytes in 20 seconds,<br>
that's quite a feature, albeit a bad one.<br>
<br>
When I print all existing processes -- see diagnoseKillit.st -- I<br>
could see there are a lot of terminated processes hanging around.<br>
<br>
I did `self break` and closed the debugger: More terminated processes.<br>
Bad enough: `Smalltalk garbageCollect` does not help.<br>
<br>
The first part of RunningProcesses.txt is the transcript<br>
output after running the killer-block.<br>
(There are already some terminated processes, because I used<br>
image to implement the fixes, I just posted).<br>
The second part is transcript output after one `self break`;<br>
I didn't check exactly, but there are more terminated processes.<br>
<br>
<br>
Best Regards,<br>
<br>
Gerald<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>