<div dir="ltr">Hi Esteban,<div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 18, 2016 at 9:27 AM, Esteban Lorenzano <span dir="ltr">&lt;<a href="mailto:estebanlm@gmail.com" target="_blank">estebanlm@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> <br><div style="word-wrap:break-word"><br><div><blockquote type="cite"><div>On 18 Mar 2016, at 16:56, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt; wrote:</div><br><div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">Hi Esteban,<br><br></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br>On Mar 18, 2016, at 8:23 AM, Esteban Lorenzano &lt;<a href="mailto:estebanlm@gmail.com" target="_blank">estebanlm@gmail.com</a>&gt; wrote:<br><br></div><blockquote type="cite" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div><span></span></div></blockquote><blockquote type="cite" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div><br><div><blockquote type="cite"><div>On 18 Mar 2016, at 16:11, Nicolas Cellier &lt;<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>&gt; wrote:</div><br><div><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-03-18 16:00 GMT+01:00 Esteban Lorenzano<span> </span><span dir="ltr">&lt;<a href="mailto:estebanlm@gmail.com" target="_blank">estebanlm@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><br>Hi Nico,<br><br>somewhere between this and VMMaker.oscog-dtl.1730 all PharoVMs become unusable :(<br>are you aware of this?<br>maybe I’m forgetting something in my builds?<br><br>cheers,<br>Esteban<br><br></blockquote><div><br></div><div>Hi Esteban,<br></div><div>Please provide more feedback<br></div><div>- can/can&#39;t compile ?<br></div></div></div></div></div></blockquote><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>- VM crash ? instantly or on specific operations ?</div></div></div></div></div></blockquote><div><div>can compile, but image is unusable (no refresh of UI… error with Bitmaps I think). </div></div><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>- all OS or OS specific ?<br></div></div></div></div></div></blockquote><div>all environments (mac, linux and win) have this problem.</div><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>- which flavour - stack/cogit x spur/v3 x 32/64 bits ?</div></div></div></div></div></blockquote><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>  I presume cogit-spur-32bits for Pharo head?<br></div></div></div></div></div></blockquote><div>yes</div><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div>Maybe a few explanations accompanying a Jenkins link would do it<br></div></div></div></div></div></div></blockquote><div><br></div><div>I don’t know what more to say :)</div><div>but if you download: </div><div><br></div><div>wget -O-<span> </span><a href="http://get.pharo.org/50+vmLatest" target="_blank">get.pharo.org/50+vmLatest</a><span> </span>| bash </div><div><br></div><div>and execute it… you will see the problem.</div><div><br></div><div>and that does not happens if you execute </div><div><br></div><div><div>wget -O-<span> </span><a href="http://get.pharo.org/50+vm" target="_blank">get.pharo.org/50+vm</a><span> </span>| bash </div><div><br></div></div><div>(the only difference between those VMs are your commits).</div></div></div></blockquote><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Some things to try (Clément is across the hall; he can help)</span></div></blockquote><div>no, today I’m not there :)</div><br><blockquote type="cite"><div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">1. build an assert-enabled VM and run this.  You may get very useful error information.  You can use the -trace flag to get it to output the sends the VM makes and see where the first error is</div></div></blockquote><div>that’s the first thing I did… it does not says anything :(</div><div>The only information I have is a stack trace: </div></div></div></blockquote><div><br></div>So start the assert VM under gdb or lldb.  Put a breakpoint in the function &quot;warning&quot; and run it with &quot;run -breaksel <span style="background-color:rgba(255,255,255,0)">errorImproperStore&quot; and the VM will breakpoint in warning when errorImproperStore is sent.</span><div><br></div><div>Now get a C backtrace and see if the VM is in the interpreter or if in machine code.  If in interpreter walk up the C stack until you&#39;re in the function interpret then use &quot;call shortPrintFrameAndCallers(localFP)&quot; to get the backtrace of frames.  If this fails, rerun using a debug VM (localFP may be optimised and so it may work only in the unoptimised debug VM).</div><div><br></div><div>If not in the interpreter (there will be some weird call stack pointing back into form frame that won&#39;t have a name, but just an address), use &quot;call printStackCallStack()&quot; to get the backtrace.</div><div><br></div><div>Now, once you have located the frame for Bitmap(Object)&gt;&gt;at:put:, use &quot;call printFrame(TheFramePointerValue)&quot; to print the frame in detail, including arguments, temporaries and stack contents, etc.  That should show you what the argument is and whether there&#39;s a bug in Bitmap&gt;&gt;at:put; or some other bug.  You can print the sender frame by using the &quot;saved fp&quot; value.  You should be able to narrow down that cause a lot using these functions.  It&#39;s not a patch on the Smalltalk debugger; it&#39;s slow and error prone, but you can debug images that won&#39;t start.  It&#39;s much easier in the simulator, but possible in gdb/lldb.</div><div><br></div><div>Good luck!</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div><br></div><div><div>Bitmap(Object)&gt;&gt;error:</div><div>Bitmap(Object)&gt;&gt;errorImproperStore</div><div>Bitmap(Object)&gt;&gt;at:put:</div><div>Bitmap class(ArrayedCollection class)&gt;&gt;with:</div><div>Color&gt;&gt;bitPatternForDepth:</div><div>Form&gt;&gt;bitPatternFor:</div><div>BitBlt&gt;&gt;fillColor:</div><div>BitBlt&gt;&gt;setDestForm:sourceForm:fillColor:combinationRule:destOrigin:sourceOrigin:extent:clipRect:</div><div>BitBlt class&gt;&gt;destForm:sourceForm:fillColor:combinationRule:destOrigin:sourceOrigin:extent:clipRect:</div><div>Form(DisplayMedium)&gt;&gt;fillShape:fillColor:at:</div><div>Form(DisplayMedium)&gt;&gt;fillShape:fillColor:</div><div>CursorWithMask&gt;&gt;asCursorForm</div><div>HandMorph&gt;&gt;showTemporaryCursor:hotSpotOffset:</div><div>HandMorph&gt;&gt;showTemporaryCursor:</div><div>RubEditingArea(RubAbstractTextArea)&gt;&gt;showOverEditableTextCursor</div><div>RubEditingArea(RubAbstractTextArea)&gt;&gt;mouseEnter:</div><div>RubEditingArea(Morph)&gt;&gt;handleMouseEnter:</div><div>MouseMoveEvent(MouseEvent)&gt;&gt;sentTo:</div><div>MouseMoveEvent&gt;&gt;sentTo:</div><div>RubEditingArea(Morph)&gt;&gt;handleEvent:</div><div>MouseOverHandler&gt;&gt;transform:from:andSendTo:</div><div>[ self transform: evt from: anEvent andSendTo: aLeftMorph ] in MouseOverHandler&gt;&gt;inform:to:originatedFrom:ifNotFocusedDo: in Block: [ self transform: evt from: anEvent andSendTo: aLe...etc...</div><div>True&gt;&gt;ifTrue:ifFalse:</div><div>MouseOverHandler&gt;&gt;inform:to:originatedFrom:ifNotFocusedDo:</div><div>[ :anEnteredMorph | </div><div>self</div><div><span style="white-space:pre-wrap">        </span>inform: asMouseEnterEvent</div><div><span style="white-space:pre-wrap">        </span>to: anEnteredMorph</div><div><span style="white-space:pre-wrap">        </span>originatedFrom: anEvent</div><div><span style="white-space:pre-wrap">        </span>ifNotFocusedDo: [  ] ] in MouseOverHandler&gt;&gt;handleAsMouseEnter: in Block: [ :anEnteredMorph | ...</div><div>Array(SequenceableCollection)&gt;&gt;reverseDo:</div><div>MouseOverHandler&gt;&gt;handleAsMouseEnter:</div><div>MouseOverHandler&gt;&gt;processMouseOver:</div><div>HandMorph&gt;&gt;handleEvent:</div><div>HandMorph&gt;&gt;processEvents</div><div><br></div><div><div>cheers,</div><div>Esteban</div></div><div><br></div></div><br><blockquote type="cite"><div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">2. Open the image in the simulator, but that may be difficult with pharo cuz it uses so many external libraries.  Nite that you can still, with a little effort, do this but you have to write the plugin simulation code that maps from calls in the simulator to calls against the host VM&#39;s facilities.  For example, in the simulator the FilePluginSimulator defers to the host Smalltalk system to access files so the simulated VM can still access files just like the real VM, which defers to the stdio library or win32 APIs to access files.</div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">The simulator is not just worth maintaining it is /essential/ to being able to debug the VM effectively.  It should be a goal to have the Pharo image runnable in the simulator.</div></div></blockquote><blockquote type="cite"><div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br><blockquote type="cite"><div><div><div><br></div><div>cheers, </div><div>Esteban</div><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div><br></div></div><div>I&#39;ve experimented macosx stack spur 64 bits with simulator,<br></div><div>and I use most of these changes in my own VM branch, except the fetch64/store64 message sends<br></div><div>I&#39;ll check ASAP (this will be tonight)<br><br></div><div>Nicolas<br></div><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">&gt; On 17 Mar 2016, at 22:49,<span> </span><a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a><span> </span>wrote:<br>&gt;<br>&gt;<br>&gt; Nicolas Cellier uploaded a new version of VMMaker to project VM Maker:<br>&gt;<span> </span><a href="http://source.squeak.org/VMMaker/VMMaker.oscog-nice.1733.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/VMMaker/VMMaker.oscog-nice.1733.mcz</a><br>&gt;<br>&gt; ==================== Summary ====================<br>&gt;<br>&gt; Name: VMMaker.oscog-nice.1733<br>&gt; Author: nice<br>&gt; Time: 17 March 2016, 11:45:52.436 pm<br>&gt; UUID: cc4513ea-67e5-4b41-b7bd-2fc790ac0102<br>&gt; Ancestors: VMMaker.oscog-nice.1732<br>&gt;<br>&gt; Oups (Oops) forgot the &lt;doNotGenerate&gt; for simulated #stSizeOf: version.<br>&gt;<br>&gt; =============== Diff against VMMaker.oscog-nice.1732 ===============<br>&gt;<br>&gt; Item was changed:<br>&gt;  ----- Method: SpurMemoryManager&gt;&gt;stSizeOf: (in category &#39;object access&#39;) -----<br>&gt;  stSizeOf: oop<br>&gt;       &quot;Return the number of indexable fields in the receiver&quot;<br>&gt; +     &lt;doNotGenerate&gt;<br>&gt;       ^oop basicSize!<br>&gt;</blockquote></div></div></div></div></blockquote></div></div></blockquote></div></div></blockquote></div><br></div><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>