On 23.05.2013, at 22:58, Camille Teruel <[email protected]> wrote:
> Hi, > > This is indeed strange, the BlockClosure has an incorrect startpc (31 instead > of 43). You can fix it with: > theBlock instVar: 2 put: 43. > The wrong startpc corresponds to the beginning of the block in the previous > version of the method (DFSession>>#numberOfMethodCalls), but I don't know why. Would it help to recompile the method? > I don't know fuel enough but could it be because the method of the block > changed between serialization and materialization? No, there was never a materialization of that session. > > Camille > > On 23 mai 2013, at 21:02, Max Leske wrote: > >> Hi Marcus >> >> Roberto sent this mail to the Fuel-dev list. When we looked at the problem >> we noticed that serialization fails because of a corrupt BlockClosure. Since >> that's not really our territorry Mariano suggested to forward this to you. >> >> The image with the corrupt BlockClosure is available here: >> https://dl.dropboxusercontent.com/u/6281855/DFlow-SubscriptOutOfBounds.zip. >> To see the stack, right click on the only entry in the right window and >> click "export session". You'll find the corrupt BlockClosure at >> BlockClosure>>fuelAccept: >> >> @Roberto >> Is it possible to reproduce the stack with a new session? Or did this only >> happen once? >> >> >> Cheers, >> Max >> >> >> Begin forwarded message: >> >>> From: Mariano Martinez Peck <[email protected]> >>> Subject: Re: [Pharo-fuel] [Fuel] SubscriptOutOfBounds: 27 >>> Date: 23. Mai 2013 14:23:45 MESZ >>> To: The Fuel Project <[email protected]> >>> Reply-To: The Fuel Project <[email protected]> >>> >>> Indeed, it would be nice if you can known which CompiledMethod and >>> blockclosure are having the problem. Not only the source code but the real >>> bytecodes. >>> Also, can you isolate and just try to serialize them alone and reproduce >>> the problem? In other words, a reproducible test case? :) >>> Thanks! >>> >>> >>> On Thu, May 23, 2013 at 8:41 AM, Max Leske <[email protected]> wrote: >>> What's the compiled method? Is it a special one? Which selector in which >>> class? >>> >>> Max >>> >>> On 23.05.2013, at 12:45, "[email protected]" <[email protected]> >>> wrote: >>> >>> > Hi, >>> > >>> > While using Fuel in a 2.0 image to serialize some objects (including >>> > CompiledMethods) I'm getting this error: SubscriptOutOfBounds: 27. >>> > >>> > I spent hours in the debugger before writing this email, but I'm not able >>> > to figure out why this is happening. I attach the full stack of the error >>> > (STACK#1). >>> > >>> > I understood that it has something to do with a particular CompiledMethod >>> > in my image and/or a BlockClosure which for some reason cannot be printed >>> > (i.e., the printString returns <error in printString: evaluate "self >>> > printString" to debug>) and when I try to printString to debug I got the >>> > STACK#2 which in turn does not bring me to any possible solution. >>> > >>> > Hope some of you will have an intuition on that or at least tell me where >>> > to look or how to script a possible workaround. >>> > >>> > Thanks in advance, >>> > Roby >>> > >>> > ############################################################################################ >>> > ######################################### STACK#1 >>> > ########################################### >>> > ########################################################################################### >>> > CompiledMethod(Object)>>errorSubscriptBounds: >>> > CompiledMethod(Object)>>at: >>> > InstructionStream>>interpretNextInstructionFor: >>> > CompiledMethod>>abstractBytecodeMessageAt: in Block: [(InstructionStream >>> > new method: self pc: pc)... >>> > BlockClosure>>on:do: >>> > CompiledMethod>>abstractBytecodeMessageAt: >>> > BlockClosure>>blockCreationBytecodeMessage >>> > BlockClosure>>endPC >>> > BlockClosure>>abstractBytecodeMessagesDo: >>> > BlockClosure>>isClean >>> > BlockClosure>>shouldBeSubstitutedByCleanCopy >>> > BlockClosure>>fuelAccept: >>> > FLFullGeneralMapper(FLLightGeneralMapper)>>mapAndTrace: >>> > FLFullGlobalMapper>>mapAndTrace: in Block: [(anObject class == >>> > CompiledMethod... >>> > FLLargeIdentityDictionary>>at:ifAbsent: >>> > FLFullGlobalMapper>>mapAndTrace: >>> > FLPluggableSubstitutionMapper>>mapAndTrace: >>> > FLPluggableSubstitutionMapper>>mapAndTrace: >>> > FLAnalysis>>mapAndTrace: >>> > FLAnalysis>>run >>> > FLAnalyzer>>setDefaultAnalysis in Block: [:anObject | (FLAnalysis... >>> > FLAnalyzer>>analysisFor: >>> > FLSerialization>>analysisStep >>> > FLSerialization>>run >>> > DFSerializer(FLSerializer)>>setDefaultSerialization in Block: [:anObject >>> > :anEncoder | (FLSerialization... >>> > DFSerializer(FLSerializer)>>serialize:on: in Block: [:anEncoder | ... >>> > FLEncoder class>>on:globalEnvironment:do: in Block: [aBlock value: >>> > anEncoder] >>> > BlockClosure>>ensure: >>> > FLEncoder class>>on:globalEnvironment:do: >>> > DFSerializer(FLSerializer)>>serialize:on: >>> > >>> > >>> > ############################################################################################ >>> > ######################################### STACK#2 >>> > ########################################### >>> > ############################################################################################ >>> > Decompiler(Object)>>error: >>> > Decompiler>>decompileBlock: >>> > BlockClosure>>decompile >>> > BlockClosure>>printOn: >>> > BlockClosure(Object)>>printStringLimitedTo: in Block: [:s | self printOn: >>> > s] >>> > String class(SequenceableCollection class)>>streamContents:limitedTo: >>> > BlockClosure(Object)>>printStringLimitedTo: >>> > BlockClosure(Object)>>printString >>> > BlockClosure>>DoIt >>> > Compiler>>evaluate:in:to:notifying:ifFail:logged: >>> > SmalltalkEditor>>evaluateSelectionAndDo: in Block: [rcvr class >>> > evaluatorClass new... >>> > BlockClosure>>on:do: >>> > SmalltalkEditor>>evaluateSelectionAndDo: >>> > SmalltalkEditor>>evaluateSelection >>> > PluggableTextMorph>>doIt in Block: [textMorph editor evaluateSelection] >>> > PluggableTextMorph>>handleEdit: in Block: [result := editBlock value] >>> > TextMorphForEditView(TextMorph)>>handleEdit: >>> > PluggableTextMorph>>handleEdit: >>> > PluggableTextMorph>>doIt >>> > SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn: in Block: >>> > [:morph | morph doIt] >>> > BlockClosure>>cull: >>> > BlockClosure>>cull:cull: >>> > BlockClosure>>cull:cull:cull: >>> > KMCategoryTarget>>completeMatch:buffer: >>> > KMKeymap>>notifyCompleteMatchTo:buffer: in Block: [:l | l completeMatch: >>> > self buffer: aBuffer] >>> > Array(SequenceableCollection)>>do: >>> > KMKeymap>>notifyCompleteMatchTo:buffer: >>> > KMKeymap>>onMatchWith:notify:andDo: >>> > KMCategory>>onMatchWith:notify:andDo: in Block: [:entry | entry... >>> > Set>>do: >>> > >>> > >>> > >>> > _______________________________________________ >>> > Pharo-fuel mailing list >>> > [email protected] >>> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel >>> >>> _______________________________________________ >>> Pharo-fuel mailing list >>> [email protected] >>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel >>> >>> >>> >>> -- >>> Mariano >>> http://marianopeck.wordpress.com >>> _______________________________________________ >>> Pharo-fuel mailing list >>> [email protected] >>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel >> >
