[squeak-dev] [Bug][5.2beta][Test] menu 'method source with it' causes error in DecompilerConstructor object

Chris Muller asqueaker at gmail.com
Fri Sep 7 20:39:19 UTC 2018


Hi Hannes,

It works for me.  It looks like you're not dealing with a stock trunk image...
________
CompiledMethod>>getSourceFor:in:
        Receiver: (Player217>>nil "a CompiledMethod(1568738)")
        Arguments and temporary variables:
                selector:       nil
                class:  Player217
                trailer:        a CompiledMethodTrailer
                source:         nil
                namesString:    nil
                code:   nil
        Receiver's instance variables:
(Player217>>nil "a CompiledMethod(1568738)")
_______

 - Chris

On Fri, Sep 7, 2018 at 1:44 AM H. Hirzel <hannes.hirzel at gmail.com> wrote:
>
> Hello
>
> A manual test case which fails:
>
> 1) I open a workspace
> 2) I add and select the text
>       previous project
> 3) I choose the menu 'method source with it'
>
> Result is that I get an error in
>
> DecompilerConstructor>>
> codeMethod: selector block: block tempVars: vars primitive: primitive
> class: class
>
>
> Stack trace below
>
> --Hannes
>
> --------------------------------------------------------------------------------------------------------------------------------------
> 7 September 2018 8:40:44.650159 am
>
> VM: unix - Smalltalk
> Image: Squeak5.2alpha [latest update: #18185]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir /home/user24/Documents/Squeak5.2/Squeak5.2alpha-18185-32bit-All-in-One.app/Contents/Resources
> Trusted Dir /home/user24/Documents/Squeak5.2/Squeak5.2alpha-18185-32bit-All-in-One.app/Contents/Resources/secure
> Untrusted Dir /home/user24/Documents/Squeak5.2/Squeak5.2alpha-18185-32bit-All-in-One.app/Contents/Resources/My
> Squeak
>
> UndefinedObject(Object)>>doesNotUnderstand: #precedence
>         Receiver: nil
>         Arguments and temporary variables:
>                 aMessage:       precedence
>                 exception:      MessageNotUnderstood: UndefinedObject>>precedence
>                 resumeValue:    nil
>         Receiver's instance variables:
> nil
>
> DecompilerConstructor>>codeMethod:block:tempVars:primitive:class:
>         Receiver: {a DecompilerConstructor}
>         Arguments and temporary variables:
>                 selector:       nil
>                 block:  {[[] repeat.
>         self getValueAtCursor doMenuItem: 'resist being picked up'...etc...
>                 vars:   #()
>                 primitive:      0
>                 class:  Player217
>                 blockNode:      nil
>                 selectorNode:   {<key==nil>}
>                 visibleTemps:   an OrderedCollection()
>                 invisibleTemps:         an OrderedCollection()
>                 arguments:      an OrderedCollection()
>                 temporaries:    an OrderedCollection()
>                 properties:     an AdditionalMethodState (1209644)
>                 onceCache:      nil
>         Receiver's instance variables:
>                 comment:        nil
>                 pc:     nil
>                 method:         (Player217>>nil "a CompiledMethod(1568738)")
>                 instVars:       #('dependents' 'costume' 'costumes')
>                 nArgs:  0
>                 literalValues:  {#timesRepeat: . #getCount . #doMenuItem: .
> #getValueAtCursor . ...etc...
>                 tempVars:       #()
>
> Decompiler>>decompile:in:method:using:
>         Receiver: a Decompiler
>         Arguments and temporary variables:
>                 aSelector:      nil
>                 aClass:         Player217
>                 aMethod:        (Player217>>nil "a CompiledMethod(1568738)")
>                 aConstructor:   {a DecompilerConstructor}
>                 block:  {[[] repeat.
>         self getValueAtCursor doMenuItem: 'resist being picked up'...etc...
>                 node:   nil
>         Receiver's instance variables:
>                 sender:         (Player217>>nil "a CompiledMethod(1568738)")
>                 pc:     63
>                 constructor:    {a DecompilerConstructor}
>                 method:         (Player217>>nil "a CompiledMethod(1568738)")
>                 instVars:       #(nil nil nil)
>                 tempVars:       #()
>                 constTable:     {{self} . {true} . {false} . {nil} . {-1} . {0} . {1} . {2}}
>                 stack:  an OrderedCollection()
>                 statements:     an OrderedCollection()
>                 lastPc:         62
>                 exit:   63
>                 caseExits:      an OrderedCollection()
>                 lastJumpPc:     62
>                 lastReturnPc:   -1
>                 limit:  63
>                 hasValue:       false
>                 blockStackBase:         nil
>                 numLocalTemps:  0
>                 blockStartsToTempVars:  nil
>                 tempVarCount:   0
>                 lastJumpIfPcStack:      an OrderedCollection()
>                 tempReadCounts:         a Dictionary()
>
> Decompiler>>decompile:in:method:
>         Receiver: a Decompiler
>         Arguments and temporary variables:
>                 aSelector:      nil
>                 aClass:         Player217
>                 aMethod:        (Player217>>nil "a CompiledMethod(1568738)")
>         Receiver's instance variables:
>                 sender:         (Player217>>nil "a CompiledMethod(1568738)")
>                 pc:     63
>                 constructor:    {a DecompilerConstructor}
>                 method:         (Player217>>nil "a CompiledMethod(1568738)")
>                 instVars:       #(nil nil nil)
>                 tempVars:       #()
>                 constTable:     {{self} . {true} . {false} . {nil} . {-1} . {0} . {1} . {2}}
>                 stack:  an OrderedCollection()
>                 statements:     an OrderedCollection()
>                 lastPc:         62
>                 exit:   63
>                 caseExits:      an OrderedCollection()
>                 lastJumpPc:     62
>                 lastReturnPc:   -1
>                 limit:  63
>                 hasValue:       false
>                 blockStackBase:         nil
>                 numLocalTemps:  0
>                 blockStartsToTempVars:  nil
>                 tempVarCount:   0
>                 lastJumpIfPcStack:      an OrderedCollection()
>                 tempReadCounts:         a Dictionary()
>
> CompiledMethod>>getSourceFor:in:
>         Receiver: (Player217>>nil "a CompiledMethod(1568738)")
>         Arguments and temporary variables:
>                 selector:       nil
>                 class:  Player217
>                 trailer:        a CompiledMethodTrailer
>                 source:         nil
>                 namesString:    nil
>                 code:   nil
>         Receiver's instance variables:
> (Player217>>nil "a CompiledMethod(1568738)")
>
> CompiledMethod(CompiledCode)>>getSource
>         Receiver: (Player217>>nil "a CompiledMethod(1568738)")
>         Arguments and temporary variables:
>
>         Receiver's instance variables:
> (Player217>>nil "a CompiledMethod(1568738)")
>
> [] in [] in [] in SystemNavigation>>allMethodsWithSourceString:matchCase:
>         Receiver: a SystemNavigation
>         Arguments and temporary variables:
> <<error during printing>
>         Receiver's instance variables:
>                 browserClass:   nil
>                 hierarchyBrowserClass:  nil
>                 environment:    Smalltalk
>
> [] in [] in SystemNavigation>>allSelectorsAndMethodsDo:
>         Receiver: a SystemNavigation
>         Arguments and temporary variables:
>                 aBlock:         #script1
>                 behavior:       (Player217>>nil "a CompiledMethod(1568738)")
>                 selector:       Player217
>                 method:         [closure] in [] in [] in
> SystemNavigation>>allMethodsWithSourceString:matchCase:...etc...
>         Receiver's instance variables:
>                 browserClass:   nil
>                 hierarchyBrowserClass:  nil
>                 environment:    Smalltalk
>
> MethodDictionary>>keysAndValuesDo:
>         Receiver: a MethodDictionary(#script1->(Player217>>nil "a
> CompiledMethod(1568738)") )
>         Arguments and temporary variables:
>                 aBlock:         [closure] in [] in SystemNavigation>>allSelectorsAndMethodsDo:
>                 key:    #script1
>                 i:      8
>                 iLimiT:         32
>         Receiver's instance variables:
>                 tally:  1
>                 array:  {nil . nil . nil . nil . nil . nil . nil . (Player217>>nil
> "a CompiledMethod...etc...
>
> Player217 class(Behavior)>>selectorsAndMethodsDo:
>         Receiver: Player217
>         Arguments and temporary variables:
>                 selectorAndMethodBlock:         [closure] in [] in
> SystemNavigation>>allSelectorsAndMethodsDo:...etc...
>         Receiver's instance variables:
>                 superclass:     Player
>                 methodDict:     a MethodDictionary(#script1->(Player217>>nil "a
> CompiledMethod(1568...etc...
>                 format:         65539
>                 instanceVariables:      nil
>                 organization:   ('scripts' script1)
>
>                 subclasses:     nil
>                 name:   #Player217
>                 classPool:      nil
>                 sharedPools:    nil
>                 environment:    Smalltalk
>                 category:       #UserObjects
>                 scripts:        an IdentityDictionary(#script1->A UniclassScript -
> selector: #script1 ...etc...
>                 slotInfo:       an IdentityDictionary()
>                 variableDocks:  <<error during printing>>
>
> [] in SystemNavigation>>allSelectorsAndMethodsDo:
>         Receiver: a SystemNavigation
>         Arguments and temporary variables:
>                 aBlock:         Player217
>                 behavior:       [closure] in [] in [] in
> SystemNavigation>>allMethodsWithSourceString:matchCase:...etc...
>         Receiver's instance variables:
>                 browserClass:   nil
>                 hierarchyBrowserClass:  nil
>                 environment:    Smalltalk
>
> [] in SystemNavigation>>allBehaviorsDo:
>         Receiver: a SystemNavigation
>         Arguments and temporary variables:
>                 aBlock:         Player217
>                 class:  [closure] in SystemNavigation>>allSelectorsAndMethodsDo:
>         Receiver's instance variables:
>                 browserClass:   nil
>                 hierarchyBrowserClass:  nil
>                 environment:    Smalltalk
>
> [] in Environment>>allClassesAndTraitsDo:
>         Receiver: Smalltalk
>         Arguments and temporary variables:
>                 aBlock:         #Player217
>                 key:    Player217
>                 value:  [closure] in SystemNavigation>>allBehaviorsDo:
>         Receiver's instance variables:
>                 info:   SmalltalkInfo
>                 declarations:   an IdentityDictionary(size 2732)
>                 bindings:       an IdentityDictionary(size 2732)
>                 undeclared:     a WeakIdentityDictionary()
>                 policies:       {a BindingPolicy . a BindingPolicy}
>                 observers:      an IdentitySet(EnvironmentForUniClass)
>
> [] in IdentityDictionary(Dictionary)>>keysAndValuesDo:
>         Receiver: an IdentityDictionary(size 2732)
>         Arguments and temporary variables:
>                 aBlock:         #Player217=>Player217
>                 assoc:  [closure] in Environment>>allClassesAndTraitsDo:
>         Receiver's instance variables:
>                 tally:  2732
>                 array:  {#ConnectionClosed=>ConnectionClosed .
> #UTF8TextConverterTest=>UTF8TextConverterTest...etc...
>
> IdentityDictionary(Dictionary)>>associationsDo:
>         Receiver: an IdentityDictionary(size 2732)
>         Arguments and temporary variables:
>                 aBlock:         [closure] in IdentityDictionary(Dictionary)>>keysAndValuesDo:
>                 element:        #Player217=>Player217
>                 index:  2628
>                 indexLimiT:     3727
>         Receiver's instance variables:
>                 tally:  2732
>                 array:  {#ConnectionClosed=>ConnectionClosed .
> #UTF8TextConverterTest=>UTF8TextConverterTest...etc...
>
> IdentityDictionary(Dictionary)>>keysAndValuesDo:
>         Receiver: an IdentityDictionary(size 2732)
>         Arguments and temporary variables:
>                 aBlock:         [closure] in Environment>>allClassesAndTraitsDo:
>         Receiver's instance variables:
>                 tally:  2732
>                 array:  {#ConnectionClosed=>ConnectionClosed .
> #UTF8TextConverterTest=>UTF8TextConverterTest...etc...
>
> Environment>>allClassesAndTraitsDo:
>         Receiver: Smalltalk
>         Arguments and temporary variables:
>                 aBlock:         [closure] in SystemNavigation>>allBehaviorsDo:
>         Receiver's instance variables:
>                 info:   SmalltalkInfo
>                 declarations:   an IdentityDictionary(size 2732)
>                 bindings:       an IdentityDictionary(size 2732)
>                 undeclared:     a WeakIdentityDictionary()
>                 policies:       {a BindingPolicy . a BindingPolicy}
>                 observers:      an IdentitySet(EnvironmentForUniClass)
>
> SystemNavigation>>allBehaviorsDo:
>         Receiver: a SystemNavigation
>         Arguments and temporary variables:
>                 aBlock:         [closure] in SystemNavigation>>allSelectorsAndMethodsDo:
>         Receiver's instance variables:
>                 browserClass:   nil
>                 hierarchyBrowserClass:  nil
>                 environment:    Smalltalk
>
> SystemNavigation>>allSelectorsAndMethodsDo:
>         Receiver: a SystemNavigation
>         Arguments and temporary variables:
>                 aBlock:         [closure] in [] in [] in
> SystemNavigation>>allMethodsWithSourceString:matchCase:...etc...
>         Receiver's instance variables:
>                 browserClass:   nil
>                 hierarchyBrowserClass:  nil
>                 environment:    Smalltalk
>
>
> --- The full stack ---
> UndefinedObject(Object)>>doesNotUnderstand: #precedence
> DecompilerConstructor>>codeMethod:block:tempVars:primitive:class:
> Decompiler>>decompile:in:method:using:
> Decompiler>>decompile:in:method:
> CompiledMethod>>getSourceFor:in:
> CompiledMethod(CompiledCode)>>getSource
> [] in [] in [] in SystemNavigation>>allMethodsWithSourceString:matchCase:
> [] in [] in SystemNavigation>>allSelectorsAndMethodsDo:
> MethodDictionary>>keysAndValuesDo:
> Player217 class(Behavior)>>selectorsAndMethodsDo:
> [] in SystemNavigation>>allSelectorsAndMethodsDo:
> [] in SystemNavigation>>allBehaviorsDo:
> [] in Environment>>allClassesAndTraitsDo:
> [] in IdentityDictionary(Dictionary)>>keysAndValuesDo:
> IdentityDictionary(Dictionary)>>associationsDo:
> IdentityDictionary(Dictionary)>>keysAndValuesDo:
> Environment>>allClassesAndTraitsDo:
> SystemNavigation>>allBehaviorsDo:
> SystemNavigation>>allSelectorsAndMethodsDo:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> [] in [] in SystemNavigation>>allMethodsWithSourceString:matchCase:
> [] in [] in MorphicUIManager>>displayProgress:at:from:to:during:
> BlockClosure>>on:do:
> [] in MorphicUIManager>>displayProgress:at:from:to:during:
> BlockClosure>>ensure:
> MorphicUIManager>>displayProgress:at:from:to:during:
> ProgressInitiationException>>defaultResumeValue
> ProgressInitiationException(Exception)>>resume
> ProgressInitiationException>>defaultAction
> UndefinedObject>>handleSignal:
> Context>>handleSignal:
> ProgressInitiationException(Exception)>>signal
> ProgressInitiationException>>display:at:from:to:during:
> ProgressInitiationException class>>display:at:from:to:during:
> ByteString(String)>>displayProgressAt:from:to:during:
> ByteString(String)>>displayProgressFrom:to:during:
> [] in SystemNavigation>>allMethodsWithSourceString:matchCase:
> BlockClosure>>on:do:
> CurrentReadOnlySourceFiles class>>cacheDuring:
> SystemNavigation>>allMethodsWithSourceString:matchCase:
> SystemNavigation>>browseMethodsWithSourceString:
> SmalltalkEditor(TextEditor)>>methodSourceContainingIt
> [] in PluggableTextMorphPlus(PluggableTextMorph)>>methodSourceContainingIt
> TextMorphForEditView(TextMorph)>>handleEdit:
> PluggableTextMorphPlus(PluggableTextMorph)>>handleEdit:
> PluggableTextMorphPlus(PluggableTextMorph)>>methodSourceContainingIt
> Workspace(StringHolder)>>perform:orSendTo:
> [] in MenuItemMorph>>invokeWithEvent:
> BlockClosure>>ensure:
> CursorWithMask(Cursor)>>showWhile:
> MenuItemMorph>>invokeWithEvent:
> MenuItemMorph>>mouseUp:
> MenuItemMorph>>handleMouseUp:
> MouseButtonEvent>>sentTo:
> MenuItemMorph(Morph)>>handleEvent:
> MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph:
> MorphicEventDispatcher>>dispatchDefault:with:
> MorphicEventDispatcher>>dispatchEvent:with:
> MenuItemMorph(Morph)>>processEvent:using:
> [] in MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf:
> Array(SequenceableCollection)>>do:
> MenuMorph(Morph)>>submorphsDo:
> -- and more not shown --
>


More information about the Squeak-dev mailing list