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

Frank Shearar frank.shearar at gmail.com
Thu Apr 25 17:31:15 UTC 2013


On 25 April 2013 18:23, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>
>
> On Wed, Apr 24, 2013 at 10:40 AM, Frank Shearar <frank.shearar at gmail.com>
> wrote:
>>
>> On 24 April 2013 17:50, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>> > Hi Frank,
>> >
>> > On Wed, Apr 24, 2013 at 3:37 AM, Frank Shearar <frank.shearar at gmail.com>
>> > wrote:
>> >>
>> >> 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.
>> >
>> >
>> > This is an infinite recursion, since asGrafPort is needed to create a
>> > notifier, and so provokes another attempt to open one:
>>
>> OK, that makes perfect sense. While I don't suggest we solve the
>> halting problem, is there a way to make the symptom look less like
>> it's Cog's fault?
>
>
> Yes.  Two things.  One is to not attempt to produce a stack back-trace while
> the system is GCing (but that'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.
>>
>>
>> (The other image I sent you should _not_ have an infinite loop, even
>> though it'll look like it (because it's about 6000 blocks nested
>> through #compose:)).
>
>
> What's the pointer to that.  I only found graphics-install-crash.zip in my
> inbox

Er, oops. Apparently you only get that mail if I hit the send button?

frank

>> frank
>>
>> >> 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
>> >> >
>> >> >
>> >> >
>> >>
>> >
>> >
>> >
>> > --
>> > best,
>> > Eliot
>> >
>> >
>> >
>>
>
>
>
> --
> best,
> Eliot
>
>
>


More information about the Squeak-dev mailing list