Hi,

I'm having some non-deterministic errors in the Travis builds, the error is always something like:

OmFileStoreReadingError: Reading entry from File @ pharo-local/ombu-sessions/Pharo.4p8buz6mww48y1noxrolgwkl1.ombu@17432579: Invalid utf8 input detected

If I retried the build it works without any change. I think it happens during the code loading phase.

Is anyone experiencing this issue?

Here's an extract of the travis log:

OmFileStoreReadingError: Reading entry from File @ pharo-local/ombu-sessions/Pharo.4p8buz6mww48y1noxrolgwkl1.ombu@17432579: Invalid utf8 input detected

[ :error |

(OmFileStoreReadingError

readingError: error

on: self fileReference

position: readStream position) signal ] in [ :readStream |

[ ^ aBlockClosure value: readStream ascii ]

on: Error

do: [ :error |

(OmFileStoreReadingError

readingError: error

on: self fileReference

position: readStream position) signal ] ] in OmBlockFileStore(OmFileStore)>>readEntriesWith: in Block: [ :error | ...

BlockClosure>>cull:

Context>>evaluateSignal:

Context>>handleSignal:

UTF8InvalidText(Exception)>>signal

UTF8InvalidText(Exception)>>signal:

UTF8TextConverter>>errorMalformedInput

UTF8TextConverter>>nextFromStream:

MultiByteFileStream>>next

MultiByteFileStream(PositionableStream)>>match:

MultiByteFileStream(PositionableStream)>>upToAll:

OmSTONEntryReader>>nextEntryPositionIfFound:ifNone:

OmBlockFileStore>>refreshNewBlocksFrom:

[ :readStream | self refreshNewBlocksFrom: readStream ] in OmBlockFileStore>>refreshEntryPositionsByLocalNameStartingAt:since: in Block: [ :readStream | self refreshNewBlocksFrom: readStr...etc...

[ ^ aBlockClosure value: readStream ascii ] in [ :readStream |

[ ^ aBlockClosure value: readStream ascii ]

on: Error

do: [ :error |

(OmFileStoreReadingError

readingError: error

on: self fileReference

position: readStream position) signal ] ] in OmBlockFileStore(OmFileStore)>>readEntriesWith: in Block: [ ^ aBlockClosure value: readStream ascii ]

BlockClosure>>on:do:

[ :readStream |

[ ^ aBlockClosure value: readStream ascii ]

on: Error

do: [ :error |

(OmFileStoreReadingError

readingError: error

on: self fileReference

position: readStream position) signal ] ] in OmBlockFileStore(OmFileStore)>>readEntriesWith: in Block: [ :readStream | ...

[ aBlock value: stream ] in FileReference(AbstractFileReference)>>readStreamDo: in Block: [ aBlock value: stream ]

BlockClosure>>ensure:

FileReference(AbstractFileReference)>>readStreamDo:

OmBlockFileStore(OmFileStore)>>readEntriesWith:

OmBlockFileStore>>refreshEntryPositionsByLocalNameStartingAt:since:

[ | initialPosition initialLocalName |

self entryBuffer isEmpty

ifTrue: [ ^ self ].

fileReference

writeStreamDo: [ :fileStream |

fileStream setToEnd.

initialPosition := fileStream position.

initialLocalName := self entryBuffer first value.

ZnBufferedWriteStream

on: fileStream

do: [ :aWriteStream |

| anEntryWriter |

anEntryWriter := self newEntryWriter.

[ self entryBuffer isEmpty ]

whileFalse: [ | next entry |

next := self entryBuffer removeFirst.

entry := next key.

"Write entry to file"

anEntryWriter on: aWriteStream nextEntryPut: entry ] ].

"In Linux it was necessary to explicitely flush the file stream"

fileStream flush.

lastStreamPosition := fileStream size ].

self

refreshEntryPositionsByLocalNameStartingAt: initialPosition

since: initialLocalName ] in OmBlockFileStore(OmFileStore)>>flushEntryBuffer in Block: [ | initialPosition initialLocalName |...

[ caught := true.

self wait.

blockValue := mutuallyExcludedBlock value ] in Semaphore>>critical: in Block: [ caught := true....

BlockClosure>>ensure:

Semaphore>>critical:

OmBlockFileStore(OmFileStore)>>critical:

OmBlockFileStore(OmFileStore)>>flushEntryBuffer

OmDeferrer>>sendMessage

[ self sendMessage ] in OmDeferrer>>flush in Block: [ self sendMessage ]