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