Yes I finally figure it out... the problem was that I have created shortcuts referencing this classes (before deleting the classes)... and in the KMRepository there were references to the class inside a block, it took me a while to realise that the reference was inside the block because you can't inspect a block and see the code. I had to reset the KMRepository (close my workspace window, because I have references to the old shortcuts) and that's it. Searching for strong pointers was a great advice to see who was using these classes. Thanks all :D 2013/6/3 Mariano Martinez Peck <marianopeck@gmail.com>
Gisela, you can also get all objects in the system (#allObjectsDo:) whose "class name ='xxx". where xxx is the obsolete-version of the class name. Then you follow pointers... explore the object -> right button -> "explore pointers" or similar...
cheers,
On Mon, Jun 3, 2013 at 7:59 AM, Gisela Decuzzi <giseladecuzzi@gmail.com>wrote:
Hi, yes! Thanks for the help, searching it seems that I have shortcuts that has references to obsoletes instances, I will see how to remove them.
2013/6/3 Andres Valloud <avalloud@smalltalk.comcastbiz.net>
How can you have an instance of a class X if the class X doesn't "exist" anymore? The whole point here is that an object's class is also a strong reference to the class, and generally it's skipped by object reference finders. The way you find those is by sending allInstances (or equivalent) to the class.
On 6/3/13 2:19 , Sebastian Tleye wrote:
This happens when you have instances of the class and the class doesn't exists anymore. "Smalltalk fixObsoleteReferences" didn't completely work for me when i had that problem, i had to find out where those references were. I think looking for strong pointers of the ObsoleteClass would be a good start.
2013/6/3 Andres Valloud <avalloud@smalltalk.**comcastbiz.net<avalloud@smalltalk.comcastbiz.net> <mailto:avalloud@smalltalk.**comcastbiz.net<avalloud@smalltalk.comcastbiz.net>
Maybe they have instances. GC can't remove a class under its instances.
On 6/3/13 2:14 , Gisela Decuzzi wrote:
Hi, I'm trying to fix this, I have Obsolete classes in the system and I want to remove them, as long as I understood this is because this classes are gone and in some point someone is referencing them.
I do an extended search an get nothing, but still the obsolete classes are there... I don't find no one with references to it but if I run: SystemNavigation new obsoleteClassesselect: [ :each | each isAnonymous
not ] I get the problem classes.
I found this thread about a similar issue but don't know how to solve the problem http://lists.gforge.inria.fr/_**_pipermail/pharo-project/2011-* *__January/038824.html<http://lists.gforge.inria.fr/__pipermail/pharo-project/2011-__January/038824...>
<http://lists.gforge.inria.fr/**pipermail/pharo-project/2011-** January/038824.html<http://lists.gforge.inria.fr/pipermail/pharo-project/2011-January/038824.htm...>
Maybe someone could help me...
-- Mariano http://marianopeck.wordpress.com