Hi all, some day until now everytime I run a test (written by me or not) I got this error message (in debug ) AnObsoleteSUnitNameResolver class>> classNamed (messageNotUnderstand). This class (AnObsoleteSunitNameResolver) cannot be found in SystemBrowser... As last thing before this I done a massive update by SqueakMap... Anyone has any idea about this or how to debug this error (as said I cannot find this class nowhere :( ) thanks in advance. -- Maurizio Boriani GPG key: 0xCC0FBF8F => E429 A37C 5259 763C 9DEE FC8B 5D61 C796 CC0F BF8F <= |
Maurizio Boriani puso en su mail :
> Hi all, > some day until now everytime I run a test (written by me or not) I got > this error message (in debug ) > > AnObsoleteSUnitNameResolver class>> classNamed (messageNotUnderstand). > > This class (AnObsoleteSunitNameResolver) cannot be found in SystemBrowser... > > As last thing before this I done a massive update by SqueakMap... > > Anyone has any idea about this or how to debug this error > (as said I cannot find this class nowhere :( ) > > thanks in advance. Save your image and in a backup copy you could do: SmalltalkImage current fixObsoleteReference If still have obsoletes , you could try: | outputStream arreglar| Transcript open. outputStream _ ReferenceStream fileNamed: 'clasesObsoletas.txt'. arreglar _ (Smalltalk obsoleteClasses). Transcript show: arreglar size;cr. 1 to: arreglar size do: [:c | (arreglar at:c ) allInstancesDo: [ :i | i becomeForward: nil]. outputStream nextPut: (arreglar at:c ) printString. Transcript show: (arreglar at:c ) printString ;cr. (arreglar at:c ) becomeForward: nil.]. outputStream close. 3 timesRepeat: [Smalltalk garbageCollect]. And beg you image don't blow :=) Edgar __________________________________________________ Preguntá. Respondé. Descubrí. Todo lo que querías saber, y lo que ni imaginabas, está en Yahoo! Respuestas (Beta). ¡Probalo ya! http://www.yahoo.com.ar/respuestas |
>>>>> "Lic" == Lic Edgar J De Cleene <[hidden email]> writes:
Lic> Save your image and in a backup copy you could do: ok Lic> SmalltalkImage current fixObsoleteReference this one drop out two classes Lic> If still have obsoletes , you could try: Lic> | outputStream arreglar| Transcript open. outputStream _ Lic> ReferenceStream fileNamed: 'clasesObsoletas.txt'. arreglar _ Lic> (Smalltalk obsoleteClasses). Transcript show: arreglar Lic> size;cr. 1 to: arreglar size do: [:c | (arreglar at:c ) Lic> allInstancesDo: [ :i | i becomeForward: nil]. outputStream Lic> nextPut: (arreglar at:c ) printString. Transcript show: Lic> (arreglar at:c ) printString ;cr. (arreglar at:c ) Lic> becomeForward: nil.]. outputStream close. 3 timesRepeat: Lic> [Smalltalk garbageCollect]. Lic> And beg you image don't blow :=) with this vm crash :( Lic> Edgar is there a method to remove only one Obsolete? (most of them are etoy related, I'm interested in having sunit working again...) Also, what's these obsolete stuff? thanks -- Maurizio Boriani GPG key: 0xCC0FBF8F => E429 A37C 5259 763C 9DEE FC8B 5D61 C796 CC0F BF8F <= |
In reply to this post by Edgar J. De Cleene
On 8/3/06, Lic. Edgar J. De Cleene <[hidden email]> wrote:
> Maurizio Boriani puso en su mail : > > > Hi all, > > some day until now everytime I run a test (written by me or not) I got > > this error message (in debug ) > > > > AnObsoleteSUnitNameResolver class>> classNamed (messageNotUnderstand). > > > > This class (AnObsoleteSunitNameResolver) cannot be found in SystemBrowser... > > > > As last thing before this I done a massive update by SqueakMap... > > > > Anyone has any idea about this or how to debug this error > > (as said I cannot find this class nowhere :( ) > > > > thanks in advance. > > Save your image and in a backup copy you could do: > > SmalltalkImage current fixObsoleteReference > > If still have obsoletes , you could try: > > | outputStream arreglar| > Transcript open. > outputStream _ ReferenceStream fileNamed: 'clasesObsoletas.txt'. > arreglar _ (Smalltalk obsoleteClasses). > Transcript show: arreglar size;cr. > 1 to: arreglar size do: [:c | (arreglar at:c ) > allInstancesDo: [ :i | i becomeForward: nil]. > outputStream nextPut: (arreglar at:c ) printString. > Transcript show: (arreglar at:c ) printString ;cr. > (arreglar at:c ) becomeForward: nil.]. > outputStream close. > 3 timesRepeat: [Smalltalk garbageCollect]. > > And beg you image don't blow :=) > > Edgar Removing of obsolete classes using becomeForward: nil is *very bad idea*. You have to find all references to obsoleteClasses manually, clean all source codes, recompile stricken methods and so on. -- Pavel |
>>>>> "Pavel" == Pavel Krivanek <[hidden email]> writes:
Pavel> Removing of obsolete classes using becomeForward: nil is Pavel> *very bad idea*. You have to find all references to Pavel> obsoleteClasses manually, clean all source codes, recompile Pavel> stricken methods and so on. how can I do that? If search for AnObsoleteSunitNameResolver I don't find anything... Pavel> -- Pavel thanks -- Maurizio Boriani GPG key: 0xCC0FBF8F => E429 A37C 5259 763C 9DEE FC8B 5D61 C796 CC0F BF8F <= |
On 8/4/06, Maurizio Boriani <[hidden email]> wrote:
> >>>>> "Pavel" == Pavel Krivanek <[hidden email]> writes: > > Pavel> Removing of obsolete classes using becomeForward: nil is > Pavel> *very bad idea*. You have to find all references to > Pavel> obsoleteClasses manually, clean all source codes, recompile > Pavel> stricken methods and so on. > > how can I do that? If search for AnObsoleteSunitNameResolver I don't > find anything... Using "SystemNavigation default obsoleteClasses" or "Smalltalk obsoleteClasses" you will see the list of obsoleteClasses. Then you can continue with the hunt. (SystemNavigation default obsoleteClasses detect: [:c | c name = #AnObsoleteSunitNameResolver]) allInstances inspect or then (Utilities pointersTo: (SystemNavigation default obsoleteClasses detect: [:c | c name = #AnObsoleteSunitNameResolver])) inspect or (in <= 3.8) (Smalltalk pointersTo: (Smalltalk obsoleteClasses detect: [:c | c name = #AnObsoleteSunitNameResolver])) inspect In the inspectors you can find next references using "object pointing to this value" -- Pavel |
>>>>> "Pavel" == Pavel Krivanek <[hidden email]> writes:
Pavel> Using "SystemNavigation default obsoleteClasses" or Pavel> "Smalltalk obsoleteClasses" you will see the list of Pavel> obsoleteClasses. Then you can continue with the hunt. [...] Pavel> or (in <= 3.8) Pavel> (Smalltalk pointersTo: (Smalltalk obsoleteClasses detect: Pavel> [:c | c name = #AnObsoleteSunitNameResolver])) inspect using this I got an Array inspector with seven elements Pavel> In the inspectors you can find next references using Pavel> "object pointing to this value" doing this I got new inspectors... but I cannot understand how culd I remove (or rebuild or... I don't know) this reference and subtisute them with newer. I suppose there are old references (to object which doesn't exists anymore in the system) which must be substituted with newer. How could I do that? Pavel> -- Pavel thanks very much for your support. -- Maurizio Boriani GPG key: 0xCC0FBF8F => E429 A37C 5259 763C 9DEE FC8B 5D61 C796 CC0F BF8F <= |
In reply to this post by Maurzio Boriani
Maurizio Boriani puso en su mail :
> with this vm crash : As Pavel said, is dangerous, and as I said ALWAYS do with a BACKUP image. > is there a method to remove only one Obsolete? (most of them are > etoy related, I'm interested in having sunit working again...) > > Also, what's these obsolete stuff? See what in your directory , the "bad cure" should produce a .txt file named clasesObsoletas.txt. So , here you could do a forensic analysis of if any obsolete go caught The complete is replace ' AnObsoleteUrl' by what was the last in your image (the last saved to clasesObsoletas.txt) | outputStream arreglar| Transcript open. outputStream _ ReferenceStream fileNamed: 'clasesObsoletas.txt'. arreglar _ (Smalltalk obsoleteClasses). Transcript show: arreglar size;cr. 1 to: arreglar size do: [:c | (arreglar at:c ) allInstancesDo: [ :i | i becomeForward: nil]. >>>(arreglar at:c ) printString = 'AnObsoleteUrl' ifTrue: [self halt]. outputStream nextPut: (arreglar at:c ) printString. Transcript show: (arreglar at:c ) printString ;cr. (arreglar at:c ) becomeForward: nil.]. outputStream close. 3 timesRepeat: [Smalltalk garbageCollect]. Instead of "nil" , you could put String new, but the image could blow also. Sometimes if you change to arreglar _ (Smalltalk obsoleteClasses) reverse, all obsolete goes. Or you could need put a self halt and do class by class It's black art, and we have different spells. I do many times and if the procedure completes, never have problem again. > Also, what's these obsolete stuff? Sounds like someone delete class badly, I don't know what Squeak are using you > SmalltalkImage current fixObsoleteReference > > this one drop out two classes So if you save in this point, you have a cleaner system . I afraid what the Pavel tip is more tedious but safer. Could send mail whit what Smalltalk obsoleteClasses prints ? Good luck Edgar __________________________________________________ Preguntá. Respondé. Descubrí. Todo lo que querías saber, y lo que ni imaginabas, está en Yahoo! Respuestas (Beta). ¡Probalo ya! http://www.yahoo.com.ar/respuestas |
In reply to this post by Maurzio Boriani
>>>>> "Maurizio" == Maurizio Boriani <[hidden email]> writes:
>>>>> "Pavel" == Pavel Krivanek <[hidden email]> writes: Pavel> Using "SystemNavigation default obsoleteClasses" or Pavel> "Smalltalk obsoleteClasses" you will see the list of Pavel> obsoleteClasses. Then you can continue with the hunt. Maurizio> [...] Pavel> or (in <= 3.8) Pavel> (Smalltalk pointersTo: (Smalltalk obsoleteClasses detect: Pavel> [:c | c name = #AnObsoleteSunitNameResolver])) inspect Maurizio> using this I got an Array inspector with seven elements Pavel> In the inspectors you can find next references using Pavel> "object pointing to this value" Maurizio> doing this I got new inspectors... but I cannot Maurizio> understand how culd I remove (or rebuild or... I don't Maurizio> know) this reference and subtisute them with newer. done :) all references are substituted with new ones :)) Maurizio> I suppose there are old references (to object which Maurizio> doesn't exists anymore in the system) which must be Maurizio> substituted with newer. How could I do that? using inspectors all works well :) Pavel> -- Pavel thanks very much for your support :)) bye -- Maurizio Boriani GPG key: 0xCC0FBF8F => E429 A37C 5259 763C 9DEE FC8B 5D61 C796 CC0F BF8F <= |
Free forum by Nabble | Edit this page |