<br><br><div class="gmail_quote">On Tue, Jul 13, 2010 at 1:53 PM, Rob Withers <span dir="ltr">&lt;<a href="mailto:reefedjib@yahoo.com">reefedjib@yahoo.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
From: Eliot Miranda<br>
Sent: Tuesday, July 13, 2010 4:11 PM<div class="im"><br>
To: The general-purpose Squeak developers list<br></div><div class="im">
Subject: Re: [squeak-dev] Re: UI lockup in Squeak 4.1<br>
<br>
<br>
<br>
<br>
<br></div><div class="im">
&gt; On Tue, Jul 13, 2010 at 12:59 PM, Rob Withers &lt;<a href="mailto:reefedjib@yahoo.com" target="_blank">reefedjib@yahoo.com</a>&gt; &gt; wrote:<br>
&gt;<br>
&gt; Hi Eliot,<br>
&gt;<br>
&gt;<br>
&gt; I already found it.<br>
&gt;<br>
<br>
Doh!<br>
<br>
&gt;  It is this method, when the result of the dictionary lookup is nil for &gt; &#39;en&#39;, and it recursively calls localeID: with &#39;en&#39;.<br>
&gt;<br>
&gt;<br>
&gt; LanguageEnvironment class&gt;&gt;#localeID: localeID<br>
&gt; ^self knownEnvironments at: localeID ifAbsent: [self localeID: (LocaleID<br>
&gt; isoLanguage: &#39;en&#39;)]<br>
&gt;<br>
<br>
<br>
which clearly needs to read something like<br>
 LanguageEnvironment class&gt;&gt;#localeID: localeID<br>
    ^self knownEnvironments<br>
        at: localeID<br>
        ifAbsent: [self knownEnvironments at: (LocaleID isoLanguage: &#39;en&#39;)]<br>
<br>
</div></blockquote>
<br>
The problem is that something changed the entry for &#39;en&#39; from Latin1Environment to nil.  So the absent block will still fail, although this time as an Error and not a recursive, memory-growing loop.<br>
<br>
I had in mind:<div class="im"><br>
LanguageEnvironment class&gt;&gt;#localeID: localeID<br>
<br>
   ^self knownEnvironments<br>
       at: localeID<br>
       ifAbsent: [<br></div>
           | env id |<br>
           env := Latin1Environment new.<br>
           id := LocaleID isoString: &#39;en&#39;.<br>
           env localeID: id.<br>
           self knownEnvironments at: id put: env.<br>
           ^ env].<div class="im"><br></div></blockquote><div> </div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">LanguageEnvironment class&gt;&gt;#localeID: localeID<br>
   ^self knownEnvironments<br>       at: localeID<br>       ifAbsent: [self knownEnvironments</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">                            at: (LocaleID isoLanguage: &#39;en&#39;)</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">                            ifAbsentPut:</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">                                [</span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Latin1Environment new</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">                                    </span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">localeID: (</span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">LocaleID isoString: &#39;en&#39;);</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "></span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">                                    yourself]]</span></div>
<div> </div><div>No?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
&gt; I start the image with an intact KnownEnvironments.   Something somehow &gt; nils out the entries after I &gt; &gt; &gt; have run for awhile.   ??????<br>
&gt;<br>
<br>
So guard against resetKnownEnvironments?<br>
</blockquote>
<br></div>
I had a &#39;self halt&#39; and it never got called.<br>
<br>
I have no idea how it was nilling out the entries.<br></blockquote><div><br></div><div>Are there any senders of knownEnvironments and removeKey: et al?  Do you have changes to Dictionary grow code which causes a bug on rehash?  etc...</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><font color="#888888">
<br>
Rob<br>
<br>
<br>
<br>
</font></blockquote></div><br>