[Bug][3.4gammaOne] Adding an instance var to ClassDescription does not work

Hannes Hirzel hannes.hirzel.squeaklist at bluewin.ch
Mon Feb 24 22:36:43 UTC 2003


In an attempt to emphasize that there is an important bug in 3.4gammaOne
I post this mail.
And I will try to summarize what has been said about this on the list.

Nathanael Schaerli raised the issue. Adding an instance variable to the
class ClassDescription 
is not possible anymore in 3.4. In version 3.2 (the offical one from
www.squeak.org) it worked.

The following test case illustrates this:

'From Squeak3.2 of 11 July 2002 [latest update: #4956] on 24 February
2003 at 4:22:07 pm'!
TestCase subclass: #BCCMaddInstVar
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'SUnit-Tests'!

!BCCMaddInstVar methodsFor: 'as yet unclassified' stamp: 'hjh 2/24/2003

	self assert: (ClassDescription isKindOf: ClassDescription).
	self assert: (Object isKindOf: Object).
	self deny: (OrderedCollection isKindOf: OrderedCollection).

	ClassDescription addInstVarName: 'myAdditionalInstVar'.

	ClassDescription removeInstVarName: 'myAdditionalInstVar'.! !

This test case needs something between 10..30 minutes to complete as all
classes are recompiled.

Recompiling 1810 of 1814 classes works successfully. However the class
ImageSegmentRootStub does not compile. 

Boris Gaertner would like to be able to add a variable to
ClassDescription to bring up 'Islands' to 3.4 He wrote:

>Date: Sun, 23 Feb 2003 00:14:02 +0100
>From: "Boris Gaertner" <Boris.Gaertner at gmx.net>
>Subject: Re: Islands for Squeak3.4 and beyond

>This change set contains a modification of class
>ClassDescription. An attempt is made to add an
>instance variable to that class. This requires recompilation
>of the entire system and in Squeak 3.4 it ends with a fatal error.

>We really really have to fix that problem but at this moment I do
>not have the time to do it. (It is not a simple thing to understand
>what is currently wrong. Things are additionally complicated by
>the fact that recompilation of the entire system is time consuming,
>so the testing alone requires many hours)

>Since Squeak 3.2 we had two change sets that substantially
>modified the ClassBuilder; these are change sets 4956 und 5092.

Possible next steps

Possible next steps

1) Take a pristine 3.2 image
2) Update the image until and including change set 4955
3) Run the above test.
4) If the test runs update to change set 4956
5) Run the test again. If it fails the error is in 4956.  -> 
6) Update to 5091
7) Run the test again.
8) Include the change set 5092
9) run the test again
10) These steps should shed some light were the bug was introduces.

We know as well that class ImageSegmentRootStub does not compile anymore
in 3.4

A remark: To run the test you have to click 'proceed' on two occasions.

I consider this to be an important bug. Without this bug fixed I woudn't
consider 3.4gammaOne to be a release candidate.

Hannes Hirzel


Screen snapshot:  (compressed with Squeak FileList 'compress' command)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CrashAfterAddingInstVarToClassDescription.bmp.gz
Type: application/octet-stream
Size: 39275 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20030224/ca3d7385/CrashAfterAddingInstVarToClassDescription.bmp.obj

More information about the Squeak-dev mailing list