[squeak-dev] Event Theatre in Object Catalog sparks DNU in 6.0-trunk

David T. Lewis lewis at mail.msen.com
Sun Feb 18 16:23:46 UTC 2018


I think I'm getting a bit lost on this, but here are my notes from things
I looked at this morning:

I found that opening the Sugar navigator bar ('Show Sugar navigator bar'
preference) makes the failure go away, but only because that preference
removes the global flaps.

The failure can be be easily reproduced with "EventRecordingSpace open"
with or without Sugar navigator bar open.

The underlying issue seems to be that Worldlet new (called from
EventRecordingSpace>>initialize) does not initialize the worldState instance
variable, which is required for later flap initialization.

Checking in an Etoys image, Worldlet new also answers an instance with
nil worldState, so the solution is not to change that initialization.

Unfortunately, evaluating EventRecordingSpace open in my Etoys image
crashes my VM, presumably because I am running a 64-bit VM and some plugin
for GSMCodec may not be updated for 64-bit. I'll need to either use SqueakJS,
or build a 32-bit interpreter VM, in order to step through this further
and see what is different in Squeak trunk versus Etoys development image.

Dave 


On Sun, Feb 18, 2018 at 06:58:14AM -0500, Bob Arning wrote:
> Except that #outermostWorldMorph for the Worldlet will return the World 
> where the <worldState> will be fine.
> 
> 
> On 2/17/18 10:54 PM, David T. Lewis wrote:
> >Thanks Bob,
> >
> >I see now the deprecated method, but I think something else is going wrong.
> >The original logic from privateOuterDisplayWorld is still present in the
> >most recent version of PasteUpMorph>>displayWorld. But worldState is nil
> >when this is called, and that seems to be the cause of the error.
> >
> >I can't follow up on it tonight, but I think I'll try to dig back through
> >some earlier versions of the trunk image and see if I can figure out where
> >it started failing.
> >
> >Dave
> >
> >
> >On Sat, Feb 17, 2018 at 09:36:25PM -0500, Bob Arning wrote:
> >>PasteUpMorph used to say:
> >>
> >>
> >>displayWorld
> >>
> >>?????? self outermostWorldMorph privateOuterDisplayWorld
> >>
> >>
> >>which would work if you remove the "self deprecated" from
> >>#privateOuterDisplayWorld
> >>
> >>
> >>On 2/17/18 5:05 PM, David T. Lewis wrote:
> >>>This is an interesting one.
> >>>
> >>>We have EventRecordingSpace class>>newStandalone that is trying to create
> >>>a new
> >>>instance "capable of standing by itself as a usable morph."
> >>>
> >>>This makes an instance with a contentArea that is a Worldlet. Presumabaly
> >>>that
> >>>Wordlet is supposed to be and "independent" thing too. But then we get to
> >>>Worldlet(PasteUpMorph)>>displayWorld, in which the Worldlet tries to use
> >>>its
> >>>worldState to display submorphs, but it has no worldState, so boom.
> >>>
> >>>It may be necessary to look at an older image to figure out where this is
> >>>going wrong.
> >>>
> >>>Dave
> >>>
> >>>p.s. Tim, thanks for posting this question :-)
> >>>
> >>>
> >>>On Sat, Feb 17, 2018 at 11:27:53AM -0800, Tm Jhnsn wrote:
> >>>>Hi all,
> >>>>
> >>>>I am really enjoying the latest versions of Squeak.
> >>>>
> >>>>In trying out 6.0-alpha with trunk updates, I found a DNU when doing
> >>>>normal Morphic tasks.  Sorry if this has already been reported.
> >>>>
> >>>>Should be repeatable:
> >>>>
> >>>>- open fresh image
> >>>>- make flaps appear (open a new Morphic project, or World menu -> flaps
> >>>>-> show shared tabs)
> >>>>- click Widgets
> >>>>- drag out an Object Catalog
> >>>>- click Multimedia
> >>>>
> >>>>Something is going on within the Event Theatre item's initialization.
> >>>>
> >>>>Seems to be that the "tutorial" Event Theatre Worldlet has a worldState
> >>>>instance variable which is nil, but it is being sent
> >>>>#displayWorld:submorphs: by PasteUpMorph>>#displayWorld.  Interestingly,
> >>>>Worldlet's class comments specifically suggest instances don't have 
> >>>>their
> >>>>own worldState.  :D
> >>>>
> >>>>Other buttons in the Object Catalog did not result in a DNU for me.
> >>>>
> >>>>...stack follows:
> >>>>
> >>>>UndefinedObject(Object)>>doesNotUnderstand: #displayWorld:submorphs:
> >>>>Worldlet(PasteUpMorph)>>displayWorld
> >>>>[] in Worldlet>>installFlaps
> >>>>OrderedCollection>>do:
> >>>>Worldlet>>installFlaps
> >>>>EventRecordingSpace>>addSuppliesFlap
> >>>>EventRecordingSpace>>initialize
> >>>>EventRecordingSpace(Morph)>>initializeToStandAlone
> >>>>EventRecordingSpace class(Morph class)>>newStandAlone
> >>>>PartsBin class>>thumbnailForQuad:color:
> >>>>[] in PartsBin>>listDirection:quadList:buttonClass:
> >>>>OrderedCollection>>do:
> >>>>PartsBin>>listDirection:quadList:buttonClass:
> >>>>PartsBin>>listDirection:quadList:
> >>>>ObjectsTool>>installQuads:fromButton:
> >>>>[] in ObjectsTool>>showCategory:fromButton:
> >>>>BlockClosure>>ensure:
> >>>>CursorWithMask(Cursor)>>showWhile:
> >>>>ObjectsTool>>showCategory:fromButton:
> >>>>SimpleButtonMorph>>doButtonAction
> >>>>SimpleButtonMorph>>mouseDown:
> >>>>SimpleButtonMorph(Morph)>>handleMouseDown:
> >>>>MouseButtonEvent>>sentTo:
> >>>>SimpleButtonMorph(Morph)>>handleEvent:
> >>>>MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph:
> >>>>[] in MorphicEventDispatcher>>dispatchMouseDown:with:
> >>>>BlockClosure>>ensure:
> >>>>MorphicEventDispatcher>>dispatchMouseDown:with:
> >>>>MorphicEventDispatcher>>dispatchEvent:with:
> >>>>SimpleButtonMorph(Morph)>>processEvent:using:
> >>>>[] in MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf:
> >>>>Array(SequenceableCollection)>>do:
> >>>>AlignmentMorph(Morph)>>submorphsDo:
> >>>>MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf:
> >>>>MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph:
> >>>>[] in MorphicEventDispatcher>>dispatchMouseDown:with:
> >>>>BlockClosure>>ensure:
> >>>>MorphicEventDispatcher>>dispatchMouseDown:with:
> >>>>MorphicEventDispatcher>>dispatchEvent:with:
> >>>>AlignmentMorph(Morph)>>processEvent:using:
> >>>>[] in MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf:
> >>>>Array(SequenceableCollection)>>do:
> >>>>ObjectsTool(Morph)>>submorphsDo:
> >>>>MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf:
> >>>>MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph:
> >>>>[] in MorphicEventDispatcher>>dispatchMouseDown:with:
> >>>>BlockClosure>>ensure:
> >>>>MorphicEventDispatcher>>dispatchMouseDown:with:
> >>>>MorphicEventDispatcher>>dispatchEvent:with:
> >>>>ObjectsTool(Morph)>>processEvent:using:
> >>>>[] in MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf:
> >>>>Array(SequenceableCollection)>>do:
> >>>>PasteUpMorph(Morph)>>submorphsDo:
> >>>>MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf:
> >>>>MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph:
> >>>>[] in MorphicEventDispatcher>>dispatchMouseDown:with:
> >>>>BlockClosure>>ensure:
> >>>>MorphicEventDispatcher>>dispatchMouseDown:with:
> >>>>MorphicEventDispatcher>>dispatchEvent:with:
> >>>>PasteUpMorph(Morph)>>processEvent:using:
> >>>>[] in PasteUpMorph>>processEvent:using:
> >>>>BlockClosure>>ensure:
> >>>>PasteUpMorph>>processEvent:using:
> >>>>PasteUpMorph(Morph)>>processEvent:
> >>>>[] in [] in [] in HandMorph>>sendEvent:focus:clear:
> >>>>BlockClosure>>ensure:
> >>>>MouseButtonEvent(MorphicEvent)>>becomeActiveDuring:
> >>>>[] in [] in HandMorph>>sendEvent:focus:clear:
> >>>>BlockClosure>>ensure:
> >>>>HandMorph>>becomeActiveDuring:
> >>>>[] in HandMorph>>sendEvent:focus:clear:
> >>>>BlockClosure>>ensure:
> >>>>PasteUpMorph>>becomeActiveDuring:
> >>>>HandMorph>>sendEvent:focus:clear:
> >>>>HandMorph>>sendMouseEvent:
> >>>>HandMorph>>handleEvent:
> >>>>HandMorph>>processEvents
> >>>>[] in WorldState>>doOneCycleNowFor:
> >>>>Array(SequenceableCollection)>>do:
> >>>>WorldState>>handsDo:
> >>>>WorldState>>doOneCycleNowFor:
> >>>>WorldState>>doOneCycleFor:
> >>>>PasteUpMorph>>doOneCycle
> >>>>[] in MorphicProject>>spawnNewProcess
> >>>>[] in BlockClosure>>newProcess
> >>>>
> >>>>
> >>>>Thanks,
> >>>>Tim
> >>>>
> >>>>
> >
> 

> 



More information about the Squeak-dev mailing list