That is normally a symptom of something updating the World morphs in a non-UI process. Morphs should only be changed from the UI process otherwise all kind of inconsistencies can happen. WorldState addDeferredUIMessage: can be used top safely perform actions but, for some applications, finer control is needed.
We have developed Squeak applications that are of necessity multi-process driven and were forced to modify WorldState to allow (mutex based) synchronisation with the event loop, thus avoiding the issues. Regards, Gary. ----- Original Message ----- From: "Brian Brown" <[email protected]> To: "An open mailing list to discuss any topics related to an open-sourceSmalltalk" <[email protected]> Sent: Monday, January 05, 2009 10:26 PM Subject: [Pharo-project] Next Issue ;-) > I'm trying to load cryptography 1.1 from the Universe browser. > Everything seems to go well, and the dialog completes and exits. > Immediately following that, whenever the mouse moves over any morphs, > you get the below traceback. the ivars leftMorphs, enteredMorphs, and > overMorphs are all nil, but are being treated as collections... > > > UndefinedObject(Object)>>doesNotUnderstand: #includes: > MouseOverHandler>>noticeMouseOver:event: > HandMorph>>noticeMouseOver:event: > OBTextMorphWithShout(Morph)>>handleMouseOver: > MouseEvent>>sentTo: > OBTextMorphWithShout(Morph)>>handleEvent: > MorphicEventDispatcher>>dispatchDefault:with: > MorphicEventDispatcher>>dispatchEvent:with: > OBTextMorphWithShout(Morph)>>processEvent:using: > MorphicEventDispatcher>>dispatchDefault:with: > MorphicEventDispatcher>>dispatchEvent:with: > TransformMorph(Morph)>>processEvent:using: > MorphicEventDispatcher>>dispatchDefault:with: > MorphicEventDispatcher>>dispatchEvent:with: > OBPluggableTextMorphWithShout(Morph)>>processEvent:using: > MorphicEventDispatcher>>dispatchDefault:with: > MorphicEventDispatcher>>dispatchEvent:with: > OBGroupingMorph(Morph)>>processEvent:using: > MorphicEventDispatcher>>dispatchDefault:with: > MorphicEventDispatcher>>dispatchEvent:with: > SystemWindow(Morph)>>processEvent:using: > MorphicEventDispatcher>>dispatchDefault:with: > MorphicEventDispatcher>>dispatchEvent:with: > PasteUpMorph(Morph)>>processEvent:using: > PasteUpMorph>>processEvent:using: > PasteUpMorph(Morph)>>processEvent: > HandMorph>>sendEvent:focus:clear: > HandMorph>>sendMouseEvent: > HandMorph>>handleEvent: > MouseOverHandler>>processMouseOver: > HandMorph>>handleEvent: > HandMorph>>processEvents > [] in WorldState>>doOneCycleNowFor: {[:h | ActiveHand := h. h > processEvents. ActiveHand := nil]} > Array(SequenceableCollection)>>do: > WorldState>>handsDo: > WorldState>>doOneCycleNowFor: > WorldState>>doOneCycleFor: > PasteUpMorph>>doOneCycle > [] in Project class>>spawnNewProcess {[[World doOneCycle. Processor > yield. false] whileFalse. nil]} > [] in BlockContext>>newProcess {[self value. Processor > terminateActive]} > > > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
