ObjectTracer inheritance problem (was: Re: [squeak-dev] Tool problem: flattenHierarchy...)

Bert Freudenberg bert at freudenbergs.de
Fri Apr 29 21:18:15 UTC 2011


On 29.04.2011, at 14:28, Frank Shearar wrote:

> On 2011/04/29 17:38, Chris Muller wrote:
>> After some digging, I finally discovered the cause of this "tool"
>> problem is that there are two classes in the system which each have
>> ObjectTracer class (and, therefore its subclass, ObjectViewer class)
>> as a subclass.  The two superclasses are, Class and ProtoObject class.
>>  I guess Class should have ObjectTracer class removed as its other
>> subclass besides ProtoObject?
>> 
>> This is true even in our latest Squeak4.3alpha-11314 image on the ftp
>> server.   :-(
>> 
>> I see that Kernel-bf.565 made a change related in this area.
>> 
>> Any advice or action is greatly appreciated.
>> 
>>  - Chris
> 
> That matches my investigations: I've been trying to narrow down the problem, and knew it had _something_ to do with ObjectTracer.
> 
> _Not_ a pretty problem to chase down.
> 
> Prior to Kernel-bf.565 we have
> 
> ProtoObject subclass: #ObjectTracer
> 	instanceVariableNames: 'tracedObject recursionFlag'
> 	classVariableNames: ''
> 	poolDictionaries: ''
> 	category: 'Kernel-Objects'.
> ObjectTracer superclass: nil
> 
> and after we have
> 
> ProtoObject subclass: #ObjectTracer
> 	instanceVariableNames: 'tracedObject recursionFlag'
> 	classVariableNames: ''
> 	poolDictionaries: ''
> 	category: 'Kernel-Objects'
> 
> A bit beyond my Squeak knowledge!
> 
> (What's extra weird is that the Monticello diff shows what looks to be an _equivalent_ change, but not the _same_ change. To gitify:
> 
> --- nil subclass: #ObjectTracer
> +++ ProtoObject subclass: #ObjectTracer
> )
> 
> frank

My change made ObjectTracer a subclass of ProtoObject instead of nil so it inherits some essential methods to make it work. Maybe re-classifying subclasses of nil is broken?

- Bert -

> 
>> On Thu, Apr 28, 2011 at 1:21 PM, Frank Shearar
>> <frank.shearar at angband.za.org>  wrote:
>>> On 2011/04/28 16:47, Frank Shearar wrote:
>>>> 
>>>> On 2011/04/28 16:33, Chris Muller wrote:
>>>>> 
>>>>> Sorry, I can't work on this - to reproduce,
>>>>> 
>>>>> 1) browse implementors of chooseInstVarThenDo:
>>>>> 2) try to spawn a hierarchy from the opened MessageSet.
>>>>> 
>>>>> After a longish pause, a debugger opens; nil is getting into the
>>>>> hierarchy.
>>>> 
>>>> The long pause is understandable: ClassDescription generates a large
>>>> hierarchy, which you can examine by evaluating:
>>>> 
>>>> Browser new createHierarchyTreeOf: ClassDescription allSuperclasses,
>>>> {ClassDescription}, ClassDescription allSubclasses
>>>> 
>>>> I'll look at what I broke this afternoon/evening.
>>> 
>>> Huh. It's not actually Browser's fault. I have an image based on trunk
>>> #11196 where I did all my Browser hacking; loading the latest
>>> Tools(-cmm.345) spawns a ClassDescription hierarchy just fine.
>>> 
>>> That doesn't mean I know where the problem _is_, just one place where it is
>>> _not_.
>>> 
>>> (What might be really cool is if we could have something that, when
>>> something's added to a repository (like Trunk), generates a browseable
>>> history thing: lists of versions, diffs between versions, and so on. I don't
>>> care if that's in-image or in a web browser; it'd just make things like
>>> finding out the current problem a lot easier.)
>>> 
>>> frank
>>> 
>>> 
>> 
>> 
>> 
> 
> 





More information about the Squeak-dev mailing list