AW: [VM] unstability
Scott Wallace
scott.wallace at squeakland.org
Fri Feb 1 10:56:09 UTC 2002
The bug that Bob points out is certainly the culprit here (not for
the crashes Stephane reports, probably, but at least for the hangs
that I was experiencing.)
The code as it stands now actually can result in arbitrary globals,
including #Smalltalk, #Morph, and, say, #Object, getting assigned new
values. In Bob's example, the global #Morph actually stopped
referring to a class and started referring to an instance of that
class!
I would look with suspicion on any 3.3a image that had any
tile-scripting activity done in it anytime after the arrival of the
modules code.
A fix will be published shortly.
-- Scott
At 10:14 PM -0500 1/31/02, Bob Arning wrote:
>On Thu, 31 Jan 2002 18:22:34 -0800 Scott Wallace
><scott.wallace at squeakland.org> wrote:
>>As you'll see, you are correct that it relates to the referencing
>>mechanism in scripting. The point of departure -- the method from
>>which, once entered in these "hang" conditions, one never returns --
>>is Object.uniqueNameForReference.
>
>Scott,
>
>One problem is that Object>>uniqueNameForReference has a bug:
>
> aName _ Utilities keyLike: stem satisfying:
> [:jinaLake |
> nameSym _ jinaLake asSymbol.
> ((References definedNames includesKey:
>nameSym) not and:
> [(Module root moduleDefining:
>nameSym) notNil]) and:
> [(knownClassVars
>includes: nameSym) not]].
>
>will return a name that *is* defined by a module.
>
> [(Module root moduleDefining:
>nameSym) notNil]) and:
>
>should be
>
> [(Module root moduleDefining:
>nameSym) isNil]) and:
>
>If you want to see this in action, before you make the change, try
>
> Morph new uniqueNameForReference
>
>Do this once and you get #Morph. It will fail the second time
>because the name #Morph now refers to the instance of Morph created
>in the first test. Needless to say, don't do this on an image you
>care about.
>
>Cheers,
>Bob
More information about the Squeak-dev
mailing list
|