<br><br><div class="gmail_quote">On Wed, Apr 24, 2013 at 10:40 AM, Frank Shearar <span dir="ltr">&lt;<a href="mailto:frank.shearar@gmail.com" target="_blank">frank.shearar@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On 24 April 2013 17:50, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt; wrote:<br>
&gt; Hi Frank,<br>
&gt;<br>
</div><div class="im">&gt; On Wed, Apr 24, 2013 at 3:37 AM, Frank Shearar &lt;<a href="mailto:frank.shearar@gmail.com">frank.shearar@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Eliot,<br>
&gt;&gt;<br>
&gt;&gt; There&#39;s an image in your inbox. This crashes on my laptop (Ubuntu<br>
&gt;&gt; 10.10, 32 bit machine), but on my work machine (Ubuntu 10.10, 64 bit<br>
&gt;&gt; machine) just hangs forever.<br>
&gt;<br>
&gt;<br>
&gt; This is an infinite recursion, since asGrafPort is needed to create a<br>
&gt; notifier, and so provokes another attempt to open one:<br>
<br>
</div>OK, that makes perfect sense. While I don&#39;t suggest we solve the<br>
halting problem, is there a way to make the symptom look less like<br>
it&#39;s Cog&#39;s fault?<br></blockquote><div><br></div><div>Yes.  Two things.  One is to not attempt to produce a stack back-trace while the system is GCing (but that&#39;s new infrastructure to set some flags during GC, check them afterwards and perform the postponed activities; gahhh).  The second is to (perhaps) add some infinite recursion checking e.g. when memory grows.</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
(The other image I sent you should _not_ have an infinite loop, even<br>
though it&#39;ll look like it (because it&#39;s about 6000 blocks nested<br>
through #compose:)).<br></blockquote><div><br></div><div>What&#39;s the pointer to that.  I only found graphics-install-crash.zip in my inbox</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<span class="HOEnZb"><font color="#888888"><br>
frank<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
&gt;&gt; IIRC this is the same behaviour as the last image I sent you, with my<br>
&gt;&gt; parsing derivatives stuff triggering the overwrite.<br>
&gt;&gt;<br>
&gt;&gt; frank<br>
&gt;&gt;<br>
&gt;&gt; On 23 April 2013 18:20, Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hi Frank,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;     I need to be able to reproduce this.  The error message means what<br>
&gt;&gt; &gt; it<br>
&gt;&gt; &gt; says; some code in the VM (primitives usually) has written beyond the<br>
&gt;&gt; &gt; end of<br>
&gt;&gt; &gt; an object, which, if it weren&#39;t happening to the last object in memory<br>
&gt;&gt; &gt; would<br>
&gt;&gt; &gt; smash the following object, crashing the GC.  So when this happens<br>
&gt;&gt; &gt; please<br>
&gt;&gt; &gt; attempt to create an image that reproduces the bug and then I can track<br>
&gt;&gt; &gt; down<br>
&gt;&gt; &gt; the offending overwrite.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; The VM fills the nursery zone with a specific bit pattern (each 4-byte<br>
&gt;&gt; &gt; word<br>
&gt;&gt; &gt; contains its address) and checks on allocation that the allocation<br>
&gt;&gt; &gt; pointer<br>
&gt;&gt; &gt; is pointing at a word with the right contents.  If not, it aborts.  In<br>
&gt;&gt; &gt; this<br>
&gt;&gt; &gt; case the effects are benign (because the overwrite is writing beyond the<br>
&gt;&gt; &gt; allocation pointer where there are no objects).  But if whatever code<br>
&gt;&gt; &gt; overwrote did so to an object in the middle of the heap a less easily<br>
&gt;&gt; &gt; diagnosed crash would occur.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Tue, Apr 23, 2013 at 2:34 AM, Frank Shearar &lt;<a href="mailto:frank.shearar@gmail.com">frank.shearar@gmail.com</a>&gt;<br>
&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On 23 April 2013 09:50,  &lt;<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; Frank Shearar uploaded a new version of Graphics to project The<br>
&gt;&gt; &gt;&gt; &gt; Trunk:<br>
&gt;&gt; &gt;&gt; &gt; <a href="http://source.squeak.org/trunk/Graphics-fbs.209.mcz" target="_blank">http://source.squeak.org/trunk/Graphics-fbs.209.mcz</a><br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; ==================== Summary ====================<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Name: Graphics-fbs.209<br>
&gt;&gt; &gt;&gt; &gt; Author: fbs<br>
&gt;&gt; &gt;&gt; &gt; Time: 23 April 2013, 9:50:00.413 am<br>
&gt;&gt; &gt;&gt; &gt; UUID: 4dd577f2-2a70-4e21-8efa-5847b3ad804c<br>
&gt;&gt; &gt;&gt; &gt; Ancestors: Graphics-tpr.208<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; #asGrafPort belongs in the Morphic package.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; =============== Diff against Graphics-tpr.208 ===============<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Item was removed:<br>
&gt;&gt; &gt;&gt; &gt; - ----- Method: BitBlt class&gt;&gt;asGrafPort (in category &#39;instance<br>
&gt;&gt; &gt;&gt; &gt; creation&#39;) -----<br>
&gt;&gt; &gt;&gt; &gt; - asGrafPort<br>
&gt;&gt; &gt;&gt; &gt; -       &quot;Return the GrafPort associated with the receiver&quot;<br>
&gt;&gt; &gt;&gt; &gt; -       ^GrafPort!<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I don&#39;t see why, but this and its pair Morphic-fbs-648 seem to have<br>
&gt;&gt; &gt;&gt; triggered a nasty bug in Cog r.2714.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; To trigger it,<br>
&gt;&gt; &gt;&gt; * clone <a href="https://github.com/frankshearar/squeak-ci/" target="_blank">https://github.com/frankshearar/squeak-ci/</a><br>
&gt;&gt; &gt;&gt; * open the Squeak4.5.image therein, with a (Linux) Cog r.2714<br>
&gt;&gt; &gt;&gt; * update it.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Everything proceeds fine until installing this update. On my weak<br>
&gt;&gt; &gt;&gt; little laptop things pause, and then I see the dreaded &quot;(last object<br>
&gt;&gt; &gt;&gt; overwritten)&quot; message. On my much more powerful work machine (also a<br>
&gt;&gt; &gt;&gt; Linux box) it just pauses. Squeak&#39;s burning a hole in the CPU, and<br>
&gt;&gt; &gt;&gt; updating is uninterruptable.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On my work machine, upgrading using an Interpreter VM just leaves me<br>
&gt;&gt; &gt;&gt; hanging.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &lt;cog&#39;s output follows:&gt;<br>
&gt;&gt; &gt;&gt; last object overwritten<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Squeak VM version: 4.0-2714 #1 Thu Apr  4 11:52:39 PDT 2013 gcc 4.1.2<br>
&gt;&gt; &gt;&gt; Built from: CoInterpreter VMMaker.oscog-eem.282 uuid:<br>
&gt;&gt; &gt;&gt; 6c2f2048-555b-4d37-a9eb-4d9252acf3b9 Apr  4 2013<br>
&gt;&gt; &gt;&gt; With: StackToRegisterMappingCogit VMMaker.oscog-eem.282 uuid:<br>
&gt;&gt; &gt;&gt; 6c2f2048-555b-4d37-a9eb-4d9252acf3b9 Apr  4 2013<br>
&gt;&gt; &gt;&gt; Revision: VM: r2714 <a href="http://www.squeakvm.org/svn/squeak/branches/Cog" target="_blank">http://www.squeakvm.org/svn/squeak/branches/Cog</a><br>
&gt;&gt; &gt;&gt; Plugins: r2545<br>
&gt;&gt; &gt;&gt; <a href="http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins" target="_blank">http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins</a><br>
&gt;&gt; &gt;&gt; Build host: Linux mcqfes 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST<br>
&gt;&gt; &gt;&gt; 2009 i686 i686 i386 GNU/Linux<br>
&gt;&gt; &gt;&gt; plugin path: target/cog.r2714/coglinux/bin/../lib/squeak/4.0-2714<br>
&gt;&gt; &gt;&gt; [default:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; /home/frank/Documents/squeak-ci/target/cog.r2714/coglinux/lib/squeak/4.0-2714/]<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; C stack backtrace:<br>
&gt;&gt; &gt;&gt; target/cog.r2714/coglinux/bin/../lib/squeak/4.0-2714/squeak[0x805cca1]<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; target/cog.r2714/coglinux/bin/../lib/squeak/4.0-2714/squeak(error+0x19)[0x805cf89]<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; target/cog.r2714/coglinux/bin/../lib/squeak/4.0-2714/squeak(instantiateClassindexableSize+0xa9)[0x807a159]<br>
&gt;&gt; &gt;&gt; target/cog.r2714/coglinux/bin/../lib/squeak/4.0-2714/squeak[0x807b21b]<br>
&gt;&gt; &gt;&gt; [0x77745451]<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; target/cog.r2714/coglinux/bin/../lib/squeak/4.0-2714/squeak(interpret+0x1eb)[0x808080b]<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; target/cog.r2714/coglinux/bin/../lib/squeak/4.0-2714/squeak(main+0x397)[0x805d367]<br>
&gt;&gt; &gt;&gt; /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0x12abd6]<br>
&gt;&gt; &gt;&gt; target/cog.r2714/coglinux/bin/../lib/squeak/4.0-2714/squeak[0x805ad61]<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Smalltalk stack dump:<br>
&gt;&gt; &gt;&gt; 0xbfe2ad38 M Bitmap class(Behavior)&gt;new: 0x77b25270: a(n) Bitmap class<br>
&gt;&gt; &gt;&gt; 0xbfe2ad54 M Form&gt;setExtent:depth: 0x7ff6e7a0: a(n) Form<br>
&gt;&gt; &gt;&gt; 0xbfe2ad74 M Form class&gt;extent:depth: 0x77b27480: a(n) Form class<br>
&gt;&gt; &gt;&gt; 0xbfe2ada0 M DisplayText&gt;composeForm 0x7ff6d8fc: a(n) DisplayText<br>
&gt;&gt; &gt;&gt; 0xbfe2adb8 M DisplayText&gt;form 0x7ff6d8fc: a(n) DisplayText<br>
&gt;&gt; &gt;&gt; 0xbfe2add8 M DisplayText&gt;displayOn:at:clippingBox:rule:fillColor:<br>
&gt;&gt; &gt;&gt; 0x7ff6d8fc: a(n) DisplayText<br>
&gt;&gt; &gt;&gt; 0xbfe2ae04 M DisplayText(DisplayObject)&gt;displayOn:at: 0x7ff6d8fc: a(n)<br>
&gt;&gt; &gt;&gt; DisplayText<br>
&gt;&gt; &gt;&gt; 0xbfe2ae24 M ByteString(String)&gt;displayOn:at:textColor: 0x7ff6d450:<br>
&gt;&gt; &gt;&gt; a(n) ByteString<br>
&gt;&gt; &gt;&gt; 0xbfe81ca0 M ByteString(String)&gt;displayOn:at: 0x7ff6d450: a(n)<br>
&gt;&gt; &gt;&gt; ByteString<br>
&gt;&gt; &gt;&gt; 0xbfe81cc0 M ByteString(String)&gt;displayAt: 0x7ff6d450: a(n) ByteString<br>
&gt;&gt; &gt;&gt; 0xbfe81cdc M Debugger class(Object)&gt;primitiveError: 0x77dc864c: a(n)<br>
&gt;&gt; &gt;&gt; Debugger class<br>
&gt;&gt; &gt;&gt; 0xbfe81cfc M [] in Debugger<br>
&gt;&gt; &gt;&gt; class&gt;morphicOpenOn:context:label:contents:fullView: 0x77dc864c: a(n)<br>
&gt;&gt; &gt;&gt; Debugger class<br>
&gt;&gt; &gt;&gt; 0xbfe81d18 M BlockClosure&gt;cull: 0x7ff577ac: a(n) BlockClosure<br>
&gt;&gt; &gt;&gt; 0xbfe81d38 M [] in MethodContext(ContextPart)&gt;handleSignal:<br>
&gt;&gt; &gt;&gt; 0x7ff6cc68: a(n) MethodContext<br>
&gt;&gt; &gt;&gt; 0xbfe81d58 M BlockClosure&gt;ensure: 0x7ff6cd24: a(n) BlockClosure<br>
&gt;&gt; &gt;&gt; 0xbfe81d78 M MethodContext(ContextPart)&gt;handleSignal: 0x7ff6cc68: a(n)<br>
&gt;&gt; &gt;&gt; MethodContext<br>
&gt;&gt; &gt;&gt; 0xbfe81d94 M MessageNotUnderstood(Exception)&gt;signal 0x7ff6cad4: a(n)<br>
&gt;&gt; &gt;&gt; MessageNotUnderstood<br>
&gt;&gt; &gt;&gt; 0xbfe81db4 M BitBlt class(Object)&gt;doesNotUnderstand: asGrafPort<br>
&gt;&gt; &gt;&gt; 0x77b22b48: a(n) BitBlt class<br>
&gt;&gt; &gt;&gt; 0xbfe81dd0 M FormCanvas&gt;portClass 0x7ff5ca70: a(n) FormCanvas<br>
&gt;&gt; &gt;&gt; 0xbfe81de8 M FormCanvas&gt;setForm: 0x7ff5ca70: a(n) FormCanvas<br>
&gt;&gt; &gt;&gt; 0xbfe81e04 M FormCanvas class&gt;extent:depth: 0x77b2d750: a(n) FormCanvas<br>
&gt;&gt; &gt;&gt; class<br>
&gt;&gt; &gt;&gt; 0xbfe81e28 M RectangleMorph(Morph)&gt;imageForm:forRectangle: 0x7ff5c550:<br>
&gt;&gt; &gt;&gt; a(n) RectangleMorph<br>
&gt;&gt; &gt;&gt; 0xbfe39d14 M RectangleMorph(Morph)&gt;imageFormForRectangle: 0x7ff5c550:<br>
&gt;&gt; &gt;&gt; a(n) RectangleMorph<br>
&gt;&gt; &gt;&gt; 0xbfe39d30 M RectangleMorph(Morph)&gt;imageForm 0x7ff5c550: a(n)<br>
&gt;&gt; &gt;&gt; RectangleMorph<br>
&gt;&gt; &gt;&gt; 0xbfe39d5c M ScrollBar class&gt;createArrowOfDirection:size:color:<br>
&gt;&gt; &gt;&gt; 0x77b29268: a(n) ScrollBar class<br>
&gt;&gt; &gt;&gt; 0xbfe39d80 M [] in ScrollBar class&gt;createArrowImagesCache 0x77b29268:<br>
&gt;&gt; &gt;&gt; a(n) ScrollBar class<br>
&gt;&gt; &gt;&gt; 0xbfe39db0 M LRUCache&gt;at: 0x785bcddc: a(n) LRUCache<br>
&gt;&gt; &gt;&gt; 0xbfe39dcc M ScrollBar class&gt;arrowOfDirection:size:color: 0x77b29268:<br>
&gt;&gt; &gt;&gt; a(n) ScrollBar class<br>
&gt;&gt; &gt;&gt; 0xbfe39df0 M ScrollBar&gt;upImage 0x7ff5b408: a(n) ScrollBar<br>
&gt;&gt; &gt;&gt; 0xbfe39e10 M ScrollBar&gt;updateUpButtonImage 0x7ff5b408: a(n) ScrollBar<br>
&gt;&gt; &gt;&gt; 0xbfe39e2c M ScrollBar&gt;sliderColor: 0x7ff5b408: a(n) ScrollBar<br>
&gt;&gt; &gt;&gt; 0xbfe44cf8 I ScrollBar&gt;adoptPaneColor: 0x7ff5b408: a(n) ScrollBar<br>
&gt;&gt; &gt;&gt; 0xbfe44d18 M [] in PluggableListMorphPlus(Morph)&gt;adoptPaneColor:<br>
&gt;&gt; &gt;&gt; 0x7ff5ab30: a(n) PluggableListMorphPlus<br>
&gt;&gt; &gt;&gt; 0xbfe44d3c M Array(SequenceableCollection)&gt;do: 0x7ff5bea4: a(n) Array<br>
&gt;&gt; &gt;&gt; 0xbfe44d58 M PluggableListMorphPlus(Morph)&gt;submorphsDo: 0x7ff5ab30:<br>
&gt;&gt; &gt;&gt; a(n) PluggableListMorphPlus<br>
&gt;&gt; &gt;&gt; 0xbfe44d74 M PluggableListMorphPlus(Morph)&gt;adoptPaneColor: 0x7ff5ab30:<br>
&gt;&gt; &gt;&gt; a(n) PluggableListMorphPlus<br>
&gt;&gt; &gt;&gt; 0xbfe44d90 M PluggableListMorphPlus(ScrollPane)&gt;adoptPaneColor:<br>
&gt;&gt; &gt;&gt; 0x7ff5ab30: a(n) PluggableListMorphPlus<br>
&gt;&gt; &gt;&gt; 0xbfe44dc0 M PluggableSystemWindow(SystemWindow)&gt;addMorph:fullFrame:<br>
&gt;&gt; &gt;&gt; 0x7ff5803c: a(n) PluggableSystemWindow<br>
&gt;&gt; &gt;&gt; 0xbfe44de0 M PluggableSystemWindow&gt;addPaneMorph: 0x7ff5803c: a(n)<br>
&gt;&gt; &gt;&gt; PluggableSystemWindow<br>
&gt;&gt; &gt;&gt; 0xbfe44dfc M MorphicToolBuilder&gt;add:to: 0x7ff57880: a(n)<br>
&gt;&gt; &gt;&gt; MorphicToolBuilder<br>
&gt;&gt; &gt;&gt; 0xbfe44e2c M MorphicToolBuilder&gt;buildPluggableList: 0x7ff57880: a(n)<br>
&gt;&gt; &gt;&gt; MorphicToolBuilder<br>
&gt;&gt; &gt;&gt; 0xbfe6ccec M PluggableListSpec&gt;buildWith: 0x7ff57b74: a(n)<br>
&gt;&gt; &gt;&gt; PluggableListSpec<br>
&gt;&gt; &gt;&gt; 0xbfe6cd08 M [] in MorphicToolBuilder(ToolBuilder)&gt;buildAll:in:<br>
&gt;&gt; &gt;&gt; 0x7ff57880: a(n)<br>
&gt;&gt; &gt;&gt;  MorphicToolBuilder<br>
&gt;&gt; &gt;&gt; 0xbfe6cd28 M OrderedCollection&gt;do: 0x7ff578dc: a(n) OrderedCollection<br>
&gt;&gt; &gt;&gt; 0xbfe6cd48 M MorphicToolBuilder(ToolBuilder)&gt;buildAll:in: 0x7ff57880:<br>
&gt;&gt; &gt;&gt; a(n) MorphicToolBuilder<br>
&gt;&gt; &gt;&gt; 0xbfe6cd74 M MorphicToolBuilder&gt;buildPluggableWindow: 0x7ff57880: a(n)<br>
&gt;&gt; &gt;&gt; MorphicToolBuilder<br>
&gt;&gt; &gt;&gt; 0xbfe6cd90 M PluggableWindowSpec&gt;buildWith: 0x7ff57898: a(n)<br>
&gt;&gt; &gt;&gt; PluggableWindowSpec<br>
&gt;&gt; &gt;&gt; 0xbfe6cdb4 I MorphicToolBuilder(ToolBuilder)&gt;build: 0x7ff57880: a(n)<br>
&gt;&gt; &gt;&gt; MorphicToolBuilder<br>
&gt;&gt; &gt;&gt; 0xbfe6cddc I MorphicToolBuilder&gt;open: 0x7ff57880: a(n)<br>
&gt;&gt; &gt;&gt; MorphicToolBuilder<br>
&gt;&gt; &gt;&gt; 0xbfe6ce00 I MorphicToolBuilder(ToolBuilder)&gt;openDebugger: 0x7ff57880:<br>
&gt;&gt; &gt;&gt; a(n) MorphicToolBuilder<br>
&gt;&gt; &gt;&gt; 0xbfe6ce28 M Debugger&gt;openNotifierContents:label: 0x7ff577c4: a(n)<br>
&gt;&gt; &gt;&gt; Debugger<br>
&gt;&gt; &gt;&gt; 0xbfea4d08 M [] in Debugger<br>
&gt;&gt; &gt;&gt; class&gt;morphicOpenOn:context:label:contents:fullView: 0x77dc864c: a(n)<br>
&gt;&gt; &gt;&gt; Debugger class<br>
&gt;&gt; &gt;&gt; 0xbfea4d24 M BlockClosure&gt;on:do: 0x7ff5777c: a(n) BlockClosure<br>
&gt;&gt; &gt;&gt; 0xbfea4d60 M [] in Debugger<br>
&gt;&gt; &gt;&gt; class&gt;morphicOpenOn:context:label:contents:fullView: 0x77dc864c: a(n)<br>
&gt;&gt; &gt;&gt; Debugger class<br>
&gt;&gt; &gt;&gt; 0xbfea4d88 M WorldState&gt;runStepMethodsIn: 0x77834af8: a(n) WorldState<br>
&gt;&gt; &gt;&gt; 0xbfea4da4 M PasteUpMorph&gt;runStepMethods 0x77c6a5ec: a(n) PasteUpMorph<br>
&gt;&gt; &gt;&gt; 0xbfea4dc0 M WorldState&gt;doOneCycleNowFor: 0x77834af8: a(n) WorldState<br>
&gt;&gt; &gt;&gt; 0xbfea4ddc M WorldState&gt;doOneCycleFor: 0x77834af8: a(n) WorldState<br>
&gt;&gt; &gt;&gt; 0xbfea4df8 M PasteUpMorph&gt;doOneCycle 0x77c6a5ec: a(n) PasteUpMorph<br>
&gt;&gt; &gt;&gt; 0xbfea4e10 M [] in Project class&gt;spawnNewProcess 0x77c54960: a(n)<br>
&gt;&gt; &gt;&gt; Project<br>
&gt;&gt; &gt;&gt; class<br>
&gt;&gt; &gt;&gt; 0xbfea4e30 I [] in BlockClosure&gt;newProcess 0x7ff557f4: a(n)<br>
&gt;&gt; &gt;&gt; BlockClosure<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Most recent primitives<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; basicNew<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; basicNew<br>
&gt;&gt; &gt;&gt; shallowCopy<br>
&gt;&gt; &gt;&gt; shallowCopy<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; basicNew<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; basicNew<br>
&gt;&gt; &gt;&gt; shallowCopy<br>
&gt;&gt; &gt;&gt; shallowCopy<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; basicScanCharactersFrom:to:in:rightX:stopConditions:kern:<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; perform:<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; species<br>
&gt;&gt; &gt;&gt; new:<br>
&gt;&gt; &gt;&gt; replaceFrom:to:with:startingAt:<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; basicNew<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; perform:with:<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; species<br>
&gt;&gt; &gt;&gt; species<br>
&gt;&gt; &gt;&gt; at:put:<br>
&gt;&gt; &gt;&gt; @<br>
&gt;&gt; &gt;&gt; basicNew<br>
&gt;&gt; &gt;&gt; basicNew:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; stack page bytes 4096 available headroom 3300 minimum unused headroom<br>
&gt;&gt; &gt;&gt; 2228<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; (last object overwritten)<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; frank<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; best,<br>
&gt;&gt; &gt; Eliot<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; best,<br>
&gt; Eliot<br>
&gt;<br>
&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>