<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><br><div>Begin forwarded message:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>From: </b></span><span style="font-family:'Helvetica'; font-size:medium;">"<a href="mailto:roberto.minelli@usi.ch">roberto.minelli@usi.ch</a>" &lt;<a href="mailto:roberto.minelli@usi.ch">roberto.minelli@usi.ch</a>&gt;<br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>Subject: </b></span><span style="font-family:'Helvetica'; font-size:medium;"><b>Re: [Pharo-fuel] [Pharo-dev] Corrupt BlockClosure</b><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>Date: </b></span><span style="font-family:'Helvetica'; font-size:medium;">24. Mai 2013 08:10:19 MESZ<br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>To: </b></span><span style="font-family:'Helvetica'; font-size:medium;">The Fuel Project &lt;<a href="mailto:pharo-fuel@lists.gforge.inria.fr">pharo-fuel@lists.gforge.inria.fr</a>&gt;<br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>Reply-To: </b></span><span style="font-family:'Helvetica'; font-size:medium;">The Fuel Project &lt;<a href="mailto:pharo-fuel@lists.gforge.inria.fr">pharo-fuel@lists.gforge.inria.fr</a>&gt;<br></span></div><br><div>Hi,<br><br>Thanks all of you for interest ;)<br><br>On May 24, 2013, at 7:15 AM, Max Leske &lt;<a href="mailto:maxleske@gmail.com">maxleske@gmail.com</a>&gt;<br> wrote:<br><br><blockquote type="cite">I played around with reverting the method and serializing but that doesn't change anything (the existing BlockClosure is obviously not modified).<br>Then I thought that maybe the method was changed during a running DFSession but still couldn't reproduce.<br></blockquote><br>Me neither!!<br><br><blockquote type="cite"><br>@Roberto<br>Can you tell us anything about what you did befor / during / after running your session?<br></blockquote><br>Nope. Unfortunately I've a couple of "broken sessions" I cannot serialize because of that bug.. But all of them refers sooner or later to the DFSession&gt;&gt;#numberOfMethodCalls method. Dunno why.<br><br><blockquote type="cite">@Roberto<br>Is it possible to reproduce the stack with a new session? Or did this only happen once?<br></blockquote><br>I have no clue how to reproduce, but it did not happen only once. As I said, there are 3/4 sessions I couldn't export due to this SubscriptOutOfBounds.<br><br>Cheers,<br>Roby<br><br><br><blockquote type="cite"><br><br>On 24.05.2013, at 06:44, Max Leske &lt;<a href="mailto:maxleske@gmail.com">maxleske@gmail.com</a>&gt; wrote:<br><br><blockquote type="cite"><br>On 23.05.2013, at 22:58, Camille Teruel &lt;<a href="mailto:camille.teruel@gmail.com">camille.teruel@gmail.com</a>&gt; wrote:<br><br><blockquote type="cite">Hi,<br><br>This is indeed strange, the BlockClosure has an incorrect startpc (31 instead of 43). You can fix it with: <br>theBlock instVar: 2 put: 43. <br>The wrong startpc corresponds to the beginning of the block in the previous version of the method (DFSession&gt;&gt;#numberOfMethodCalls), but I don't know why.<br></blockquote><br>Would it help to recompile the method?<br><br><blockquote type="cite">I don't know fuel enough but could it be because the method of the block changed between serialization and materialization?<br></blockquote><br>No, there was never a materialization of that session.<br><br><blockquote type="cite"><br>Camille <br><br>On 23 mai 2013, at 21:02, Max Leske wrote:<br><br><blockquote type="cite">Hi Marcus<br><br>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.<br><br>The image with the corrupt BlockClosure is available here: <a href="https://dl.dropboxusercontent.com/u/6281855/DFlow-SubscriptOutOfBounds.zip">https://dl.dropboxusercontent.com/u/6281855/DFlow-SubscriptOutOfBounds.zip</a>.<br>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&gt;&gt;fuelAccept:<br><br>@Roberto<br>Is it possible to reproduce the stack with a new session? Or did this only happen once?<br><br><br>Cheers,<br>Max<br><br><br>Begin forwarded message:<br><br><blockquote type="cite">From: Mariano Martinez Peck &lt;<a href="mailto:marianopeck@gmail.com">marianopeck@gmail.com</a>&gt;<br>Subject: Re: [Pharo-fuel] [Fuel] SubscriptOutOfBounds: 27<br>Date: 23. Mai 2013 14:23:45 MESZ<br>To: The Fuel Project &lt;<a href="mailto:pharo-fuel@lists.gforge.inria.fr">pharo-fuel@lists.gforge.inria.fr</a>&gt;<br>Reply-To: The Fuel Project &lt;<a href="mailto:pharo-fuel@lists.gforge.inria.fr">pharo-fuel@lists.gforge.inria.fr</a>&gt;<br><br>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.<br>Also, can you isolate and just try to serialize them alone and reproduce the problem? In other words, a reproducible test case? :)<br>Thanks!<br><br><br>On Thu, May 23, 2013 at 8:41 AM, Max Leske &lt;<a href="mailto:maxleske@gmail.com">maxleske@gmail.com</a>&gt; wrote:<br>What's the compiled method? Is it a special one? Which selector in which class?<br><br>Max<br><br>On 23.05.2013, at 12:45, "<a href="mailto:roberto.minelli@usi.ch">roberto.minelli@usi.ch</a>" &lt;<a href="mailto:roberto.minelli@usi.ch">roberto.minelli@usi.ch</a>&gt; wrote:<br><br><blockquote type="cite">Hi,<br><br>While using Fuel in a 2.0 image to serialize some objects (including CompiledMethods) I'm getting this error: SubscriptOutOfBounds: 27.<br><br>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).<br><br>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 &lt;error in printString: evaluate "self printString" to debug&gt;) and when I try to printString to debug I got the STACK#2 which in turn does not bring me to any possible solution.<br><br>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.<br><br>Thanks in advance,<br>Roby<br><br>############################################################################################<br>######################################### STACK#1 ###########################################<br>###########################################################################################<br>CompiledMethod(Object)&gt;&gt;errorSubscriptBounds:<br>CompiledMethod(Object)&gt;&gt;at:<br>InstructionStream&gt;&gt;interpretNextInstructionFor:<br>CompiledMethod&gt;&gt;abstractBytecodeMessageAt: in Block: [(InstructionStream new method: self pc: pc)...<br>BlockClosure&gt;&gt;on:do:<br>CompiledMethod&gt;&gt;abstractBytecodeMessageAt:<br>BlockClosure&gt;&gt;blockCreationBytecodeMessage<br>BlockClosure&gt;&gt;endPC<br>BlockClosure&gt;&gt;abstractBytecodeMessagesDo:<br>BlockClosure&gt;&gt;isClean<br>BlockClosure&gt;&gt;shouldBeSubstitutedByCleanCopy<br>BlockClosure&gt;&gt;fuelAccept:<br>FLFullGeneralMapper(FLLightGeneralMapper)&gt;&gt;mapAndTrace:<br>FLFullGlobalMapper&gt;&gt;mapAndTrace: in Block: [(anObject class == CompiledMethod...<br>FLLargeIdentityDictionary&gt;&gt;at:ifAbsent:<br>FLFullGlobalMapper&gt;&gt;mapAndTrace:<br>FLPluggableSubstitutionMapper&gt;&gt;mapAndTrace:<br>FLPluggableSubstitutionMapper&gt;&gt;mapAndTrace:<br>FLAnalysis&gt;&gt;mapAndTrace:<br>FLAnalysis&gt;&gt;run<br>FLAnalyzer&gt;&gt;setDefaultAnalysis in Block: [:anObject | (FLAnalysis...<br>FLAnalyzer&gt;&gt;analysisFor:<br>FLSerialization&gt;&gt;analysisStep<br>FLSerialization&gt;&gt;run<br>DFSerializer(FLSerializer)&gt;&gt;setDefaultSerialization in Block: [:anObject :anEncoder | (FLSerialization...<br>DFSerializer(FLSerializer)&gt;&gt;serialize:on: in Block: [:anEncoder | ...<br>FLEncoder class&gt;&gt;on:globalEnvironment:do: in Block: [aBlock value: anEncoder]<br>BlockClosure&gt;&gt;ensure:<br>FLEncoder class&gt;&gt;on:globalEnvironment:do:<br>DFSerializer(FLSerializer)&gt;&gt;serialize:on:<br><br><br>############################################################################################<br>######################################### STACK#2 ###########################################<br>############################################################################################<br>Decompiler(Object)&gt;&gt;error:<br>Decompiler&gt;&gt;decompileBlock:<br>BlockClosure&gt;&gt;decompile<br>BlockClosure&gt;&gt;printOn:<br>BlockClosure(Object)&gt;&gt;printStringLimitedTo: in Block: [:s | self printOn: s]<br>String class(SequenceableCollection class)&gt;&gt;streamContents:limitedTo:<br>BlockClosure(Object)&gt;&gt;printStringLimitedTo:<br>BlockClosure(Object)&gt;&gt;printString<br>BlockClosure&gt;&gt;DoIt<br>Compiler&gt;&gt;evaluate:in:to:notifying:ifFail:logged:<br>SmalltalkEditor&gt;&gt;evaluateSelectionAndDo: in Block: [rcvr class evaluatorClass new...<br>BlockClosure&gt;&gt;on:do:<br>SmalltalkEditor&gt;&gt;evaluateSelectionAndDo:<br>SmalltalkEditor&gt;&gt;evaluateSelection<br>PluggableTextMorph&gt;&gt;doIt in Block: [textMorph editor evaluateSelection]<br>PluggableTextMorph&gt;&gt;handleEdit: in Block: [result := editBlock value]<br>TextMorphForEditView(TextMorph)&gt;&gt;handleEdit:<br>PluggableTextMorph&gt;&gt;handleEdit:<br>PluggableTextMorph&gt;&gt;doIt<br>SmalltalkEditor class&gt;&gt;buildSmalltalkEditorKeymappingsOn: in Block: [:morph | morph doIt]<br>BlockClosure&gt;&gt;cull:<br>BlockClosure&gt;&gt;cull:cull:<br>BlockClosure&gt;&gt;cull:cull:cull:<br>KMCategoryTarget&gt;&gt;completeMatch:buffer:<br>KMKeymap&gt;&gt;notifyCompleteMatchTo:buffer: in Block: [:l | l completeMatch: self buffer: aBuffer]<br>Array(SequenceableCollection)&gt;&gt;do:<br>KMKeymap&gt;&gt;notifyCompleteMatchTo:buffer:<br>KMKeymap&gt;&gt;onMatchWith:notify:andDo:<br>KMCategory&gt;&gt;onMatchWith:notify:andDo: in Block: [:entry | entry...<br>Set&gt;&gt;do:<br><br><br><br>_______________________________________________<br>Pharo-fuel mailing list<br><a href="mailto:Pharo-fuel@lists.gforge.inria.fr">Pharo-fuel@lists.gforge.inria.fr</a><br>http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel<br></blockquote><br>_______________________________________________<br>Pharo-fuel mailing list<br><a href="mailto:Pharo-fuel@lists.gforge.inria.fr">Pharo-fuel@lists.gforge.inria.fr</a><br>http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel<br><br><br><br>-- <br>Mariano<br>http://marianopeck.wordpress.com<br>_______________________________________________<br>Pharo-fuel mailing list<br>Pharo-fuel@lists.gforge.inria.fr<br>http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel<br></blockquote><br></blockquote><br></blockquote><br></blockquote><br>_______________________________________________<br>Pharo-fuel mailing list<br><a href="mailto:Pharo-fuel@lists.gforge.inria.fr">Pharo-fuel@lists.gforge.inria.fr</a><br>http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel<br></blockquote><br><br>_______________________________________________<br>Pharo-fuel mailing list<br><a href="mailto:Pharo-fuel@lists.gforge.inria.fr">Pharo-fuel@lists.gforge.inria.fr</a><br>http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-fuel<br></div></blockquote></div><br></body></html>