On 25 July 2017 at 22:55:19, Mariano Martinez Peck (marianopeck@gmail.com) wrote:
Guys,I am getting��"UTF8InvalidText: Invalid utf8 input detected" quite frequently on Pharo 6.0 which come from ombu background job. Has anything seen this too? Quite annoying... ��
Yes, I've seen it a couple of times. No clue though why it happens, or when.
This is not the first time I hit it. This time I analyzed a bit why it was failing and it's because I removed a method manually...I mean, I didMyClass removeSelector: #myMethodAnd the omEntry is a EpMethodRemoval which represents the exact method I deleted...Also I can see the MultiByteFileStream internal 'collection' is full of none ascii things.��I can share a fuelout as well as the image with the files if you want. I can also share the ombu file in question.����Contact me in private.��----[ :error |��(OmFileStoreReadingErrorreadingError: erroron: self fileReferenceposition: readStream position) signal ] in [ :readStream |��[ ^ aBlockClosure value: readStream ascii ]on: Errordo: [ :error |��(OmFileStoreReadingErrorreadingError: erroron: self fileReferenceposition: readStream position) signal ] ] in OmBlockFileStore(OmFileStore)>>readEntriesWith: in Block: [ :error | ...BlockClosure>>cull:Context>>evaluateSignal:Context>>handleSignal:UTF8InvalidText(Exception)>>signalUTF8InvalidText(Exception)>>signal:UTF8TextConverter>>errorMalformedInputUTF8TextConverter>>nextFromStream:MultiByteFileStream>>nextMultiByteFileStream(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: Errordo: [ :error |��(OmFileStoreReadingErrorreadingError: erroron: self fileReferenceposition: readStream position) signal ] ] in OmBlockFileStore(OmFileStore)>>readEntriesWith: in Block: [ ^ aBlockClosure value: readStream ascii ]BlockClosure>>on:do:[ :readStream |��[ ^ aBlockClosure value: readStream ascii ]on: Errordo: [ :error |��(OmFileStoreReadingErrorreadingError: erroron: self fileReferenceposition: 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 isEmptyifTrue: [ ^ self ].fileReferencewriteStreamDo: [ :fileStream |��fileStream setToEnd.initialPosition := fileStream position.initialLocalName := self entryBuffer first value.ZnBufferedWriteStreamon: fileStreamdo: [ :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 ].selfrefreshEntryPositionsByLocalNameStartingAt: initialPositionsince: 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)>>flushEntryBufferOmDeferrer>>sendMessage[ self sendMessage ] in OmDeferrer>>flush in Block: [ self sendMessage ]