[squeak-dev] Re: UI lockup in Squeak 4.1

Eliot Miranda eliot.miranda at gmail.com
Tue Jul 13 21:03:51 UTC 2010


On Tue, Jul 13, 2010 at 1:53 PM, Rob Withers <reefedjib at yahoo.com> wrote:

>
>  From: Eliot Miranda
>> Sent: Tuesday, July 13, 2010 4:11 PM
>>
>> To: The general-purpose Squeak developers list
>> Subject: Re: [squeak-dev] Re: UI lockup in Squeak 4.1
>>
>>
>>
>>
>>
>> > On Tue, Jul 13, 2010 at 12:59 PM, Rob Withers <reefedjib at yahoo.com> >
>> wrote:
>> >
>> > Hi Eliot,
>> >
>> >
>> > I already found it.
>> >
>>
>> Doh!
>>
>> >  It is this method, when the result of the dictionary lookup is nil for
>> > 'en', and it recursively calls localeID: with 'en'.
>> >
>> >
>> > LanguageEnvironment class>>#localeID: localeID
>> > ^self knownEnvironments at: localeID ifAbsent: [self localeID: (LocaleID
>> > isoLanguage: 'en')]
>> >
>>
>>
>> which clearly needs to read something like
>>  LanguageEnvironment class>>#localeID: localeID
>>    ^self knownEnvironments
>>        at: localeID
>>        ifAbsent: [self knownEnvironments at: (LocaleID isoLanguage: 'en')]
>>
>>
> 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.
>
> I had in mind:
>
> LanguageEnvironment class>>#localeID: localeID
>
>   ^self knownEnvironments
>       at: localeID
>       ifAbsent: [
>           | env id |
>           env := Latin1Environment new.
>           id := LocaleID isoString: 'en'.
>           env localeID: id.
>           self knownEnvironments at: id put: env.
>           ^ env].
>
>
LanguageEnvironment class>>#localeID: localeID
   ^self knownEnvironments
       at: localeID
       ifAbsent: [self knownEnvironments
                            at: (LocaleID isoLanguage: 'en')
                            ifAbsentPut:
                                [Latin1Environment new
                                    localeID: (LocaleID isoString: 'en');
                                    yourself]]

No?


>
>
>> > I start the image with an intact KnownEnvironments.   Something somehow
>> > nils out the entries after I > > > have run for awhile.   ??????
>> >
>>
>> So guard against resetKnownEnvironments?
>>
>
> I had a 'self halt' and it never got called.
>
> I have no idea how it was nilling out the entries.
>

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...


> Rob
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20100713/f652b7ec/attachment.htm


More information about the Squeak-dev mailing list