[squeak-dev] something happened to trunk?

Eliot Miranda eliot.miranda at gmail.com
Sun Jan 25 22:17:00 UTC 2015


Hi Chris,

On Jan 25, 2015, at 12:19 PM, Chris Muller <asqueaker at gmail.com> wrote:

> After updating Eliot's trunk46-spur image (2014-12-01) to latest Trunk
> code, I can no longer load my base "Ma-Installer" package.  If I don't
> update Eliots image with Trunk, then I have no problems whatsoever.
> 
> What broke?
> 
> Error: Metaclasses can only have one instance

It could be a become bug with class table management.  Can you let me have the image and instructions to try and reproduce the bug?


> 25 January 2015 2:12:26.263 pm
> 
> VM: unix - Smalltalk
> Image: Squeak4.5 [latest update: #14078]
> 
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir /home/cmm/Chris/dev/Squeak
> Trusted Dir /home/cmm/Chris/dev/Squeak/secure
> Untrusted Dir /home/cmm/Chris/dev/Squeak/My Squeak
> 
> Metaclass(Object)>>error:
> Receiver: MaInstaller class
> Arguments and temporary variables:
> aString: 'Metaclasses can only have one instance'
> Receiver's instance variables:
> superclass: Installer class
> methodDict: a MethodDictionary()
> format: 65548
> instanceVariables: #('localRepository')
> organization: ('as yet unclassified')
> 
> thisClass: MaInstaller
> 
> Metaclass(ClassDescription)>>updateInstances:from:isMeta:
> Receiver: MaInstaller class
> Arguments and temporary variables:
> oldInstances: {MaInstaller}
> oldClass: MaInstaller class
> isMeta: true
> map: nil
> variable: nil
> instSize: nil
> newInstances: nil
> i: nil
> iLimiT: nil
> Receiver's instance variables:
> superclass: Installer class
> methodDict: a MethodDictionary()
> format: 65548
> instanceVariables: #('localRepository')
> organization: ('as yet unclassified')
> 
> thisClass: MaInstaller
> 
> Metaclass(ClassDescription)>>updateInstancesFrom:
> Receiver: MaInstaller class
> Arguments and temporary variables:
> oldClass: MaInstaller class
> Receiver's instance variables:
> superclass: Installer class
> methodDict: a MethodDictionary()
> format: 65548
> instanceVariables: #('localRepository')
> organization: ('as yet unclassified')
> 
> thisClass: MaInstaller
> 
> [] in ClassBuilder>>update:to:
> Receiver: a ClassBuilder
> Arguments and temporary variables:
> oldClass: MaInstaller class
> newClass: MaInstaller class
> meta: true
> Receiver's instance variables:
> environ: Smalltalk
> classMap: nil
> instVarMap: an IdentityDictionary()
> progress: [closure] in SystemProgressMorph>>position:label:min:max:
> maxClassIndex: 1
> currentClassIndex: 1
> 
> BlockClosure>>ensure:
> Receiver: [closure] in ClassBuilder>>update:to:
> Arguments and temporary variables:
> aBlock: [closure] in BlockClosure>>valueUnpreemptively
> complete: nil
> returnValue: nil
> Receiver's instance variables:
> outerContext: ClassBuilder>>update:to:
> startpc: 75
> numArgs: 0
> 
> BlockClosure>>valueUnpreemptively
> Receiver: [closure] in ClassBuilder>>update:to:
> Arguments and temporary variables:
> activeProcess: a Process in nil
> oldPriority: 40
> result: nil
> Receiver's instance variables:
> outerContext: ClassBuilder>>update:to:
> startpc: 75
> numArgs: 0
> 
> ClassBuilder>>update:to:
> Receiver: a ClassBuilder
> Arguments and temporary variables:
> oldClass: MaInstaller class
> newClass: MaInstaller class
> meta: true
> Receiver's instance variables:
> environ: Smalltalk
> classMap: nil
> instVarMap: an IdentityDictionary()
> progress: [closure] in SystemProgressMorph>>position:label:min:max:
> maxClassIndex: 1
> currentClassIndex: 1
> 
> ClassBuilder>>mutate:to:
> Receiver: a ClassBuilder
> Arguments and temporary variables:
> oldClass: MaInstaller class
> newClass: MaInstaller class
> Receiver's instance variables:
> environ: Smalltalk
> classMap: nil
> instVarMap: an IdentityDictionary()
> progress: [closure] in SystemProgressMorph>>position:label:min:max:
> maxClassIndex: 1
> currentClassIndex: 1
> 
> [] in [] in ClassBuilder>>recompile:from:to:mutate:
> Receiver: a ClassBuilder
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> environ: Smalltalk
> classMap: nil
> instVarMap: an IdentityDictionary()
> progress: [closure] in SystemProgressMorph>>position:label:min:max:
> maxClassIndex: 1
> currentClassIndex: 1
> 
> BlockClosure>>on:do:
> Receiver: [closure] in [] in ClassBuilder>>recompile:from:to:mutate:
> Arguments and temporary variables:
> exception: CurrentReadOnlySourceFiles
> handlerAction: [closure] in CurrentReadOnlySourceFiles class>>cacheDuring:
> handlerActive: true
> Receiver's instance variables:
> outerContext: [] in ClassBuilder>>recompile:from:to:mutate:
> startpc: 161
> numArgs: 0
> 
> CurrentReadOnlySourceFiles class>>cacheDuring:
> Receiver: CurrentReadOnlySourceFiles
> Arguments and temporary variables:
> aBlock: [closure] in [] in ClassBuilder>>recompile:from:to:mutate:
> currentReadOnlySouceFiles: {an
> ExpandedSourceFileArray(MultiByteFileStream: '/u...etc...
> Receiver's instance variables:
> superclass: Exception
> methodDict: a MethodDictionary(#defaultAction->(CurrentReadOnlySourceFiles>>#de...etc...
> format: 65541
> instanceVariables: nil
> organization: ('handling' defaultAction)
> 
> subclasses: nil
> name: #CurrentReadOnlySourceFiles
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'Files-System'
> 
> [] in ClassBuilder>>recompile:from:to:mutate:
> Receiver: a ClassBuilder
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> environ: Smalltalk
> classMap: nil
> instVarMap: an IdentityDictionary()
> progress: [closure] in SystemProgressMorph>>position:label:min:max:
> maxClassIndex: 1
> currentClassIndex: 1
> 
> [] in ClassBuilder>>informUserDuring:
> Receiver: a ClassBuilder
> Arguments and temporary variables:
> aBlock: [closure] in SystemProgressMorph>>position:label:min:max:
> bar: [closure] in ClassBuilder>>recompile:from:to:mutate:
> Receiver's instance variables:
> environ: Smalltalk
> classMap: nil
> instVarMap: an IdentityDictionary()
> progress: [closure] in SystemProgressMorph>>position:label:min:max:
> maxClassIndex: 1
> currentClassIndex: 1
> 
> [] in [] in MorphicUIManager>>displayProgress:at:from:to:during:
> Receiver: a MorphicUIManager
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> toolBuilder: nil
> 
> BlockClosure>>on:do:
> Receiver: [closure] in [] in
> MorphicUIManager>>displayProgress:at:from:to:during:
> Arguments and temporary variables:
> exception: ProgressNotification
> handlerAction: [closure] in [] in
> MorphicUIManager>>displayProgress:at:from:to:...etc...
> handlerActive: true
> Receiver's instance variables:
> outerContext: [] in MorphicUIManager>>displayProgress:at:from:to:during:
> startpc: 86
> numArgs: 0
> 
> [] in MorphicUIManager>>displayProgress:at:from:to:during:
> Receiver: a MorphicUIManager
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> toolBuilder: nil
> 
> BlockClosure>>ensure:
> Receiver: [closure] in MorphicUIManager>>displayProgress:at:from:to:during:
> Arguments and temporary variables:
> aBlock: [closure] in MorphicUIManager>>displayProgress:at:from:to:during:
> complete: nil
> returnValue: nil
> Receiver's instance variables:
> outerContext: MorphicUIManager>>displayProgress:at:from:to:during:
> startpc: 79
> numArgs: 0
> 
> MorphicUIManager>>displayProgress:at:from:to:during:
> Receiver: a MorphicUIManager
> Arguments and temporary variables:
> titleString: ' '
> aPoint: 400 at 300
> minVal: 0
> maxVal: 0
> workBlock: [closure] in ClassBuilder>>informUserDuring:
> progress: [closure] in SystemProgressMorph>>position:label:min:max:
> result: #(nil)
> Receiver's instance variables:
> toolBuilder: nil
> 
> ProgressInitiationException>>defaultResumeValue
> Receiver: ProgressInitiationException:
> Arguments and temporary variables:
> 
> Receiver's instance variables:
> messageText: nil
> tag: nil
> signalContext: ProgressInitiationException(Exception)>>signal
> handlerContext: nil
> outerContext: nil
> workBlock: [closure] in ClassBuilder>>informUserDuring:
> maxVal: 0
> minVal: 0
> aPoint: 400 at 300
> progressTitle: ' '
> 
> 
> --- The full stack ---
> Metaclass(Object)>>error:
> Metaclass(ClassDescription)>>updateInstances:from:isMeta:
> Metaclass(ClassDescription)>>updateInstancesFrom:
> [] in ClassBuilder>>update:to:
> BlockClosure>>ensure:
> BlockClosure>>valueUnpreemptively
> ClassBuilder>>update:to:
> ClassBuilder>>mutate:to:
> [] in [] in ClassBuilder>>recompile:from:to:mutate:
> BlockClosure>>on:do:
> CurrentReadOnlySourceFiles class>>cacheDuring:
> [] in ClassBuilder>>recompile:from:to:mutate:
> [] in ClassBuilder>>informUserDuring:
> [] 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:
> MethodContext(ContextPart)>>handleSignal:
> MethodContext(ContextPart)>>handleSignal:
> MethodContext(ContextPart)>>handleSignal:
> MethodContext(ContextPart)>>handleSignal:
> ProgressInitiationException(Exception)>>signal
> ProgressInitiationException>>display:at:from:to:during:
> ProgressInitiationException class>>display:at:from:to:during:
> SystemProgressMorph class>>informUserAt:during:
> MorphicUIManager>>informUserDuring:
> ClassBuilder>>informUserDuring:
> ClassBuilder>>recompile:from:to:mutate:
> ClassBuilder>>class:instanceVariableNames:unsafe:
> ClassBuilder>>class:instanceVariableNames:
> Metaclass>>instanceVariableNames:
> MCClassDefinition>>load
> [] in [] in [] in [] in [] in MCPackageLoader>>basicLoad
> [] in [] in OrderedCollection(Collection)>>do:displayingProgress:every:
> OrderedCollection>>do:
> [] in OrderedCollection(Collection)>>do:displayingProgress:every:
> [] 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:
> MethodContext(ContextPart)>>handleSignal:
> MethodContext(ContextPart)>>handleSignal:
> MethodContext(ContextPart)>>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:
> OrderedCollection(Collection)>>do:displayingProgress:every:
> OrderedCollection(Collection)>>do:displayingProgress:
> [] in [] in [] in [] in MCPackageLoader>>basicLoad
> -- and more not shown --
> 


More information about the Squeak-dev mailing list