DNU when trying to update squeak-web-118

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

DNU when trying to update squeak-web-118

Stephen Davies-3
Hi,

I took a new squeak-web-118 image, opened the Universe Browser and
attempted to update the package "OmniBrowser" from version 0.337 to
0.342.

The result was a DNU for #packages sent to nil, the report is below:

I feel helpless to fix this; I believe it has to do with the Universe
Browser trying to refresh whilst the update is loading.  "parent" is
nil (?)

I'm hoping for two things - first is a fix so I can keep my image up
to date.  But the other: more important even - somebody to show me how
to get from this error to an understanding of what has gone wrong...

Thanks,
Steve


-------------------------------

Subject: [BUG]UndefinedObject(Object)>>doesNotUnderstand: #packages

17 May 2007 7:43:48 pm

VM: Mac OS - a SmalltalkImage
Image: Squeak3.9 [latest update: #7067]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /Applications/Squeak
Trusted Dir /Applications/Squeak
Untrusted Dir /Users/steve/Library/Preferences/Squeak/Internet/My Squeak

UndefinedObject(Object)>>doesNotUnderstand: #packages
        Receiver: nil
        Arguments and temporary variables:
                aMessage: packages
        Receiver's instance variables:
nil

OBMetaEdge>>nodesForParent:
        Receiver: #packages->package
        Arguments and temporary variables:
                aNode: nil
                ea: nil
        Receiver's instance variables:
                label: 'Packages'
                selector: #packages
                metaNode: package
#packageVersions->packageVersion


OBModalFilter>>nodesForParent:
        Receiver: an OBModalFilter
        Arguments and temporary variables:
                aNode: nil
        Receiver's instance variables:
                metaNode: universe
#categories->category
#packages->package
#statuses->status

                monitor: an OBColumn(OmniBrowser)
                selection: 2

OBColumn>>getChildren
        Receiver: an OBColumn(OmniBrowser)
        Arguments and temporary variables:

        Receiver's instance variables:
                panel: an OBColumnPanel
                filter: an OBModalFilter
                parent: nil
                children: an OrderedCollection(an OBUPackageNode an OBUPackageNode
an OBUPackag...etc...
                selection: 76


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #packages
OBMetaEdge>>nodesForParent:
OBModalFilter>>nodesForParent:
OBColumn>>getChildren
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OBColumn>>refreshAndSignal:
OBColumn>>refresh:
MessageSend>>valueWithArguments:
[] in ActionSequence>>valueWithArguments: {[:each | answer := each
valueWithArguments: anArray]}
ActionSequence(SequenceableCollection)>>do:
ActionSequence>>valueWithArguments:
[] in OBAnnouncer>>announce: {[:class :action | (ann isKindOf: class)
 ifTrue: [action valueWithArguments...]}
[] in IdentityDictionary(Dictionary)>>keysAndValuesDo: {[:assoc |
aBlock value: assoc key value: assoc value]}
IdentityDictionary(Set)>>do:
IdentityDictionary(Dictionary)>>associationsDo:
IdentityDictionary(Dictionary)>>keysAndValuesDo:
OBAnnouncer>>announce:
OBUBrowser(OBBrowser)>>announce:
OBUFixedButtonPanel(OBPanel)>>announce:
OBUInstallSelectionCommand(OBUCommand)>>refreshRequired
OBUInstallSelectionCommand>>execute
PluggableButtonMorph>>performAction
[] in PluggableButtonMorph>>mouseUp: {[:m | (m containsPoint: evt
cursorPoint)   ifTrue: [m performAction]]}
Array(SequenceableCollection)>>do:
PluggableButtonMorph>>mouseUp:
PluggableButtonMorph(Morph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
PluggableButtonMorph(Morph)>>handleEvent:
PluggableButtonMorph(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.
ActiveEvent := anEvent.  result := focusHolder     han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h
processEvents.  capturingGesture := capturingGest...]}
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]}
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

Re: DNU when trying to update squeak-web-118

Stephen Davies-3
On 17/05/07, Stephen Davies <[hidden email]> wrote:
> I feel helpless to fix this; I believe it has to do with the Universe
> Browser trying to refresh whilst the update is loading.  "parent" is
> nil (?)
>
> I'm hoping for two things - first is a fix so I can keep my image up
> to date.  But the other: more important even - somebody to show me how
> to get from this error to an understanding of what has gone wrong...

OK - I've had a little go with some success.

Who wants to critique my process:

- an argument "aNode" was nil when obviously it shouldn't have been.

- so I searched my way down the walkback, and eventually found that
getChildren in OBColumn had been called - it did "children := self
filter nodesForParent: self parent.".
But "self parent" returned nil.  Looking at the helpful class comment
(YAY!!) I concluded that the column was the leftmost in a browser,
hence had no parent.  Couldn't immediately follow what the code was
doing, but then ...

- I noticed that the name of the OBColumn was the name of a class
category in my system - so my problem wasn't with the Universe Browser
but with a class browser.

- So I restarted my image, closed the browser (and monticello for
luck) and tried again.

Unfortunately, I got another walkback for the same reason, only this
time the problem column was in the Universe Browser.  That has to be
open, so what now?

Scratching around in the "problem" OBColumn using inspector, browser
etc and I get a tentative theory by leap of guesswork - The OBColumn
thinks its name is "Selected packages (0)".  But the Universe Browser
still has "Selected packages (6)".  Maybe the mismatch is why there is
no parent?

So I restart my image again, then in the Universe Browser I switch the
radio buttons at the bottom away from "Statuses" to "Packages" and try
the install again

Fails again.

So I restart my image again, switch to Packages and highlight a
package and version and try the install again.

Still get the walkback.  Give up my theory about the name of the item.

This time the OBColumn is an OBColumn(AST).  That's the package
highlighted in the left-most column of the Universe Browser.

I note that the OBColumn "children" inst variable does contain an
OrderedCollection.  Using the inspector I see that it is the list of
packages shown in the leftmost pane of the Universe Browser.

Looks like getChildren is trying to refresh that list by asking the
filter to refetch the list fo r the same parent as the selected entry.

Seeing our entry doesn't have a parent, I decide to change getChildren
to just return the children as they are in that case.

Aargh - in trying to edit it I get a "primitive failed" - <primitive:
'primitiveCopyBits' module: 'BitBltPlugin'>  Something to do with
FreeType2 and Shout syntax colouring I think.  All my code become a
crossed out red box.

So I go to the Preference Browser and turn off "syntax highlighting as
you type".  We'll figure that out another day.

Insert "(self parent) ifNil [^children]." at the top.

Save, save the image and try again.

I get a warning "You are about to load new versions of the following
packages that have unsaved changes in the image.  If you continue, you
will lose these changes." for OmniBrowser.

Proceed...

Bugger - my change is overwritten and up comes the DNU again.

This time I edit the method right in the debug window.  Alt-S and then
"Restart" and "Proceed".

Yay - looks like I got there in the end.

Into the change sorter and move the OBColumn change into a more
meaningfully named changeset.

So how did I do negotiating the obstacle course ;-) ?

Steve
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

Re: Re: DNU when trying to update squeak-web-118

Michael Davies-2
On 17/05/07, Stephen Davies <[hidden email]> wrote:
>
> OK - I've had a little go with some success.
>
> Who wants to critique my process:
> [snip]

That looks like an object lesson in how to track down a bug in Squeak.
All you need to do now is file a bug report in mantis and upload a
changeset with your fix in it, and you'll have the makings of a great
blog post!
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners