iceberg icon indicating copy to clipboard operation
iceberg copied to clipboard

TonelParseError: Can't parse type.

Open chisandrei opened this issue 5 years ago • 1 comments

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

chisandrei avatar Nov 15 '19 13:11 chisandrei

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: Screenshot 2019-11-29 at 23 11 15

Looking at the content of the stream: Screenshot 2019-11-29 at 22 09 38

When inspecting it in a playground the content of this file is: Screenshot 2019-11-29 at 23 38 01

chisandrei avatar Nov 29 '19 23:11 chisandrei