<br><br><div class="gmail_quote">On Tue, Jul 13, 2010 at 1:53 PM, Rob Withers <span dir="ltr"><<a href="mailto:reefedjib@yahoo.com">reefedjib@yahoo.com</a>></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">
> On Tue, Jul 13, 2010 at 12:59 PM, Rob Withers <<a href="mailto:reefedjib@yahoo.com" target="_blank">reefedjib@yahoo.com</a>> > wrote:<br>
><br>
> Hi Eliot,<br>
><br>
><br>
> I already found it.<br>
><br>
<br>
Doh!<br>
<br>
> It is this method, when the result of the dictionary lookup is nil for > 'en', and it recursively calls localeID: with 'en'.<br>
><br>
><br>
> LanguageEnvironment class>>#localeID: localeID<br>
> ^self knownEnvironments at: localeID ifAbsent: [self localeID: (LocaleID<br>
> isoLanguage: 'en')]<br>
><br>
<br>
<br>
which clearly needs to read something like<br>
LanguageEnvironment class>>#localeID: localeID<br>
^self knownEnvironments<br>
at: localeID<br>
ifAbsent: [self knownEnvironments at: (LocaleID isoLanguage: 'en')]<br>
<br>
</div></blockquote>
<br>
The problem is that something changed the entry for 'en' 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>>#localeID: localeID<br>
<br>
^self knownEnvironments<br>
at: localeID<br>
ifAbsent: [<br></div>
| env id |<br>
env := Latin1Environment new.<br>
id := LocaleID isoString: 'en'.<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>>#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: 'en')</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: 'en');</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>
> I start the image with an intact KnownEnvironments. Something somehow > nils out the entries after I > > > have run for awhile. ??????<br>
><br>
<br>
So guard against resetKnownEnvironments?<br>
</blockquote>
<br></div>
I had a 'self halt' 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>