[Vm-dev] Re: [squeak-dev] The Trunk: Graphics-fbs.209.mcz

Eliot Miranda eliot.miranda at gmail.com
Tue Apr 23 17:20:11 UTC 2013


Hi Frank,

    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'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.

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.

On Tue, Apr 23, 2013 at 2:34 AM, Frank Shearar <frank.shearar at gmail.com>wrote:

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


-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20130423/693082c9/attachment.htm


More information about the Vm-dev mailing list