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.
I don't know fuel enough but could it be because the method of the block changed between serialization and materialization?
CamilleOn 23 mai 2013, at 21:02, Max Leske wrote:Hi MarcusRoberto 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:@RobertoIs it possible to reproduce the stack with a new session? Or did this only happen once?Cheers,MaxBegin forwarded message:From: Mariano Martinez Peck <marianopeck@gmail.com>Subject: Re: [Pharo-fuel] [Fuel] SubscriptOutOfBounds: 27Date: 23. Mai 2013 14:23:45 MESZTo: The Fuel Project <pharo-fuel@lists.gforge.inria.fr>Reply-To: The Fuel Project <pharo-fuel@lists.gforge.inria.fr>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 <maxleske@gmail.com> wrote:
What's the compiled method? Is it a special one? Which selector in which class?
Max
On 23.05.2013, at 12:45, "roberto.minelli@usi.ch" <roberto.minelli@usi.ch> 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
> Pharo-fuel@lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel
_______________________________________________
Pharo-fuel mailing list
Pharo-fuel@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel
--
Mariano
http://marianopeck.wordpress.com
Pharo-fuel mailing list
Pharo-fuel@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel