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

Frank Shearar frank.shearar at gmail.com
Wed Apr 24 10:37:58 UTC 2013


Hi Eliot,

There's an image in your inbox. This crashes on my laptop (Ubuntu
10.10, 32 bit machine), but on my work machine (Ubuntu 10.10, 64 bit
machine) just hangs forever.

IIRC this is the same behaviour as the last image I sent you, with my
parsing derivatives stuff triggering the overwrite.

frank

On 23 April 2013 18:20, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> 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
>
>
>


More information about the Squeak-dev mailing list