Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Squeak Trunk updates broken #502

Closed
LinqLover opened this issue Mar 4, 2021 · 4 comments
Closed

Squeak Trunk updates broken #502

LinqLover opened this issue Mar 4, 2021 · 4 comments

Comments

@LinqLover
Copy link
Collaborator

I reproducibly see the following error in the smalltalkCI builds of two different projects on GitHub:

Preparing Squeak64-Trunk image for CI...
......Error: CompiledCode cannot be recompiled > Time to run: 29.165s
Build was unable to report intermediate build status.
cat: /home/runner/.smalltalkCI/_builds/build_status.txt: No such file or directory

Error with status code 1:
276 check_and_consume_build_status_file /home/runner/.smalltalkCI/helpers.sh
Error: Process completed with exit code 1.

The error message suggests that the error is raised in ClassBuilder>>validateSubclass:canKeepLayoutFrom:forSubclassFormat:.

This is a serious issue because it makes smalltalkCI completely unusable for the Trunk.

How could this happen and how can we solve it? I'm investigating ...

@fniephaus
Copy link
Member

Thanks for raising this issue. May I suggest you download smalltalkCI's base trunk image and manually update it to trunk? Not sure what's going on and whether this can be fixed within trunk. Otherwise, we might need to manually update the base image.

@LinqLover
Copy link
Collaborator Author

The error originates from a change of ByteArray in Collections-jar.924. Traceback:

4 March 2021 3:56:57.767911 pm

VM: Win32 - Smalltalk
Image: Squeak6.0alpha [latest update: #19536]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir C:\Users\Christoph\OneDrive\Dokumente\Squeak\Christoph\git\smalltalkCI_builds\2021_03_04_15_49_34
Trusted Dir C:\Users\Christoph\OneDrive\Dokumente\Squeak\Christoph\git\smalltalkCI_builds\2021_03_04_15_49_34\Christoph
Untrusted Dir C:\Users\Christoph\OneDrive\Dokumente\My Squeak

ClassBuilder(Object)>>error:
Receiver: a ClassBuilder
Arguments and temporary variables:
<
Receiver's instance variables:
environ: Smalltalk
classMap: nil
instVarMap: an IdentityDictionary()
progress: nil
maxClassIndex: nil
currentClassIndex: nil

ClassBuilder>>validateSubclass:canKeepLayoutFrom:forSubclassFormat:
Receiver: a ClassBuilder
Arguments and temporary variables:
<
Receiver's instance variables:
environ: Smalltalk
classMap: nil
instVarMap: an IdentityDictionary()
progress: nil
maxClassIndex: nil
currentClassIndex: nil

[] in ClassBuilder>>validateSubclassFormat:from:forSuper:extra:
Receiver: a ClassBuilder
Arguments and temporary variables:
<
Receiver's instance variables:
environ: Smalltalk
classMap: nil
instVarMap: an IdentityDictionary()
progress: nil
maxClassIndex: nil
currentClassIndex: nil

[] in ByteArray class(Behavior)>>allSubclassesDo:
Receiver: ByteArray
Arguments and temporary variables:
<
Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a MethodDictionary(#asByteArray->(ByteArray>>#asByteArray "a CompiledMethod...etc...
format: 1048576
instanceVariables: nil
organization: ('accessing' asWideString atAllPut: byteAt: byteAt:put: byteSize bytesPerElement...etc...
subclasses: {UUID . SocketAddress . CompiledCode}
name: #ByteArray
classPool: a Dictionary()
sharedPools: nil
environment: nil
category: #'Collections-Arrayed'

Array(SequenceableCollection)>>do:
Receiver: {UUID . SocketAddress . CompiledCode}
Arguments and temporary variables:
<
Receiver's instance variables:
{UUID . SocketAddress . CompiledCode}

ByteArray class(Class)>>subclassesDo:
Receiver: ByteArray
Arguments and temporary variables:
<
Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a MethodDictionary(#asByteArray->(ByteArray>>#asByteArray "a CompiledMethod...etc...
format: 1048576
instanceVariables: nil
organization: ('accessing' asWideString atAllPut: byteAt: byteAt:put: byteSize bytesPerElement...etc...
subclasses: {UUID . SocketAddress . CompiledCode}
name: #ByteArray
classPool: a Dictionary()
sharedPools: nil
environment: nil
category: #'Collections-Arrayed'

ByteArray class(Behavior)>>allSubclassesDo:
Receiver: ByteArray
Arguments and temporary variables:
<
Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a MethodDictionary(#asByteArray->(ByteArray>>#asByteArray "a CompiledMethod...etc...
format: 1048576
instanceVariables: nil
organization: ('accessing' asWideString atAllPut: byteAt: byteAt:put: byteSize bytesPerElement...etc...
subclasses: {UUID . SocketAddress . CompiledCode}
name: #ByteArray
classPool: a Dictionary()
sharedPools: nil
environment: nil
category: #'Collections-Arrayed'

ByteArray class(Behavior)>>withAllSubclassesDo:
Receiver: ByteArray
Arguments and temporary variables:
<
Receiver's instance variables:
superclass: ArrayedCollection
methodDict: a MethodDictionary(#asByteArray->(ByteArray>>#asByteArray "a CompiledMethod...etc...
format: 1048576
instanceVariables: nil
organization: ('accessing' asWideString atAllPut: byteAt: byteAt:put: byteSize bytesPerElement...etc...
subclasses: {UUID . SocketAddress . CompiledCode}
name: #ByteArray
classPool: a Dictionary()
sharedPools: nil
environment: nil
category: #'Collections-Arrayed'

ClassBuilder>>validateSubclassFormat:from:forSuper:extra:
Receiver: a ClassBuilder
Arguments and temporary variables:
<
Receiver's instance variables:
environ: Smalltalk
classMap: nil
instVarMap: an IdentityDictionary()
progress: nil
maxClassIndex: nil
currentClassIndex: nil

[] in ClassBuilder>>name:inEnvironment:subclassOf:type:instanceVariableNames:classVariableNames:poolDictionaries:category:unsafe:
Receiver: a ClassBuilder
Arguments and temporary variables:
<
Receiver's instance variables:
environ: Smalltalk
classMap: nil
instVarMap: an IdentityDictionary()
progress: nil
maxClassIndex: nil
currentClassIndex: nil

FullBlockClosure(BlockClosure)>>ensure:
Receiver: [closure] in ClassBuilder>>name:inEnvironment:subclassOf:type:instanceVariableNames:classVariableNames:poolDictionaries:category:unsafe:...etc...
Arguments and temporary variables:
<
Receiver's instance variables:
outerContext: ClassBuilder>>name:inEnvironment:subclassOf:type:instanceVariableNames:classVariableNames:poolDictionaries:category:unsafe:...etc...
startpcOrMethod: ([] in ClassBuilder>>#name:inEnvironment:subclassOf:type:insta...etc...
numArgs: 0
receiver: a ClassBuilder

ClassBuilder>>name:inEnvironment:subclassOf:type:instanceVariableNames:classVariableNames:poolDictionaries:category:unsafe:
Receiver: a ClassBuilder
Arguments and temporary variables:
<
Receiver's instance variables:
environ: Smalltalk
classMap: nil
instVarMap: an IdentityDictionary()
progress: nil
maxClassIndex: nil
currentClassIndex: nil

ClassBuilder>>name:inEnvironment:subclassOf:type:instanceVariableNames:classVariableNames:poolDictionaries:category:
Receiver: a ClassBuilder
Arguments and temporary variables:
<
Receiver's instance variables:
environ: Smalltalk
classMap: nil
instVarMap: an IdentityDictionary()
progress: nil
maxClassIndex: nil
currentClassIndex: nil

[] in MCClassDefinition>>createClass
Receiver: a MCClassDefinition(ByteArray)
Arguments and temporary variables:
<
Receiver's instance variables:
name: #ByteArray
superclassName: #UnsignedIntegerArray
variables: an OrderedCollection()
category: #'Collections-Arrayed'
type: #bytes
comment: 'I represent an ArrayedCollection whose elements are integers between ...etc...
commentStamp: ''
traitComposition: nil
classTraitComposition: nil

FullBlockClosure(BlockClosure)>>on:do:
Receiver: [closure] in MCClassDefinition>>createClass
Arguments and temporary variables:
<
Receiver's instance variables:
outerContext: MCClassDefinition>>createClass
startpcOrMethod: ([] in MCClassDefinition>>#createClass "a CompiledBlock(103781...etc...
numArgs: 0
receiver: a MCClassDefinition(ByteArray)

MCClassDefinition>>createClass
Receiver: a MCClassDefinition(ByteArray)
Arguments and temporary variables:
<
Receiver's instance variables:
name: #ByteArray
superclassName: #UnsignedIntegerArray
variables: an OrderedCollection()
category: #'Collections-Arrayed'
type: #bytes
comment: 'I represent an ArrayedCollection whose elements are integers between ...etc...
commentStamp: ''
traitComposition: nil
classTraitComposition: nil

MCClassDefinition>>load
Receiver: a MCClassDefinition(ByteArray)
Arguments and temporary variables:
<
Receiver's instance variables:
name: #ByteArray
superclassName: #UnsignedIntegerArray
variables: an OrderedCollection()
category: #'Collections-Arrayed'
type: #bytes
comment: 'I represent an ArrayedCollection whose elements are integers between ...etc...
commentStamp: ''
traitComposition: nil
classTraitComposition: nil

[] in [] in [] in [] in [] in MCPackageLoader>>basicLoad
Receiver: a MCPackageLoader
Arguments and temporary variables:
<
Receiver's instance variables:
requirements: #()
unloadableDefinitions: #()
obsoletions: a Dictionary(a MCClassDefinition(ByteArray)->a MCClassDefinition(B...etc...
additions: an OrderedCollection(a MCMethodDefinition(HashedCollection>>arrayTyp...etc...
removals: an OrderedCollection(a MCMethodDefinition(WeakOrderedCollection class...etc...
errorDefinitions: an OrderedCollection(a MCClassDefinition(ByteArray))
provisions: a Set(#PluggableMultiColumnListMorphByItem #TextTest #MessagePartNode...etc...
methodAdditions: an OrderedCollection(a MethodAddition a MethodAddition a MethodAddition...etc...
preamble: nil

[] in [] in OrderedCollection(Collection)>>do:displayingProgress:every:
Receiver: an OrderedCollection(a MCClassDefinition(ByteArray))
Arguments and temporary variables:
<
Receiver's instance variables:
array: {a MCClassDefinition(ByteArray) . nil . nil . nil . nil . nil . nil . ni...etc...
firstIndex: 1
lastIndex: 1

--- The full stack ---
ClassBuilder(Object)>>error:
ClassBuilder>>validateSubclass:canKeepLayoutFrom:forSubclassFormat:
[] in ClassBuilder>>validateSubclassFormat:from:forSuper:extra:
[] in ByteArray class(Behavior)>>allSubclassesDo:
Array(SequenceableCollection)>>do:
ByteArray class(Class)>>subclassesDo:
ByteArray class(Behavior)>>allSubclassesDo:
ByteArray class(Behavior)>>withAllSubclassesDo:
ClassBuilder>>validateSubclassFormat:from:forSuper:extra:
[] in ClassBuilder>>name:inEnvironment:subclassOf:type:instanceVariableNames:classVariableNames:poolDictionaries:category:unsafe:
FullBlockClosure(BlockClosure)>>ensure:
ClassBuilder>>name:inEnvironment:subclassOf:type:instanceVariableNames:classVariableNames:poolDictionaries:category:unsafe:
ClassBuilder>>name:inEnvironment:subclassOf:type:instanceVariableNames:classVariableNames:poolDictionaries:category:
[] in MCClassDefinition>>createClass
FullBlockClosure(BlockClosure)>>on:do:
MCClassDefinition>>createClass
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:
FullBlockClosure(BlockClosure)>>on:do:
[] in MorphicUIManager>>displayProgress:at:from:to:during:
FullBlockClosure(BlockClosure)>>ensure:
MorphicUIManager>>displayProgress:at:from:to:during:
ProgressInitiationException>>defaultResumeValue
ProgressInitiationException(Exception)>>resume
ProgressInitiationException>>defaultAction
UndefinedObject>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>handleSignal:
Context>>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:
OrderedCollection(Collection)>>do:displayingProgress:every:
OrderedCollection(Collection)>>do:displayingProgress:
[] in [] in [] in [] in MCPackageLoader>>basicLoad
FullBlockClosure(BlockClosure)>>on:do:
[] in [] in [] in MCPackageLoader>>basicLoad
FullBlockClosure(BlockClosure)>>on:do:
CurrentReadOnlySourceFiles class>>cacheDuring:
[] in [] in MCPackageLoader>>basicLoad
FullBlockClosure(BlockClosure)>>ensure:
[] in MCPackageLoader>>basicLoad
FullBlockClosure(BlockClosure)>>ensure:
RecentMessages>>suspendWhile:
MCPackageLoader>>basicLoad
[] in MCPackageLoader>>loadWithNameLike:
FullBlockClosure(BlockClosure)>>ensure:
MCPackageLoader>>useChangeSetNamed:during:
MCPackageLoader>>useNewChangeSetNamedLike:during:
MCPackageLoader>>loadWithNameLike:
MCThreeWayMerger(MCMerger)>>loadWithNameLike:
-- and more not shown --

@LinqLover
Copy link
Collaborator Author

Resolved by @marceltaeumel as described in http://forum.world.st/smalltalkCI-is-broken-for-Trunk-td5127451.html.

It's great that smalltalkCI will warn us about such incidents - while I still would like it to cache the Trunk images (#471), the current way provides an interesting way to replay the upstream continuously. 👍

@fniephaus
Copy link
Member

Thanks for the update!
And yes, everything has pros and cons.

BTW: how long does it currently take to update the base trunk image? Or should I ask: how much "slower" are your trunk builds compared with others?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants