<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=text/html;charset=iso-8859-1 http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18928"></HEAD>
<BODY style="PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 15px" 
id=MailContainerBody leftMargin=0 topMargin=0 CanvasTabStop="true" 
name="Compose message area">
<DIV style="FONT: 10pt Tahoma">
<DIV><FONT face=Arial>I found the problem!</FONT></DIV><FONT 
face=Arial></FONT></DIV>
<DIV style="FONT: 10pt Tahoma">&nbsp;</DIV>
<DIV style="FONT: 10pt Tahoma"><FONT face=Arial>Of course, it was my code 
causing this.&nbsp; I was doing the equivalent of:</FONT></DIV>
<DIV style="FONT: 10pt Tahoma"><FONT face=Arial></FONT>&nbsp;</DIV>
<DIV style="FONT: 10pt Tahoma"><FONT face=Arial>&nbsp;&nbsp;&nbsp;&nbsp;Object 
new becomeForward: nil.</FONT></DIV>
<DIV><FONT face=Arial></FONT>&nbsp;</DIV>
<DIV><FONT size=2 face=Arial>and this was nilling out the contents of that 
KnownEnvironments dictionary.&nbsp; I tested with the above code, without my 
code, and indeed it caused the problem.&nbsp; I am now avoiding both 
SmallIntegers and nil when using #becomeForward:</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV><FONT size=2 face=Arial>Thanks for everyone's help in this 
matter!</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV><FONT size=2 face=Arial>Rob</FONT></DIV>
<DIV style="FONT: 10pt Tahoma"><BR></DIV>
<DIV style="FONT: 10pt Tahoma; BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=eliot.miranda@gmail.com 
href="mailto:eliot.miranda@gmail.com">Eliot Miranda</A> </DIV>
<DIV><B>Sent:</B> Tuesday, July 13, 2010 5:03 PM</DIV>
<DIV><B>To:</B> <A 
title="mailto:squeak-dev@lists.squeakfoundation.org&#10;CTRL + Click to follow link" 
href="mailto:squeak-dev@lists.squeakfoundation.org">The general-purpose Squeak 
developers list</A> </DIV>
<DIV><B>Subject:</B> Re: [squeak-dev] Re: UI lockup in Squeak 4.1</DIV></DIV>
<DIV><FONT size=2 face=Arial></FONT><FONT size=2 
face=Arial></FONT><BR></DIV><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 
style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
class=gmail_quote><FONT size=2 face=Arial></FONT><FONT size=2 
  face=Arial></FONT><BR>
  <BLOCKQUOTE 
  style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
  class=gmail_quote>From: Eliot Miranda<BR>Sent: Tuesday, July 13, 2010 4:11 
    PM 
    <DIV class=im><FONT size=2 face=Arial></FONT><FONT size=2 
    face=Arial></FONT><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; &nbsp;It is this method, when the 
    result of the dictionary lookup is nil for &gt; 'en', and it recursively 
    calls localeID: with 'en'.<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: 
    'en')]<BR>&gt;<BR><BR><BR>which clearly needs to read something 
    like<BR>&nbsp;LanguageEnvironment class&gt;&gt;#localeID: localeID<BR>&nbsp; 
    &nbsp;^self knownEnvironments<BR>&nbsp; &nbsp; &nbsp; &nbsp;at: 
    localeID<BR>&nbsp; &nbsp; &nbsp; &nbsp;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. 
  &nbsp;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>&nbsp; ^self knownEnvironments<BR>&nbsp; &nbsp; &nbsp; at: 
  localeID<BR>&nbsp; &nbsp; &nbsp; ifAbsent: [<BR></DIV>&nbsp; &nbsp; &nbsp; 
  &nbsp; &nbsp; | env id |<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; env := 
  Latin1Environment new.<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id := LocaleID 
  isoString: 'en'.<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; env localeID: 
  id.<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self knownEnvironments at: id put: 
  env.<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^ env]. 
  <DIV class=im><BR></DIV></BLOCKQUOTE>
<DIV>&nbsp;</DIV>
<DIV><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span>LanguageEnvironment class&gt;&gt;#localeID: 
localeID<BR>&nbsp; &nbsp;^self knownEnvironments<BR>&nbsp; &nbsp; &nbsp; 
&nbsp;at: localeID<BR>&nbsp; &nbsp; &nbsp; &nbsp;ifAbsent: [self 
knownEnvironments</SPAN></DIV>
<DIV><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;at: (LocaleID isoLanguage: 
'en')</SPAN></DIV>
<DIV><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ifAbsentPut:</SPAN></DIV>
<DIV><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[</SPAN><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span>Latin1Environment new</SPAN></DIV>
<DIV><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp;</SPAN><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span>localeID: (</SPAN><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span>LocaleID isoString: 'en');</SPAN></DIV>
<DIV><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span></SPAN><SPAN 
style="BORDER-COLLAPSE: collapse; FONT-FAMILY: arial, sans-serif; FONT-SIZE: 13px" 
class=Apple-style-span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
&nbsp;yourself]]</SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV>No?</DIV>
<DIV><BR></DIV>
<BLOCKQUOTE 
style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
class=gmail_quote>
  <DIV class=im><BR><BR>
  <BLOCKQUOTE 
  style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
  class=gmail_quote><BR>&gt; I start the image with an intact 
    KnownEnvironments. &nbsp; Something somehow &gt; nils out the entries after 
    I &gt; &gt; &gt; have run for awhile. &nbsp; ??????<BR>&gt;<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? &nbsp;Do 
you have changes to Dictionary grow code which causes a bug on rehash? 
&nbsp;etc...</DIV>
<DIV><BR></DIV>
<BLOCKQUOTE 
style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
class=gmail_quote><FONT 
color=#888888><BR>Rob<BR><BR><BR><BR></FONT></BLOCKQUOTE></DIV><BR>
<P>
<HR>

<P></P><BR></BODY></HTML>