iceberg
iceberg copied to clipboard
TonelParseError: Can't parse type.
Often when merging branches automatically on the CI we get the error below. Currently we don't have a way to reproduce it, as it looks quite random. Does it look familiar to anyone? It happens when using the latest Pharo 8 image + stable vm. The CI runs on Ubuntu.
TonelParseError: Can't parse type.
[0mTonelParser>>type
TonelParser>>typeDef
TonelParser>>document
TonelParser>>start
TonelParser class>>parseStream:
[ :s | TonelParser parseStream: s ] in [ :each | each readStreamDo: [ :s | TonelParser parseStream: s ] ] in IceLibgitTonelReader(TonelReader)>>loadDefinitions in Block: [ :s | TonelParser parseStream: s ]
LGitTreeEntry>>readStreamDo:
[ :each | each readStreamDo: [ :s | TonelParser parseStream: s ] ] in IceLibgitTonelReader(TonelReader)>>loadDefinitions in Block: [ :each | each readStreamDo: [ :s | TonelParser pa...etc...
Array(SequenceableCollection)>>collect:
IceLibgitTonelReader(TonelReader)>>loadDefinitions
IceLibgitTonelReader(MCVersionReader)>>definitions
IceLibgitTonelReader(MCVersionReader)>>snapshot
[ self snapshot ] in IceLibgitTonelReader(MCVersionReader)>>basicVersion in Block: [ self snapshot ]
MCVersion>>snapshot
MCMczWriter>>writeDefinitions:
MCMczWriter>>writeVersion:
MCMczWriter class>>fileOut:on:
MCVersion>>fileOutOn:
[ :s | aVersion fileOutOn: s ] in MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion: in Block: [ :s | aVersion fileOutOn: s ]
[ aBlock value: stream ] in FileReference(AbstractFileReference)>>binaryWriteStreamDo: in Block: [ aBlock value: stream ]
BlockClosure>>ensure:
FileReference(AbstractFileReference)>>binaryWriteStreamDo:
MCCacheRepository(MCDirectoryRepository)>>writeStreamForFileNamed:replace:do:
MCCacheRepository(MCFileBasedRepository)>>writeStreamForFileNamed:do:
MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion:
MCCacheRepository>>basicStoreVersion:
MCCacheRepository(MCRepository)>>storeVersion:
MCCacheRepository(MCFileBasedRepository)>>storeVersion:
MCCacheRepository>>storeVersion:
MCVersion>>addToCache
[0m
A few more details about this error. It seems to happen only on Linux randomly when calling #forceCalculateDirtyPackages
. Looking at what mcz is parsed we get 'Error: TonelParseError while parsing file Brick-Glamorous-CompatibleUserName.1575046996.mcz'
. Within this mcz the crash happens when parsing BrGlamorousFonts.class.st . This class has 9 mb and contains some fonts. The bug happens also on other repositories but this was the simplest to reproduce until now locally.
From a playground TonelParser
can however parse this class without any problem (TonelParser class>>#parseStream:
has no problem parsing the class). However, there seems to be a problem when the parser is invoked from TonelReader>>loadDefinitions
. This method uses a LGitTreeEntry
to create the steam:
Looking at the content of the stream:
When inspecting it in a playground the content of this file is: