GemTalk / Rowan

a new project/package manager for Smalltalk that supports FileTree and Tonel repositories, and is independent of Monticello and Metacello
MIT License
14 stars 7 forks source link

missing superclass leads to unxpected MNU, instead of expected error #621

Open dalehenrich opened 4 years ago

dalehenrich commented 4 years ago

RwGsPatchSet_V2 >> privateCreateClassFor: is implemented as:

privateCreateClassFor: aPatchSet
    | superclass |
    superclass := aPatchSet 
        superclassNamed: classDefinition superclassName 
        ifAbsent: [
            "https://github.com/GemTalk/Rowan/issues/471"
            "if we can't look up the class, try accessing the superclass from the class itself"
            (aPatchSet tempSymbols 
                at: classDefinition name asSymbol
                ifAbsent: [ self error: 'Class not found ', classDefinition className printString ]) superClass ].
    superclass
        ifNil: [ 
            classDefinition superclassName = 'nil'
                ifFalse: [ 
                    self
                        error:
                            'The class named ' , classDefinition superclassName printString
                                , ' does not exist.' ] ].
    ^ self privateCreateClassWithSuperclass: superclass

and I am getting the following error, when I expect to actually see an error message signalled, BEFORE the supreClass message is sent... This will happen if I try to load a class whose superclass does not exist ... need to be able to get a better error message.

Need a RwRowanSample9 test case for this.

Here's the full stack:

a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'superClass'

[1] MessageNotUnderstood >> defaultAction @2 line 3
[2] MessageNotUnderstood (AbstractException) >> _signalWith: @5 line 25
[3] MessageNotUnderstood (AbstractException) >> signal @2 line 47
[4] UndefinedObject (Object) >> doesNotUnderstand: @9 line 10
[5] UndefinedObject (Object) >> _doesNotUnderstand:args:envId:reason: @8 line 14
[6] [] in RwGsClassPatchV2 >> privateCreateClassFor: @22 line 10
[7] SymbolDictionary >> at:ifAbsent: @12 line 18
[8] [] in RwGsPatchSet_V2 >> superclassNamed:ifAbsent: @8 line 9
[9] Dictionary >> at:ifAbsent: @7 line 10
[10] RwGsPatchSet_V2 >> superclassNamed:ifAbsent: @4 line 6
[11] RwGsClassAdditionSymbolDictPatchV2 (RwGsClassPatchV2) >> privateCreateClassFor: @3 line 4
[12] RwGsClassAdditionSymbolDictPatchV2 (RwGsClassPatchV2) >> createClassFor: @2 line 4
[13] RwGsClassAdditionSymbolDictPatchV2 >> createClassFor: @2 line 2
[14] RwGsPatchSet_V2 >> createClassNamed:fromWorkList:andClassesByName: @10 line 15
[15] RwGsPatchSet_V2 >> createClassesFromWorklist:andClassesByName: @6 line 9
[16] RwGsPatchSet_V2 >> createNewClassesAndClassVersions @10 line 13
[17] RwGsPatchSet_V2 >> apply @9 line 12
[18] RwGsImage class >> applyModification_V2:visitorClass:instanceMigrator: @10 line 9
[19] RwGsImage class >> applyModification_V2:instanceMigrator: @15 line 17
[20] RwPrjLoadToolV2 >> _loadProjectSetDefinition:instanceMigrator: @16 line 21
[21] [] in RwPrjLoadToolV2 >> _doProjectSetLoad:instanceMigrator:originalProjectSet:processedClassNames: @7 line 5
[22] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[23] RwPrjLoadToolV2 >> _doProjectSetLoad:instanceMigrator:originalProjectSet:processedClassNames: @2 line 7
[24] RwPrjLoadToolV2 >> loadProjectSetDefinition:instanceMigrator: @3 line 7
[25] RwPrjLoadToolV2 >> loadProjectDefinition:platformConfigurationAttributes:instanceMigrator: @19 line 24
[26] RwPrjLoadToolV2 >> loadProjectDefinition: @5 line 3
[27] RwResolvedProjectV2 >> load @7 line 11
[28] RwResolvedProject (RwAbstractUnloadedProject) >> load @3 line 4
[29] Executed Code  @3 line 4
[30] GsNMethod >> _executeInContext: @1 line 9
[31] String >> evaluateInContext:symbolList: @3 line 10
[32] [] in RowanAnsweringService >> basicExec:context: @16 line 2
[33] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[34] RowanAnsweringService >> basicExec:context: @2 line 3
[35] RowanAnsweringService >> exec:context: @2 line 3
[36] RowanAnsweringService >> exec:context:inWindow: @2 line 2
[37] RowanAnsweringService (Object) >> perform:withArguments: @1 line 12
[38] RowanAnsweringService (RowanService) >> servicePerform:withArguments: @7 line 14
[39] [] in JadeServer >> updateFromSton: @35 line 13
[40] OrderedCollection (Collection) >> do: @5 line 10
[41] [] in JadeServer >> updateFromSton: @24 line 9
[42] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[43] [] in JadeServer >> updateFromSton: @12 line 14
[44] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[45] JadeServer64bit35 (JadeServer) >> updateFromSton: @2 line 23
[46] GsNMethod class >> _gsReturnToC @1 line 11
===============================================
[1] MessageNotUnderstood >> defaultAction @2 line 3
    receiver oop(211267841) == a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'superClass'

instance variables:
    -currGsHandler oop(20) == nil
    -envId oop(2) == 0
    -gsArgs oop(211290625) == anArray( )
    -gsDetails oop(20) == nil
    -gsNumber oop(16082) == 2010
    -gsReason oop(20) == nil
    -gsResumable oop(268) == true
    -gsStack oop(20) == nil
    -gsTrappable oop(268) == true
    -messageText oop(212841985) == 'a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #''superClass'''
    -receiver oop(20) == nil
    -selector oop(2787585) == #'superClass'
    -tag oop(20) == nil

temporary variables and parameters:
    result oop(20) == nil
----------------------------------------------------
[2] MessageNotUnderstood (AbstractException) >> _signalWith: @5 line 25
    receiver oop(211267841) == a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'superClass'

instance variables:
    -currGsHandler oop(20) == nil
    -envId oop(2) == 0
    -gsArgs oop(211290625) == anArray( )
    -gsDetails oop(20) == nil
    -gsNumber oop(16082) == 2010
    -gsReason oop(20) == nil
    -gsResumable oop(268) == true
    -gsStack oop(20) == nil
    -gsTrappable oop(268) == true
    -messageText oop(212841985) == 'a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #''superClass'''
    -receiver oop(20) == nil
    -selector oop(2787585) == #'superClass'
    -tag oop(20) == nil

temporary variables and parameters:
    inCextensionArg oop(20) == nil
    res oop(20) == nil
----------------------------------------------------
[3] MessageNotUnderstood (AbstractException) >> signal @2 line 47
    receiver oop(211267841) == a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'superClass'

instance variables:
    -currGsHandler oop(20) == nil
    -envId oop(2) == 0
    -gsArgs oop(211290625) == anArray( )
    -gsDetails oop(20) == nil
    -gsNumber oop(16082) == 2010
    -gsReason oop(20) == nil
    -gsResumable oop(268) == true
    -gsStack oop(20) == nil
    -gsTrappable oop(268) == true
    -messageText oop(212841985) == 'a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #''superClass'''
    -receiver oop(20) == nil
    -selector oop(2787585) == #'superClass'
    -tag oop(20) == nil

temporary variables and parameters:
----------------------------------------------------
[4] UndefinedObject (Object) >> doesNotUnderstand: @9 line 10
    receiver oop(20) == nil

instance variables:

temporary variables and parameters:
    aMessageDescriptor oop(213034241) == superClass
    args oop(211290625) == anArray( )
    ex oop(211267841) == a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand  #'superClass'
    sel oop(2787585) == #'superClass'
----------------------------------------------------
[5] UndefinedObject (Object) >> _doesNotUnderstand:args:envId:reason: @8 line 14
    receiver oop(20) == nil

instance variables:

temporary variables and parameters:
    anArray oop(211290625) == anArray( )
    aSmallInt oop(2) == 0
    aSymbol oop(2787585) == #'superClass'
    dnuKind oop(2) == 0
----------------------------------------------------
[6] [] in RwGsClassPatchV2 >> privateCreateClassFor: @22 line 10
    receiver oop(213043713) == anExecBlock0

instance variables:

temporary variables and parameters:
    aPatchSet oop(213043969) == aRwGsPatchSet_V2
    self oop(213042945) == aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord)
----------------------------------------------------
[7] SymbolDictionary >> at:ifAbsent: @12 line 18
    receiver oop(213044225) == aSymbolDictionary( #'Globals'->aSymbolDictionary( name: #'Globals' ), #'ErrorSymbols'->aSymbolDictionary( #'abortErrGarbageCollection'->3006, #'rtErrCantReturn'->2079, #'rtErrBadFormatSpec'->2196, #'a...

instance variables:
    -collisionLimit oop(20002) == 2500
    -numCollisions oop(11106) == 1388
    -numElements oop(11146) == 1393
    -tableSize oop(42) == 5

temporary variables and parameters:
    aBlock oop(213043713) == anExecBlock0
    aKey oop(32379905) == #'AbstractProgram'
    aSym oop(20) == nil
----------------------------------------------------
[8] [] in RwGsPatchSet_V2 >> superclassNamed:ifAbsent: @8 line 9
    receiver oop(213046529) == anExecBlock0

instance variables:

temporary variables and parameters:
    absentBlock oop(213043713) == anExecBlock0
    self oop(213043969) == aRwGsPatchSet_V2
    superclassName oop(32379905) == #'AbstractProgram'
----------------------------------------------------
[9] Dictionary >> at:ifAbsent: @7 line 10
    receiver oop(213046273) == aDictionary( )

instance variables:
    -count oop(2) == 0
    -emptySlotHint oop(66) == 8
    -numEmptySlots oop(58) == 7
    -tableSize oop(58) == 7
    -unused oop(20) == nil

temporary variables and parameters:
    aBlock oop(213046529) == anExecBlock0
    aKey oop(32379905) == #'AbstractProgram'
    anAssoc oop(20) == nil
----------------------------------------------------
[10] RwGsPatchSet_V2 >> superclassNamed:ifAbsent: @4 line 6
    receiver oop(213043969) == aRwGsPatchSet_V2

instance variables:
    -addedClasses oop(213048065) == aSet( aRwGsClassAdditionSymbolDictPatchV2(RwsTestSuiteSample), aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord), aRwGsClassAdditionSymbolDictPatchV2(RwsTestCaseSample))
    -addedMethods oop(213050625) == aSet( aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>usageExamples:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>compare:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTe...
    -addedPackages oop(213047041) == aSet( aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-GemStone-Scripts), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Core), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Samples))
    -addedProjects oop(213033985) == aSet( aRwGsProjectAdditionPatchV2(rowan_test_stats))
    -classesWithClassVariableChanges oop(213049857) == aSet( )
    -classesWithConstraintChanges oop(213050113) == aSet( )
    -classesWithNewVersions oop(213050369) == aSet( )
    -classesWithPropertyChanges oop(213049345) == aSet( )
    -classesWithSymbolDictionaryChanges oop(213049601) == aSet( )
    -createdClasses oop(213046273) == aDictionary( )
    -currentProjectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
    -deletedClasses oop(213048321) == aSet( )
    -deletedMethods oop(213050881) == aSet( )
    -deletedPackages oop(213047297) == aSet( )
    -deleteNewVersionMethods oop(213051137) == aSet( )
    -errors oop(213055233) == aSet( )
    -extendedClasses oop(213049089) == aSet( )
    -extendedMethods oop(213051649) == aSet( )
    -instanceMigrator oop(20) == nil
    -methodsNeedingRecompile oop(213052929) == aSet( )
    -methodsWithPropertyChanges oop(213052417) == aSet( )
    -movedClasses oop(213048577) == aSet( )
    -movedClassesMap oop(213048833) == aDictionary( )
    -movedMethods oop(213051393) == aSet( )
    -movedPackages oop(213047553) == aSet( )
    -projectsWithPropertyChanges oop(213047809) == aSet( )
    -tempSymbols oop(213044225) == aSymbolDictionary( #'Globals'->aSymbolDictionary( name: #'Globals' ), #'ErrorSymbols'->aSymbolDictionary( #'abortErrGarbageCollection'->3006, #'rtErrCantReturn'->2079, #'rtErrBadFormatSpec'->2196, #'a...

temporary variables and parameters:
    absentBlock oop(213043713) == anExecBlock0
    aName oop(213052161) == 'AbstractProgram'
    superclassName oop(32379905) == #'AbstractProgram'
----------------------------------------------------
[11] RwGsClassAdditionSymbolDictPatchV2 (RwGsClassPatchV2) >> privateCreateClassFor: @3 line 4
    receiver oop(213042945) == aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord)

instance variables:
    -classDefinition oop(213064705) == aRwClassDefinition for RwsTestStatsRecord
    -newClass oop(20) == nil
    -packageDefinition oop(213064961) == aRwPackageDefinition for RWSTestStats-GemStone-Scripts
    -projectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
    -symbolAssociation oop(20) == nil

temporary variables and parameters:
    aPatchSet oop(213043969) == aRwGsPatchSet_V2
    superclass oop(20) == nil
----------------------------------------------------
[12] RwGsClassAdditionSymbolDictPatchV2 (RwGsClassPatchV2) >> createClassFor: @2 line 4
    receiver oop(213042945) == aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord)

instance variables:
    -classDefinition oop(213064705) == aRwClassDefinition for RwsTestStatsRecord
    -newClass oop(20) == nil
    -packageDefinition oop(213064961) == aRwPackageDefinition for RWSTestStats-GemStone-Scripts
    -projectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
    -symbolAssociation oop(20) == nil

temporary variables and parameters:
    aPatchSet oop(213043969) == aRwGsPatchSet_V2
    createdClass oop(20) == nil
----------------------------------------------------
[13] RwGsClassAdditionSymbolDictPatchV2 >> createClassFor: @2 line 2
    receiver oop(213042945) == aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord)

instance variables:
    -classDefinition oop(213064705) == aRwClassDefinition for RwsTestStatsRecord
    -newClass oop(20) == nil
    -packageDefinition oop(213064961) == aRwPackageDefinition for RWSTestStats-GemStone-Scripts
    -projectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
    -symbolAssociation oop(20) == nil

temporary variables and parameters:
    aPatchSet oop(213043969) == aRwGsPatchSet_V2
----------------------------------------------------
[14] RwGsPatchSet_V2 >> createClassNamed:fromWorkList:andClassesByName: @10 line 15
    receiver oop(213043969) == aRwGsPatchSet_V2

instance variables:
    -addedClasses oop(213048065) == aSet( aRwGsClassAdditionSymbolDictPatchV2(RwsTestSuiteSample), aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord), aRwGsClassAdditionSymbolDictPatchV2(RwsTestCaseSample))
    -addedMethods oop(213050625) == aSet( aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>usageExamples:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>compare:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTe...
    -addedPackages oop(213047041) == aSet( aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-GemStone-Scripts), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Core), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Samples))
    -addedProjects oop(213033985) == aSet( aRwGsProjectAdditionPatchV2(rowan_test_stats))
    -classesWithClassVariableChanges oop(213049857) == aSet( )
    -classesWithConstraintChanges oop(213050113) == aSet( )
    -classesWithNewVersions oop(213050369) == aSet( )
    -classesWithPropertyChanges oop(213049345) == aSet( )
    -classesWithSymbolDictionaryChanges oop(213049601) == aSet( )
    -createdClasses oop(213046273) == aDictionary( )
    -currentProjectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
    -deletedClasses oop(213048321) == aSet( )
    -deletedMethods oop(213050881) == aSet( )
    -deletedPackages oop(213047297) == aSet( )
    -deleteNewVersionMethods oop(213051137) == aSet( )
    -errors oop(213055233) == aSet( )
    -extendedClasses oop(213049089) == aSet( )
    -extendedMethods oop(213051649) == aSet( )
    -instanceMigrator oop(20) == nil
    -methodsNeedingRecompile oop(213052929) == aSet( )
    -methodsWithPropertyChanges oop(213052417) == aSet( )
    -movedClasses oop(213048577) == aSet( )
    -movedClassesMap oop(213048833) == aDictionary( )
    -movedMethods oop(213051393) == aSet( )
    -movedPackages oop(213047553) == aSet( )
    -projectsWithPropertyChanges oop(213047809) == aSet( )
    -tempSymbols oop(213044225) == aSymbolDictionary( #'Globals'->aSymbolDictionary( name: #'Globals' ), #'ErrorSymbols'->aSymbolDictionary( #'abortErrGarbageCollection'->3006, #'rtErrCantReturn'->2079, #'rtErrBadFormatSpec'->2196, #'a...

temporary variables and parameters:
    className oop(213043201) == 'RwsTestStatsRecord'
    newClassesByName oop(213044481) == aDictionary( 'RwsTestStatsRecord'->aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord), 'RwsTestCaseSample'->aRwGsClassAdditionSymbolDictPatchV2(RwsTestCaseSample), 'RwsTestSuiteSample'->aRwGsClas...
    patch oop(213042945) == aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord)
    superclassName oop(213052161) == 'AbstractProgram'
    workList oop(213043457) == aSet( 'RwsTestSuiteSample', 'RwsTestCaseSample')
----------------------------------------------------
[15] RwGsPatchSet_V2 >> createClassesFromWorklist:andClassesByName: @6 line 9
    receiver oop(213043969) == aRwGsPatchSet_V2

instance variables:
    -addedClasses oop(213048065) == aSet( aRwGsClassAdditionSymbolDictPatchV2(RwsTestSuiteSample), aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord), aRwGsClassAdditionSymbolDictPatchV2(RwsTestCaseSample))
    -addedMethods oop(213050625) == aSet( aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>usageExamples:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>compare:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTe...
    -addedPackages oop(213047041) == aSet( aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-GemStone-Scripts), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Core), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Samples))
    -addedProjects oop(213033985) == aSet( aRwGsProjectAdditionPatchV2(rowan_test_stats))
    -classesWithClassVariableChanges oop(213049857) == aSet( )
    -classesWithConstraintChanges oop(213050113) == aSet( )
    -classesWithNewVersions oop(213050369) == aSet( )
    -classesWithPropertyChanges oop(213049345) == aSet( )
    -classesWithSymbolDictionaryChanges oop(213049601) == aSet( )
    -createdClasses oop(213046273) == aDictionary( )
    -currentProjectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
    -deletedClasses oop(213048321) == aSet( )
    -deletedMethods oop(213050881) == aSet( )
    -deletedPackages oop(213047297) == aSet( )
    -deleteNewVersionMethods oop(213051137) == aSet( )
    -errors oop(213055233) == aSet( )
    -extendedClasses oop(213049089) == aSet( )
    -extendedMethods oop(213051649) == aSet( )
    -instanceMigrator oop(20) == nil
    -methodsNeedingRecompile oop(213052929) == aSet( )
    -methodsWithPropertyChanges oop(213052417) == aSet( )
    -movedClasses oop(213048577) == aSet( )
    -movedClassesMap oop(213048833) == aDictionary( )
    -movedMethods oop(213051393) == aSet( )
    -movedPackages oop(213047553) == aSet( )
    -projectsWithPropertyChanges oop(213047809) == aSet( )
    -tempSymbols oop(213044225) == aSymbolDictionary( #'Globals'->aSymbolDictionary( name: #'Globals' ), #'ErrorSymbols'->aSymbolDictionary( #'abortErrGarbageCollection'->3006, #'rtErrCantReturn'->2079, #'rtErrBadFormatSpec'->2196, #'a...

temporary variables and parameters:
    className oop(213043201) == 'RwsTestStatsRecord'
    newClassesByName oop(213044481) == aDictionary( 'RwsTestStatsRecord'->aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord), 'RwsTestCaseSample'->aRwGsClassAdditionSymbolDictPatchV2(RwsTestCaseSample), 'RwsTestSuiteSample'->aRwGsClas...
    workList oop(213043457) == aSet( 'RwsTestSuiteSample', 'RwsTestCaseSample')
----------------------------------------------------
[16] RwGsPatchSet_V2 >> createNewClassesAndClassVersions @10 line 13
    receiver oop(213043969) == aRwGsPatchSet_V2

instance variables:
    -addedClasses oop(213048065) == aSet( aRwGsClassAdditionSymbolDictPatchV2(RwsTestSuiteSample), aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord), aRwGsClassAdditionSymbolDictPatchV2(RwsTestCaseSample))
    -addedMethods oop(213050625) == aSet( aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>usageExamples:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>compare:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTe...
    -addedPackages oop(213047041) == aSet( aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-GemStone-Scripts), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Core), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Samples))
    -addedProjects oop(213033985) == aSet( aRwGsProjectAdditionPatchV2(rowan_test_stats))
    -classesWithClassVariableChanges oop(213049857) == aSet( )
    -classesWithConstraintChanges oop(213050113) == aSet( )
    -classesWithNewVersions oop(213050369) == aSet( )
    -classesWithPropertyChanges oop(213049345) == aSet( )
    -classesWithSymbolDictionaryChanges oop(213049601) == aSet( )
    -createdClasses oop(213046273) == aDictionary( )
    -currentProjectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
    -deletedClasses oop(213048321) == aSet( )
    -deletedMethods oop(213050881) == aSet( )
    -deletedPackages oop(213047297) == aSet( )
    -deleteNewVersionMethods oop(213051137) == aSet( )
    -errors oop(213055233) == aSet( )
    -extendedClasses oop(213049089) == aSet( )
    -extendedMethods oop(213051649) == aSet( )
    -instanceMigrator oop(20) == nil
    -methodsNeedingRecompile oop(213052929) == aSet( )
    -methodsWithPropertyChanges oop(213052417) == aSet( )
    -movedClasses oop(213048577) == aSet( )
    -movedClassesMap oop(213048833) == aDictionary( )
    -movedMethods oop(213051393) == aSet( )
    -movedPackages oop(213047553) == aSet( )
    -projectsWithPropertyChanges oop(213047809) == aSet( )
    -tempSymbols oop(213044225) == aSymbolDictionary( #'Globals'->aSymbolDictionary( name: #'Globals' ), #'ErrorSymbols'->aSymbolDictionary( #'abortErrGarbageCollection'->3006, #'rtErrCantReturn'->2079, #'rtErrBadFormatSpec'->2196, #'a...

temporary variables and parameters:
    newClassesByName oop(213044481) == aDictionary( 'RwsTestStatsRecord'->aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord), 'RwsTestCaseSample'->aRwGsClassAdditionSymbolDictPatchV2(RwsTestCaseSample), 'RwsTestSuiteSample'->aRwGsClas...
    workList oop(213043457) == aSet( 'RwsTestSuiteSample', 'RwsTestCaseSample')
----------------------------------------------------
[17] RwGsPatchSet_V2 >> apply @9 line 12
    receiver oop(213043969) == aRwGsPatchSet_V2

instance variables:
    -addedClasses oop(213048065) == aSet( aRwGsClassAdditionSymbolDictPatchV2(RwsTestSuiteSample), aRwGsClassAdditionSymbolDictPatchV2(RwsTestStatsRecord), aRwGsClassAdditionSymbolDictPatchV2(RwsTestCaseSample))
    -addedMethods oop(213050625) == aSet( aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>usageExamples:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTestStatsRecord>>compare:, aRwGsMethodAdditionSymbolDictPatchV2 for RwsTe...
    -addedPackages oop(213047041) == aSet( aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-GemStone-Scripts), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Core), aRwGsPackageAdditionSymbolDictPatchV2(RWSTestStats-Samples))
    -addedProjects oop(213033985) == aSet( aRwGsProjectAdditionPatchV2(rowan_test_stats))
    -classesWithClassVariableChanges oop(213049857) == aSet( )
    -classesWithConstraintChanges oop(213050113) == aSet( )
    -classesWithNewVersions oop(213050369) == aSet( )
    -classesWithPropertyChanges oop(213049345) == aSet( )
    -classesWithSymbolDictionaryChanges oop(213049601) == aSet( )
    -createdClasses oop(213046273) == aDictionary( )
    -currentProjectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
    -deletedClasses oop(213048321) == aSet( )
    -deletedMethods oop(213050881) == aSet( )
    -deletedPackages oop(213047297) == aSet( )
    -deleteNewVersionMethods oop(213051137) == aSet( )
    -errors oop(213055233) == aSet( )
    -extendedClasses oop(213049089) == aSet( )
    -extendedMethods oop(213051649) == aSet( )
    -instanceMigrator oop(20) == nil
    -methodsNeedingRecompile oop(213052929) == aSet( )
    -methodsWithPropertyChanges oop(213052417) == aSet( )
    -movedClasses oop(213048577) == aSet( )
    -movedClassesMap oop(213048833) == aDictionary( )
    -movedMethods oop(213051393) == aSet( )
    -movedPackages oop(213047553) == aSet( )
    -projectsWithPropertyChanges oop(213047809) == aSet( )
    -tempSymbols oop(213044225) == aSymbolDictionary( #'Globals'->aSymbolDictionary( name: #'Globals' ), #'ErrorSymbols'->aSymbolDictionary( #'abortErrGarbageCollection'->3006, #'rtErrCantReturn'->2079, #'rtErrBadFormatSpec'->2196, #'a...

temporary variables and parameters:
----------------------------------------------------
[18] RwGsImage class >> applyModification_V2:visitorClass:instanceMigrator: @10 line 9
    receiver oop(27511553) == RwGsImage

instance variables:

temporary variables and parameters:
    aProjectSetModification oop(213057793) == aRwProjectSetModification
    instanceMigrator oop(27436289) == aRwGsInstanceMigrator
    newClassVersionPatchSet oop(20) == nil
    patchSet oop(213043969) == aRwGsPatchSet_V2
    visitor oop(213057537) == aRwGsImagePatchVisitor_V2
    visitorClass oop(27510785) == RwGsImagePatchVisitor_V2
----------------------------------------------------
[19] RwGsImage class >> applyModification_V2:instanceMigrator: @15 line 17
    receiver oop(27511553) == RwGsImage

instance variables:

temporary variables and parameters:
    aProjectSetModification oop(213057793) == aRwProjectSetModification
    instanceMigrator oop(27436289) == aRwGsInstanceMigrator
    visitorClass oop(27510785) == RwGsImagePatchVisitor_V2
    visitorClassName oop(26504193) == #'RwGsImagePatchVisitor_V2'
----------------------------------------------------
[20] RwPrjLoadToolV2 >> _loadProjectSetDefinition:instanceMigrator: @16 line 21
    receiver oop(213059073) == aRwPrjLoadToolV2

instance variables:
    -specification oop(20) == nil

temporary variables and parameters:
    componentsWithDoits oop(213064449) == aSet( )
    diff oop(213057793) == aRwProjectSetModification
    instanceMigrator oop(27436289) == aRwGsInstanceMigrator
    loadedProjectDefinitionSet oop(213064193) == aRwProjectSetDefinition
    loadedProjects oop(20) == nil
    loadedProjectSet oop(213063937) == aRwEntitySet
    projectSetDefinitionToLoad oop(213063681) == aRwProjectSetDefinition
----------------------------------------------------
[21] [] in RwPrjLoadToolV2 >> _doProjectSetLoad:instanceMigrator:originalProjectSet:processedClassNames: @7 line 5
    receiver oop(213069825) == anExecBlock0

instance variables:

temporary variables and parameters:
    instanceMigrator oop(27436289) == aRwGsInstanceMigrator
    projectSetDefinition oop(213063681) == aRwProjectSetDefinition
    self oop(213059073) == aRwPrjLoadToolV2
----------------------------------------------------
[22] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
    receiver oop(213069825) == anExecBlock0

instance variables:

temporary variables and parameters:
    exceptionSelector oop(30507521) == RwExistingVisitorAddingExistingClassNotification
    fastPath oop(268) == true
    handlerBlock oop(213042689) == anExecBlock
----------------------------------------------------
[23] RwPrjLoadToolV2 >> _doProjectSetLoad:instanceMigrator:originalProjectSet:processedClassNames: @2 line 7
    receiver oop(213059073) == aRwPrjLoadToolV2

instance variables:
    -specification oop(20) == nil

temporary variables and parameters:
    copiedProjectSetDef oop(20) == nil
    instanceMigrator oop(27436289) == aRwGsInstanceMigrator
    loadedClass oop(20) == nil
    originalProjectSet oop(213063681) == aRwProjectSetDefinition
    packageDef oop(20) == nil
    processedClassNames oop(213033729) == aSet( )
    projectDef oop(20) == nil
    projectSetDefinition oop(213063681) == aRwProjectSetDefinition
    theClass oop(20) == nil
    theClassName oop(20) == nil
    theLoadedProject oop(20) == nil
----------------------------------------------------
[24] RwPrjLoadToolV2 >> loadProjectSetDefinition:instanceMigrator: @3 line 7
    receiver oop(213059073) == aRwPrjLoadToolV2

instance variables:
    -specification oop(20) == nil

temporary variables and parameters:
    instanceMigrator oop(27436289) == aRwGsInstanceMigrator
    projectSetDefinition oop(213063681) == aRwProjectSetDefinition
----------------------------------------------------
[25] RwPrjLoadToolV2 >> loadProjectDefinition:platformConfigurationAttributes:instanceMigrator: @19 line 24
    receiver oop(213059073) == aRwPrjLoadToolV2

instance variables:
    -specification oop(20) == nil

temporary variables and parameters:
    absentProjectNames oop(20) == nil
    instanceMigrator oop(27436289) == aRwGsInstanceMigrator
    platformConfigurationAttributes oop(213057281) == anArray( 'common', 'gemstone', 'gemstone-kernel', 3.6.0)
    projectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
    projectSetDefinition oop(213063681) == aRwProjectSetDefinition
    requiredProjectNames oop(213056769) == aSet( )
----------------------------------------------------
[26] RwPrjLoadToolV2 >> loadProjectDefinition: @5 line 3
    receiver oop(213059073) == aRwPrjLoadToolV2

instance variables:
    -specification oop(20) == nil

temporary variables and parameters:
    projectDefinition oop(213055745) == aRwResolvedProjectV2 for rowan_test_stats
----------------------------------------------------
[27] RwResolvedProjectV2 >> load @7 line 11
    receiver oop(213056001) == aRwResolvedProjectV2 for rowan_test_stats

instance variables:
    -loadSpecification oop(213059329) == aRwLoadSpecificationV2 for rowan_test_stats
    -projectDefinition oop(213059841) == aRwProjectDefinitionV2 for rowan_test_stats
    -projectRepository oop(213058817) == aRwDiskRepositoryDefinitionV2 for rowan_test_stats
    -projectSpecification oop(213059585) == aRwProjectSpecificationV2 for project
    -projectStructure oop(20) == nil

temporary variables and parameters:
----------------------------------------------------
[28] RwResolvedProject (RwAbstractUnloadedProject) >> load @3 line 4
    receiver oop(213060097) == aRwResolvedProject for rowan_test_stats

instance variables:
    -name oop(213066241) == 'rowan_test_stats'
    -resolvedProject oop(213056001) == aRwResolvedProjectV2 for rowan_test_stats

temporary variables and parameters:
----------------------------------------------------
[29] Executed Code  @3 line 4
    receiver oop(20) == nil

instance variables:

temporary variables and parameters:
----------------------------------------------------
[30] GsNMethod >> _executeInContext: @1 line 9
    receiver oop(213066497) == GsNMethod <nil>>><anonymous>

instance variables:
    -debugInfo oop(213044993) == anArray( 72057595111669760, '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_tes...
    -iFields1 oop(144117936854929410) == 18014742106866176
    -inClass oop(20) == nil
    -selector oop(233730) == 29216

temporary variables and parameters:
    anObject oop(20) == nil
----------------------------------------------------
[31] String >> evaluateInContext:symbolList: @3 line 10
    receiver oop(213046017) == '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??diskUrl: ''...

instance variables:

temporary variables and parameters:
    anObject oop(20) == nil
    aSymbolList oop(213054977) == aSymbolList( aSymbolDictionary( name: #'UserGlobals' ), aSymbolDictionary( name: #'Globals' ), aSymbolDictionary( name: #'GemStone_Portable_Streams' ), aSymbolDictionary( name: #'GemStone_Legacy_Strea...
----------------------------------------------------
[32] [] in RowanAnsweringService >> basicExec:context: @16 line 2
    receiver oop(213065217) == anExecBlock0

instance variables:

temporary variables and parameters:
    aString oop(213046017) == '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??diskUrl: ''...
    oop oop(162) == 20
----------------------------------------------------
[33] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
    receiver oop(213065217) == anExecBlock0

instance variables:

temporary variables and parameters:
    exceptionSelector oop(132097) == CompileError
    fastPath oop(268) == true
    handlerBlock oop(60904961) == anExecBlock
----------------------------------------------------
[34] RowanAnsweringService >> basicExec:context: @2 line 3
    receiver oop(213061121) == aRowanAnsweringService

instance variables:
    -answer oop(20) == nil
    -command oop(28182273) == #'exec:context:inWindow:'
    -commandArgs oop(213053953) == anArray( '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??di...
    -definition oop(20) == nil
    -organizer oop(213053697) == aClassOrganizer
    -updates oop(20) == nil
    -updateType oop(20) == nil

temporary variables and parameters:
    aString oop(213046017) == '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??diskUrl: ''...
    oop oop(162) == 20
----------------------------------------------------
[35] RowanAnsweringService >> exec:context: @2 line 3
    receiver oop(213061121) == aRowanAnsweringService

instance variables:
    -answer oop(20) == nil
    -command oop(28182273) == #'exec:context:inWindow:'
    -commandArgs oop(213053953) == anArray( '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??di...
    -definition oop(20) == nil
    -organizer oop(213053697) == aClassOrganizer
    -updates oop(20) == nil
    -updateType oop(20) == nil

temporary variables and parameters:
    aString oop(213046017) == '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??diskUrl: ''...
    oop oop(162) == 20
----------------------------------------------------
[36] RowanAnsweringService >> exec:context:inWindow: @2 line 2
    receiver oop(213061121) == aRowanAnsweringService

instance variables:
    -answer oop(20) == nil
    -command oop(28182273) == #'exec:context:inWindow:'
    -commandArgs oop(213053953) == anArray( '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??di...
    -definition oop(20) == nil
    -organizer oop(213053697) == aClassOrganizer
    -updates oop(20) == nil
    -updateType oop(20) == nil

temporary variables and parameters:
    aString oop(213046017) == '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??diskUrl: ''...
    handle oop(26752770) == 3344096
    oop oop(162) == 20
----------------------------------------------------
[37] RowanAnsweringService (Object) >> perform:withArguments: @1 line 12
    receiver oop(213061121) == aRowanAnsweringService

instance variables:
    -answer oop(20) == nil
    -command oop(28182273) == #'exec:context:inWindow:'
    -commandArgs oop(213053953) == anArray( '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??di...
    -definition oop(20) == nil
    -organizer oop(213053697) == aClassOrganizer
    -updates oop(20) == nil
    -updateType oop(20) == nil

temporary variables and parameters:
    anArray oop(213053953) == anArray( '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??di...
    aSelectorSymbol oop(28182273) == #'exec:context:inWindow:'
----------------------------------------------------
[38] RowanAnsweringService (RowanService) >> servicePerform:withArguments: @7 line 14
    receiver oop(213061121) == aRowanAnsweringService

instance variables:
    -answer oop(20) == nil
    -command oop(28182273) == #'exec:context:inWindow:'
    -commandArgs oop(213053953) == anArray( '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??di...
    -definition oop(20) == nil
    -organizer oop(213053697) == aClassOrganizer
    -updates oop(20) == nil
    -updateType oop(20) == nil

temporary variables and parameters:
    collection oop(213053953) == anArray( '"test samples"?(RwResolvedProject ??projectFromUrl: ''file:/home/dhenrich/rogue/_homes/rogue/_home/shared/repos/st_launcher/examples/rowan_test_stats/rowan/specs/rowan_test_stats.ston'' ??di...
    symbol oop(28182273) == #'exec:context:inWindow:'
----------------------------------------------------
[39] [] in JadeServer >> updateFromSton: @35 line 13
    receiver oop(213056513) == anExecBlock1

instance variables:

temporary variables and parameters:
    organizer oop(213053697) == aClassOrganizer
    service oop(213061121) == aRowanAnsweringService
----------------------------------------------------
[40] OrderedCollection (Collection) >> do: @5 line 10
    receiver oop(213056257) == anOrderedCollection( aRowanLoggingService, aRowanAnsweringService)

instance variables:

temporary variables and parameters:
    aBlock oop(213056513) == anExecBlock1
    i oop(18) == 2
----------------------------------------------------
[41] [] in JadeServer >> updateFromSton: @24 line 9
    receiver oop(213062657) == anExecBlock0

instance variables:

temporary variables and parameters:
    services oop(213056257) == anOrderedCollection( aRowanLoggingService, aRowanAnsweringService)
----------------------------------------------------
[42] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
    receiver oop(213062657) == anExecBlock0

instance variables:

temporary variables and parameters:
    exceptionSelector oop(27706369) == GsInteractionRequest
    fastPath oop(268) == true
    handlerBlock oop(213061889) == anExecBlock
----------------------------------------------------
[43] [] in JadeServer >> updateFromSton: @12 line 14
    receiver oop(213060353) == anExecBlock0

instance variables:

temporary variables and parameters:
    organizer oop(213053697) == aClassOrganizer
    resultString oop(20) == nil
    self oop(213086977) == aJadeServer64bit35
    services oop(213056257) == anOrderedCollection( aRowanLoggingService, aRowanAnsweringService)
    stonString oop(212923393) == 'OrderedCollection[RowanLoggingService{#command:#logReceivedServices,#commandArgs:[],#id:0,#groupId:70,#services:OrderedCollection[RowanAnsweringService{#command:#''exec:context:inWindow:'',#commandAr...
----------------------------------------------------
[44] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
    receiver oop(213060353) == anExecBlock0

instance variables:

temporary variables and parameters:
    exceptionSelector oop(130817) == Error
    fastPath oop(268) == true
    handlerBlock oop(59096577) == anExecBlock1
----------------------------------------------------
[45] JadeServer64bit35 (JadeServer) >> updateFromSton: @2 line 23
    receiver oop(213086977) == aJadeServer64bit35

instance variables:
    -classList oop(20) == nil
    -classOrganizers oop(213065985) == anArray( nil, nil, nil, nil)
    -environment oop(2) == 0
    -methodCommandResult oop(20) == nil
    -methodFilters oop(20) == nil
    -methodFilterType oop(20) == nil
    -readStream oop(20) == nil
    -selectedClass oop(20) == nil
    -selections oop(20) == nil
    -writeStream oop(20) == nil

temporary variables and parameters:
    organizer oop(213053697) == aClassOrganizer
    resultString oop(20) == nil
    services oop(213056257) == anOrderedCollection( aRowanLoggingService, aRowanAnsweringService)
    stonString oop(212923393) == 'OrderedCollection[RowanLoggingService{#command:#logReceivedServices,#commandArgs:[],#id:0,#groupId:70,#services:OrderedCollection[RowanAnsweringService{#command:#''exec:context:inWindow:'',#commandAr...
----------------------------------------------------
[46] GsNMethod class >> _gsReturnToC @1 line 11
    receiver oop(144897) == GsNMethod

instance variables:

temporary variables and parameters:
rjsargent commented 3 years ago

In my encounter with this error, I see that the patch set's tempSymbols symbol dictionary holds 1,532 entries. But, 274 of them have nil for the value associated with the key. I have no idea whether nil entries are valid. Certainly the method in question isn't expecting them.

dalehenrich commented 3 years ago

in your case, did yout try to load a class whose superclass does not exist or is it a different condition that triggers the bug ... the stack reported in #712 doesn't look like the stack that I reported and involves a RowanAnsweringService ... once you get corruption in Rowan (like a missing superclass?) all bets are off ... it is possible that the Jadeite error (as reported in #712) is a consequence of this bug ...

dalehenrich commented 3 years ago

@rjsargent has confirmed that his error is a result of attempting to load a class whose superclass is nil ...