[squeak-dev] renaming a class causes invalid super pointer
CompiledMethod..!
Tobias Pape
Das.Linux at gmx.de
Thu Jan 15 23:11:06 UTC 2015
Hi,
On 15.01.2015, at 23:48, Chris Muller <ma.chris.m at gmail.com> wrote:
> I did a minor class-hierarchy refactoring today which resulted in a an
> invalid super pointer, resulting in a confusing image lock up due to
> tight recursion. The script, below, demonstrates the issue in trunk:
>
> Object compile: 'test ^''Hello from Object'''.
> (Object subclass: #MyClass instanceVariableNames: ''
> classVariableNames: '' poolDictionaries: '' category: 'Test') compile:
> 'test ^ super halt test, ''my super call lands on myself!'''.
> (Smalltalk classNamed: #MyClass) rename: 'MyNewAbstraction'.
> ((Smalltalk classNamed: #MyNewAbstraction) subclass: #MyClass
> instanceVariableNames: '' classVariableNames: '' poolDictionaries: ''
> category: 'Test').
> (Smalltalk classNamed: #MyNewAbstraction) new test
>
> But an existing method in the original MyClass had a call to super
> which now lands in itself, resulting in a tight recursion.
>
> The same script without creating the new subclass results in an
> instant VM crash (both interpreter 2357 and cog 3205):
>
> Object compile: 'test ^''Hello from Object'''.
> (Object subclass: #MyClass instanceVariableNames: ''
> classVariableNames: '' poolDictionaries: '' category: 'Test') compile:
> 'test ^ super halt test, ''my super call lands on itself!'''.
> (Smalltalk classNamed: #MyClass) rename: 'MyNewAbstraction'.
> (Smalltalk classNamed: #MyNewAbstraction) new test
>
> I even tried recompiling my entire class hierarchy which was renamed,
> but it didn't help.
>
> How can this be? I _KNOW_ I've used rename class many times in the
> past... A regression?
>
> I went all the way back to 4.2. The above script doesn't crash the VM
> in 4.2 or 4.3. Squeak 4.4 and 4.5 and trunk all crash by the above
> script.
>
> All of those images (4.2 -- trunk) had the problem with the super
> pointer back to itself..
I experienced this very problem in these minutes also.
Best
-Tobias
More information about the Squeak-dev
mailing list
|