Hello, I'm running pharo 4 and I'm having a problem. I recently renamed a class using the rename: menu item in the standard system browser (I believe it's called Nautilus) and now I am getting uncaught exceptions whenever I add or remove a method (three debugger windows pop up). Here is the stack trace; any advice? Thank you. Lyn Author: LynHeadley Date: 2015-10-13T08:51:16.837987-07:00 UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass RGMetaclassDefinition>>realClass RGMethodDefinition(RGElementDefinition)>>realParent RGMethodDefinition(RGElementDefinition)>>realClass RGMethodDefinition>>methodClass ByteSymbol(Symbol)>>value: OrderedCollection>>collect: MessageBrowser>>buildHierarchyForMessages: MessageBrowser>>cacheHierarchyForClasses: MessageBrowser>>messages: [ (item methodClass notNil and: [ item methodClass isObsolete not ]) ifTrue: [ | sel text boolean | boolean := textModel hasUnacceptedEdits. boolean ifTrue: [ text := textModel pendingText ]. sel := listModel selectedItem. self messages: (listModel listItems add: item asFullRingDefinition; yourself). listModel setSelectedItem: sel. boolean ifTrue: [ textModel pendingText: text ] ] ] in MessageBrowser>>methodAdded: WorldState>>runStepMethodsIn: WorldMorph>>runStepMethods WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: WorldMorph>>doOneCycle [ [ World doOneCycle. Processor yield. false ] whileFalse: [ ] ] in MorphicUIManager>>spawnNewProcess [ self value. Processor terminateActive ] in BlockClosure>>newProcess |
I have no idea. But why don’t you move to Pharo 5?
Cheers, Alexandre > On Oct 13, 2015, at 4:36 PM, Lyn Headley <[hidden email]> wrote: > > Hello, > > I'm running pharo 4 and I'm having a problem. I recently renamed a > class using the rename: menu item in the standard system browser (I > believe it's called Nautilus) and now I am getting uncaught exceptions > whenever I add or remove a method (three debugger windows pop > up). Here is the stack trace; any advice? > > Thank you. > > Lyn > > Author: LynHeadley > Date: 2015-10-13T08:51:16.837987-07:00 > > UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass > RGMetaclassDefinition>>realClass > RGMethodDefinition(RGElementDefinition)>>realParent > RGMethodDefinition(RGElementDefinition)>>realClass > RGMethodDefinition>>methodClass > ByteSymbol(Symbol)>>value: > OrderedCollection>>collect: > MessageBrowser>>buildHierarchyForMessages: > MessageBrowser>>cacheHierarchyForClasses: > MessageBrowser>>messages: > [ > (item methodClass notNil and: [ item methodClass isObsolete not ]) > ifTrue: [ > | sel text boolean | > boolean := textModel hasUnacceptedEdits. > boolean > ifTrue: [ text := textModel pendingText ]. > sel := listModel selectedItem. > self > messages: > (listModel listItems > add: item asFullRingDefinition; > yourself). > listModel setSelectedItem: sel. > boolean > ifTrue: [ textModel pendingText: text ] ] ] in MessageBrowser>>methodAdded: > WorldState>>runStepMethodsIn: > WorldMorph>>runStepMethods > WorldState>>doOneCycleNowFor: > WorldState>>doOneCycleFor: > WorldMorph>>doOneCycle > [ > [ > World doOneCycle. > Processor yield. > false ] whileFalse: [ ] ] in MorphicUIManager>>spawnNewProcess > [ > self value. > Processor terminateActive ] in BlockClosure>>newProcess > -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. |
In reply to this post by laheadle
Hi Lyn
2015-10-13 21:36 GMT+02:00 Lyn Headley <[hidden email]>:
The error is from the MessageBrowser, the MessageBrowser registers itself for every class change (method added/removed) and tests if this added / removed message should be removed/added to its lists. Do you have any MessageBrowser open ? - a sendersOf or implementorsOf - if so, what search term is used in the browser (see window title) I tried to recreate this error but all I could get was a MessageBrowser with "nil" entries - no exception was thrown.
|
Hi Nicolai, I had a bunch of messagebrowsers open, mostly on various classes of Morphic and Montecello packages; nothing that was related to the class I renamed. Since I got your message I have closed the MessageBrowsers, and now there are only two debuggers triggered when I add or remove a method :-) It looks like WorldState's queue of deferredUIMessages contains a stale block or something... runStepMethodsIn: aWorld "Perform periodic activity inbetween event cycles" | queue nextInQueue| "If available dispatch some deferred UI Message" queue := self class deferredUIMessages. [(nextInQueue := queue nextOrNil) isNil] whileFalse: [ nextInQueue value <----- error ]. self runLocalStepMethodsIn: aWorld. "The multi-threaded global Transcript needs to be updated periodically and synchronously with the UI." Transcript stepGlobal. On Tue, Oct 13, 2015 at 2:52 PM, Nicolai Hess <[hidden email]> wrote:
|
In reply to this post by abergel
Because Pharo 4 is the latest release. Do I really have to defend this choice?
On Tue, Oct 13, 2015 at 2:32 PM, Alexandre Bergel <[hidden email]> wrote: I have no idea. But why don’t you move to Pharo 5? |
That sounds like a reasonable choice. Anyhow, with build 50384 I can
reproduce a similar error as follows... 1. Open fresh image. 2. World > Tools > Recent Messages 3. World > System Browser 4. Package pane > Add package > "AAPackage" 5. Class pane > Add class > "AAClass" 6. Protocol pane > no messages 7. Code pane > replace template with "test1" and save 8. Class pane > right-click "AAClass" > Rename > "AAClass2" > Ok 9. Code pane > replace "test1" with "test2" and save which produces... UndefinedObject(Object)>>doesNotUnderstand: #timeStamp RGMethodDefinition>>stamp [ self class parseTimestampFrom: self stamp default: DateAndTime epoch ] in RGMethodDefinition>>timeStamp [ self at: key put: aBlock value ] in IdentityDictionary(Dictionary)>>at:ifAbsentPut: IdentityDictionary(Dictionary)>>at:ifAbsent: IdentityDictionary(Dictionary)>>at:ifAbsentPut: RGMethodDefinition(RGDefinition)>>annotationNamed:ifAbsentPut: RGMethodDefinition>>timeStamp [ :a :b | a timeStamp > b timeStamp ] in RecentMessageList>>open Array(SequenceableCollection)>>mergeFirst:middle:last:into:by: Array(SequenceableCollection)>>mergeSortFrom:to:src:dst:by: OrderedCollection>>sort: OrderedCollection(SequenceableCollection)>>sorted: MultiColumnListModel(ListModel)>>items: MessageBrowser>>messages: ... WorldMorph>>doOneCycle So thanks Lyn, you found a bug. Did you get this same error, or just similar? Anyhow, it may be the same root cause. However I didn't create an issue in the tracker yet, since I wasn't sure what the title should be... anyone? cheers -ben On Wed, Oct 14, 2015 at 10:27 AM, Lyn Headley <[hidden email]> wrote: > Because Pharo 4 is the latest release. Do I really have to defend this > choice? > > On Tue, Oct 13, 2015 at 2:32 PM, Alexandre Bergel <[hidden email]> > wrote: >> >> I have no idea. But why don’t you move to Pharo 5? >> >> Cheers, >> Alexandre >> >> >> > On Oct 13, 2015, at 4:36 PM, Lyn Headley <[hidden email]> wrote: >> > >> > Hello, >> > >> > I'm running pharo 4 and I'm having a problem. I recently renamed a >> > class using the rename: menu item in the standard system browser (I >> > believe it's called Nautilus) and now I am getting uncaught exceptions >> > whenever I add or remove a method (three debugger windows pop >> > up). Here is the stack trace; any advice? >> > >> > Thank you. >> > >> > Lyn >> > >> > Author: LynHeadley >> > Date: 2015-10-13T08:51:16.837987-07:00 >> > >> > UndefinedObject(Object)>>doesNotUnderstand: #theMetaClass >> > RGMetaclassDefinition>>realClass >> > RGMethodDefinition(RGElementDefinition)>>realParent >> > RGMethodDefinition(RGElementDefinition)>>realClass >> > RGMethodDefinition>>methodClass >> > ByteSymbol(Symbol)>>value: >> > OrderedCollection>>collect: >> > MessageBrowser>>buildHierarchyForMessages: >> > MessageBrowser>>cacheHierarchyForClasses: >> > MessageBrowser>>messages: >> > [ >> > (item methodClass notNil and: [ item methodClass isObsolete not ]) >> > ifTrue: [ >> > | sel text boolean | >> > boolean := textModel hasUnacceptedEdits. >> > boolean >> > ifTrue: [ text := textModel pendingText ]. >> > sel := listModel selectedItem. >> > self >> > messages: >> > (listModel listItems >> > add: item asFullRingDefinition; >> > yourself). >> > listModel setSelectedItem: sel. >> > boolean >> > ifTrue: [ textModel pendingText: text ] ] ] in >> > MessageBrowser>>methodAdded: >> > WorldState>>runStepMethodsIn: >> > WorldMorph>>runStepMethods >> > WorldState>>doOneCycleNowFor: >> > WorldState>>doOneCycleFor: >> > WorldMorph>>doOneCycle >> > [ >> > [ >> > World doOneCycle. >> > Processor yield. >> > false ] whileFalse: [ ] ] in MorphicUIManager>>spawnNewProcess >> > [ >> > self value. >> > Processor terminateActive ] in BlockClosure>>newProcess >> > >> >> -- >> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: >> Alexandre Bergel http://www.bergel.eu >> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. >> >> >> >> > |
Hi Ben, Thanks for looking into this. I've gone through your steps on my machine (the image filename is Pharo-40622.image so I assume that is a build number) and I get the same error you do. As you say, the errors are not identical but hopefully this will lead to a fix for both. For continuing my work, I am going to install a fresh image, and hopefully I can still rename classes as long as there are no MessageBrowsers open. I'd be interested in hearing other workarounds. Lyn On Wed, Oct 14, 2015 at 7:01 AM, Ben Coman <[hidden email]> wrote: That sounds like a reasonable choice. Anyhow, with build 50384 I can |
2015-10-14 21:12 GMT+02:00 Lyn Headley <[hidden email]>:
Yes, I think this is just another error. I can now reproduce the first one too. 1. Open fresh 4.0 image (I have 40619) 2. World > System Browser 3. Package pane > Add package > "AAPackage" 4. Class pane > Add class > "AAClass" 5. Check "class-side" (!) 6. Protocol pane > no messages 7. Code pane, add and accept this method test1 self aaclasstestselector 8. select "aaclasstestselector" and choose "senders of it" from the code search context menu A MessageBrowser with one entry opens
9. Again in the SystemBrowser add another method on the class side 10. choose Class pane menu "Rename" 11. rename class AAClass to AAClass2 12. add a new method
|
On 14/10/15 22:23, Nicolai Hess wrote:
> I can now reproduce the first one too. > > 1. Open fresh 4.0 image (I have 40619) Confirmed in 40622 When having the senders window open, renaming the class results in some nil() instead of AAClass4 class (as yet unclassified) Stephan |
In reply to this post by laheadle
Thanks for reporting this. We should fix it.
I got annoyed too from time to time. We should make sure it is fixed in Pharo 50. Stef Le 13/10/15 21:36, Lyn Headley a
écrit :
|
Free forum by Nabble | Edit this page |