[squeak-dev] Re: UI lockup in Squeak 4.1
Rob Withers
reefedjib at yahoo.com
Tue Jul 13 18:42:11 UTC 2010
--------------------------------------------------
From: "Rob Withers" <reefedjib at yahoo.com>
Sent: Tuesday, July 13, 2010 12:34 PM
To: "The general-purpose Squeak developers list"
<squeak-dev at lists.squeakfoundation.org>
Subject: Re: [squeak-dev] Re: UI lockup in Squeak 4.1
> --------------------------------------------------
> From: "Andreas Raab" <andreas.raab at gmx.de>
> Sent: Tuesday, July 13, 2010 12:03 PM
> To: "The general-purpose Squeak developers list"
> <squeak-dev at lists.squeakfoundation.org>
> Subject: [squeak-dev] Re: UI lockup in Squeak 4.1
>
>> On 7/13/2010 8:57 AM, Rob Withers wrote:
>>
>>> This time it was a Cog VM which spasmed, which I use for my client
>>> (Squeak 4.1 for server for use with linux vm - I have no ability to
>>> compile a linux Cog vm: would love if someone posted one that could be
>>> launched headless for my webhost).
>>>
>>> It started running at 100% and I did your F2 -> Debug Options -> Print
>>> all processes. It started dumping a LOT to the Debug Console, then it
>>> froze, still at 100%, but no increase in memory now and it went (Not
>>> Responding) and greyed out the window.
>>>
>>> Luckily, I was able to see enough of the stack that was causing
>>> problems. It is infinitely looping in this method:
>>>
>>> LanguageEnvironment class>>#localeID: localeID
>>> ^self knownEnvironments at: localeID ifAbsent: [self localeID: (LocaleID
>>> isoLanguage: 'en')]
>>>
>>> This has nothing to do with my code, except I must be calling something
>>> that enters this loop. It happens in both Cog (Windows) and Squeak4.1
>>> (Linux <headless> and Windows).
>>>
>>> Not sure how to fix this.
>>
>> Debugging 101: Add a "self halt' in LanguageEnvironment and take it from
>> there :-)
>
> :-) Ok, Things worked for awhile, then it started looping. I found that
> most of the registered environments, in KnownEnvironments, are now nil.
> This includes all Environments except for 'el' -> GreekEnvironment,
> 'ja-etoys' -> JapaneseEnvironment, 'ca' -> Latin1Environment and 'sq' ->
> Latin1Environment.
>
> Not sure why.
>
I start the server and client with all known environments. At some later
point in time, some of the environments change to nil and I start looping
through the absent block of the dictionary lookup for localID:.
It is not a #become situation, since we still have some Latin1Environment
entries, and more than the Latin1Environment entries are changed to nil.
There is only 2 references to LanguageEnvironment class>>#KnownEnvironments,
which are LanguageEnvironment class>>#knownEnvironments and
LanguageEnvironment class>>#resetKnownEnvironments.
There is only one sender of LanguageEnvironment class>>#knownEnvironments,
which is LanguageEnvironment class>>#localeID:
There are two senders of LanguageEnvironment class>>#resetKnownEnvironments,
which are
NaturalLanguageTranslator>>#loadForLocaleIsoString:fromGzippedMimeLiteral:
and NaturalLanguageTranslator>>#mergeTranslationFileNamed:.
I have three images: echat1.image (a client), echat2.image (another client)
and echat-server.image. I set 'self halt' in the absent block of #localeID:
and in #resetKnownEnvironments in all images. I run the server and the 2
clients, connect the clients to the server and each other and then sit
there. #KnownEnvironments have the correct environments. At some later
time I try to copy text and #localID: self halt in the absent block gets
called. #KnownEnvironments in that image now have nils.
#resetKnownEnvironments never gets called.
I am totally stumped.
Rob
>>
>> Cheers,
>> - Andreas
>>
>
More information about the Squeak-dev
mailing list
|