The Trunk: Graphics-fbs.209.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
21 messages Options
12
Reply | Threaded
Open this post in threaded view
|

The Trunk: Graphics-fbs.209.mcz

commits-2
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!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Frank Shearar-3
On 23 April 2013 09:50,  <[hidden email]> 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 it just
pauses. Squeak's burning a hole in the CPU, and updating is
uninterruptable.

frank

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Frank Shearar-3
In reply to this post by commits-2
On 23 April 2013 09:50,  <[hidden email]> 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

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Frank Shearar-3
On 23 April 2013 10:34, Frank Shearar <[hidden email]> wrote:

> On 23 April 2013 09:50,  <[hidden email]> 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.

I've pushed out a new config map, update-fbs.231, which loads Morphic
before Graphics, thus ensuring that there's always a #asGrafPort in
the image. I still don't like that Cog sprang a leak there, but at
least things are back on track.

All I'd wanted to do was move a method from one package to another: I
really hadn't expected to completely smash updating. Is there anything
I could have done before pushing to trunk to prevent this?

frank

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Frank Shearar-3
On 23 April 2013 10:41, Frank Shearar <[hidden email]> wrote:

> On 23 April 2013 10:34, Frank Shearar <[hidden email]> wrote:
>> On 23 April 2013 09:50,  <[hidden email]> 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.
>
> I've pushed out a new config map, update-fbs.231

And updates-fbs.232 makes sure that Nebraska, XML-Parser, Universes
don't accidentally find their way back into the trunk image through
the update stream.

frank

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Bert Freudenberg
On 2013-04-23, at 11:55, Frank Shearar <[hidden email]> wrote:

> And updates-fbs.232 makes sure that Nebraska, XML-Parser, Universes
> don't accidentally find their way back into the trunk image through
> the update stream.


Why is that? Why would we not want to have the XML parser in trunk? The plan was for the build server to use an image that didn't have the packages, but load the trunk map to build a full image. Otherwise, how would we update the XML package?

- Bert -



Reply | Threaded
Open this post in threaded view
|

Moving methods (was: The Trunk: Graphics-fbs.209.mcz)

Bert Freudenberg
In reply to this post by Frank Shearar-3
On 2013-04-23, at 11:41, Frank Shearar <[hidden email]> wrote:

> I've pushed out a new config map, update-fbs.231, which loads Morphic
> before Graphics, thus ensuring that there's always a #asGrafPort in
> the image. I still don't like that Cog sprang a leak there, but at
> least things are back on track.
>
> All I'd wanted to do was move a method from one package to another: I
> really hadn't expected to completely smash updating. Is there anything
> I could have done before pushing to trunk to prevent this?
>
> frank

Moving an active method from one package to another is fragile, as you discovered. The moved-to package must be loaded first, otherwise the method is deleted from the system.

The proper way to let MC handle this would be to load the two packages together, in which case the order would not matter. But this had worse consequences so we're using the update-map order instead.

A possible solution would be to go through the whole update map first and find the "bad" moves (those where a method or class would be deleted and later added again) and load only these. Since it only reclassifies, the actual system behavior would be unchanged. But the loading would succeed without introducing obsolete instances and missing methods.

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Eliot Miranda-2
In reply to this post by Frank Shearar-3
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 <[hidden email]> wrote:
On 23 April 2013 09:50,  <[hidden email]> 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


Reply | Threaded
Open this post in threaded view
|

Re: Moving methods (was: The Trunk: Graphics-fbs.209.mcz)

Frank Shearar-3
In reply to this post by Bert Freudenberg
On 23 April 2013 15:14, Bert Freudenberg <[hidden email]> wrote:

> On 2013-04-23, at 11:41, Frank Shearar <[hidden email]> wrote:
>
>> I've pushed out a new config map, update-fbs.231, which loads Morphic
>> before Graphics, thus ensuring that there's always a #asGrafPort in
>> the image. I still don't like that Cog sprang a leak there, but at
>> least things are back on track.
>>
>> All I'd wanted to do was move a method from one package to another: I
>> really hadn't expected to completely smash updating. Is there anything
>> I could have done before pushing to trunk to prevent this?
>>
>> frank
>
> Moving an active method from one package to another is fragile, as you discovered. The moved-to package must be loaded first, otherwise the method is deleted from the system.
>
> The proper way to let MC handle this would be to load the two packages together, in which case the order would not matter. But this had worse consequences so we're using the update-map order instead.

Do you mean using slices? If so, what are the worse problems?

> A possible solution would be to go through the whole update map first and find the "bad" moves (those where a method or class would be deleted and later added again) and load only these. Since it only reclassifies, the actual system behavior would be unchanged. But the loading would succeed without introducing obsolete instances and missing methods.

That sounds like it could work. You have to get all those new updates
anyway, so getting them up front and "merging" them wouldn't be (much
of) a performance hit.

> - Bert -

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Frank Shearar-3
In reply to this post by Eliot Miranda-2
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 <[hidden email]> 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 <[hidden email]>
> wrote:
>>
>> On 23 April 2013 09:50,  <[hidden email]> 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
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Moving methods

Bert Freudenberg
In reply to this post by Frank Shearar-3
On 2013-04-24, at 11:24, Frank Shearar <[hidden email]> wrote:

> On 23 April 2013 15:14, Bert Freudenberg <[hidden email]> wrote:
>> Moving an active method from one package to another is fragile, as you discovered. The moved-to package must be loaded first, otherwise the method is deleted from the system.
>>
>> The proper way to let MC handle this would be to load the two packages together, in which case the order would not matter. But this had worse consequences so we're using the update-map order instead.
>
> Do you mean using slices?

No. Just adding all versions from a config to a single MCVersionLoader and then loading them in one go.

> If so, what are the worse problems?

I don't quite remember. Might have to do with initialization order. It's a lot less predictable, for sure.

>> A possible solution would be to go through the whole update map first and find the "bad" moves (those where a method or class would be deleted and later added again) and load only these. Since it only reclassifies, the actual system behavior would be unchanged. But the loading would succeed without introducing obsolete instances and missing methods.
>
> That sounds like it could work. You have to get all those new updates
> anyway, so getting them up front and "merging" them wouldn't be (much
> of) a performance hit.


Well, it is going to be a a little more complicated if we want to avoid diffing twice (which is the major time consumer when loading an MC version). OTOH the critical cases might be easy to detect, and they should be few and far between ...

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: Moving methods (was: The Trunk: Graphics-fbs.209.mcz)

Karl Ramberg
In reply to this post by Frank Shearar-3


On Wed, Apr 24, 2013 at 11:24 AM, Frank Shearar <[hidden email]> wrote:
On 23 April 2013 15:14, Bert Freudenberg <[hidden email]> wrote:
> On 2013-04-23, at 11:41, Frank Shearar <[hidden email]> wrote:
>
>> I've pushed out a new config map, update-fbs.231, which loads Morphic
>> before Graphics, thus ensuring that there's always a #asGrafPort in
>> the image. I still don't like that Cog sprang a leak there, but at
>> least things are back on track.
>>
>> All I'd wanted to do was move a method from one package to another: I
>> really hadn't expected to completely smash updating. Is there anything
>> I could have done before pushing to trunk to prevent this?
>>
>> frank
>
> Moving an active method from one package to another is fragile, as you discovered. The moved-to package must be loaded first, otherwise the method is deleted from the system.
>
> The proper way to let MC handle this would be to load the two packages together, in which case the order would not matter. But this had worse consequences so we're using the update-map order instead.

Do you mean using slices? If so, what are the worse problems?

> A possible solution would be to go through the whole update map first and find the "bad" moves (those where a method or class would be deleted and later added again) and load only these. Since it only reclassifies, the actual system behavior would be unchanged. But the loading would succeed without introducing obsolete instances and missing methods.
Could a preamble with the method in concern inlined work ?
 
Karl
 

 
That sounds like it could work. You have to get all those new updates
anyway, so getting them up front and "merging" them wouldn't be (much
of) a performance hit.

> - Bert -




Reply | Threaded
Open this post in threaded view
|

Re: Moving methods

Bert Freudenberg
On 2013-04-24, at 16:46, karl ramberg <[hidden email]> wrote:

> On 23 April 2013 15:14, Bert Freudenberg <[hidden email]> wrote:
>>  A possible solution would be to go through the whole update map first and find the "bad" moves (those where a method or class would be deleted and later added again) and load only these. Since it only reclassifies, the actual system behavior would be unchanged. But the loading would succeed without introducing obsolete instances and missing methods.
>> Could a preamble with the method in concern inlined work ?
>  
> Karl

That would be way too fragile, IMHO. And I think it would make contributing such recategorizations harder, not easier.

- Bert -


Reply | Threaded
Open this post in threaded view
|

Re: Moving methods

Karl Ramberg


On Wed, Apr 24, 2013 at 4:58 PM, Bert Freudenberg <[hidden email]> wrote:
On 2013-04-24, at 16:46, karl ramberg <[hidden email]> wrote:

> On 23 April 2013 15:14, Bert Freudenberg <[hidden email]> wrote:
>>  A possible solution would be to go through the whole update map first and find the "bad" moves (those where a method or class would be deleted and later added again) and load only these. Since it only reclassifies, the actual system behavior would be unchanged. But the loading would succeed without introducing obsolete instances and missing methods.
>> Could a preamble with the method in concern inlined work ?
>
> Karl

That would be way too fragile, IMHO. And I think it would make contributing such recategorizations harder, not easier.

- Bert -



Ok
Karl
 


Reply | Threaded
Open this post in threaded view
|

How to move a method from one package to another in the Trunk (was: Re: [squeak-dev] The Trunk: Graphics-fbs.209.mcz)

Levente Uzonyi-2
In reply to this post by Frank Shearar-3
On Tue, 23 Apr 2013, Frank Shearar wrote:

>
> I've pushed out a new config map, update-fbs.231, which loads Morphic
> before Graphics, thus ensuring that there's always a #asGrafPort in
> the image. I still don't like that Cog sprang a leak there, but at
> least things are back on track.
>
> All I'd wanted to do was move a method from one package to another: I
> really hadn't expected to completely smash updating. Is there anything

Instead of changing the order of packages in the config map, you could
have created a map which contains the new version of Morphic (which
contains the method), but still the previous version of Graphics (which
also has the method). So when that update map is fully processed, the
method is still in the image (in 2 packages). The method will be
removed from Graphics, when the updater loads the newer version of it.

> I could have done before pushing to trunk to prevent this?

Yes. This is how we used to do it:
1) upload the package which you want to contain the method (in this case
Morphic)
2) create a new update map (containting the latest version of all
packages as usual)
3) upload the package which you don't want to contain the method (in this
case Graphics)

This way you don't have to tweak the update map.


Levente

>
> frank
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Eliot Miranda-2
In reply to this post by Frank Shearar-3
Hi Frank,

On Wed, Apr 24, 2013 at 3:37 AM, Frank Shearar <[hidden email]> 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:

0x178dffc8 s BitBlt class(Object)>doesNotUnderstand: asGrafPort
0x17b5de40 s FormCanvas>portClass
0x17b5ea64 s FormCanvas>setForm:
0x17b5efc8 s FormCanvas class>on:
0x17b5f4d0 s DisplayText>composeForm
0x17b5f97c s DisplayText>form
0x1784e2cc s DisplayText>displayOn:at:clippingBox:rule:fillColor:
0x1784e270 s DisplayText(DisplayObject)>displayOn:at:
0x17da03ec s ByteString(String)>displayOn:at:textColor:
0x17da0784 s ByteString(String)>displayOn:at:
0x17da0b78 s ByteString(String)>displayAt:
0x1784dd20 s MorphicProject(Object)>primitiveError:
0x1784dd7c s MorphicProject>handleFatalDrawingError:
0x1784d5f0 s [] in WorldState>displayWorldSafely:
0x1784d6a8 s BlockClosure>cull:cull:
0x1784d560 s [] in BlockClosure>ifError:
0x1784d64c s BlockClosure>cull:
0x1784d704 s [] in MethodContext(ContextPart)>handleSignal:
0x1784d760 s BlockClosure>ensure:
0x1784d4d8 s MethodContext(ContextPart)>handleSignal:
0x1784d3c4 s MessageNotUnderstood(Exception)>signal
0x1784d420 s BitBlt class(Object)>doesNotUnderstand: asGrafPort
0x1784d7bc s FormCanvas>portClass
0x1784d818 s FormCanvas>resetGrafPort
0x1784d874 s FormCanvas>copy
0x1784d8d0 s FormCanvas>copyOrigin:clipRect:
0x1784d92c s FormCanvas>copyClipRect:
0x1784d200 s [] in WorldState>drawWorld:submorphs:invalidAreasOn:
0x1784d1a4 s Rectangle>allAreasOutsideList:startingAt:do:
0x1784d988 s Rectangle>allAreasOutsideList:do:
0x1784d078 s [] in WorldState>drawWorld:submorphs:invalidAreasOn:
0x1784d9e4 s Array(SequenceableCollection)>do:
0x1784ced4 s WorldState>drawWorld:submorphs:invalidAreasOn:
0x1784da40 s [] in WorldState>displayWorld:submorphs:
0x1784da9c s FormCanvas>roundCornersOf:in:during:
0x1784daf8 s FormCanvas(Canvas)>roundCornersOf:during:
0x1784cdf4 s WorldState>displayWorld:submorphs:
0x1784ce70 s PasteUpMorph>privateOuterDisplayWorld
0x1784db54 s PasteUpMorph>displayWorld
0x1784dbb0 s [] in WorldState>displayWorldSafely:
0x1784d47c s BlockClosure>on:do:
0x1784cd74 s BlockClosure>ifError:
0x1784ccec s WorldState>displayWorldSafely:
0x1784cc3c s WorldState>doOneCycleNowFor:
0x1784dc0c s WorldState>doOneCycleFor:
0x1784dc68 s PasteUpMorph>doOneCycle
0x1784dcc4 s [] in Project class>spawnNewProcess
0x1784c424 s [] in BlockClosure>newProcess 

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 <[hidden email]> 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 <[hidden email]>
> wrote:
>>
>> On 23 April 2013 09:50,  <[hidden email]> 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


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Frank Shearar-3
On 24 April 2013 17:50, Eliot Miranda <[hidden email]> wrote:

> Hi Frank,
>
> On Wed, Apr 24, 2013 at 3:37 AM, Frank Shearar <[hidden email]>
> 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?

(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:)).

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 <[hidden email]> 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 <[hidden email]>
>> > wrote:
>> >>
>> >> On 23 April 2013 09:50,  <[hidden email]> 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
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: How to move a method from one package to another in the Trunk (was: Re: [squeak-dev] The Trunk: Graphics-fbs.209.mcz)

Frank Shearar-3
In reply to this post by Levente Uzonyi-2
On 24 April 2013 16:47, Levente Uzonyi <[hidden email]> wrote:

> On Tue, 23 Apr 2013, Frank Shearar wrote:
>
>>
>> I've pushed out a new config map, update-fbs.231, which loads Morphic
>> before Graphics, thus ensuring that there's always a #asGrafPort in
>> the image. I still don't like that Cog sprang a leak there, but at
>> least things are back on track.
>>
>> All I'd wanted to do was move a method from one package to another: I
>> really hadn't expected to completely smash updating. Is there anything
>
>
> Instead of changing the order of packages in the config map, you could have
> created a map which contains the new version of Morphic (which contains the
> method), but still the previous version of Graphics (which also has the
> method). So when that update map is fully processed, the method is still in
> the image (in 2 packages). The method will be removed from Graphics, when
> the updater loads the newer version of it.
>
>> I could have done before pushing to trunk to prevent this?
>
>
> Yes. This is how we used to do it:
> 1) upload the package which you want to contain the method (in this case
> Morphic)
> 2) create a new update map (containting the latest version of all packages
> as usual)
> 3) upload the package which you don't want to contain the method (in this
> case Graphics)
>
> This way you don't have to tweak the update map.

Thanks. This is more "how do I do this when I know it'll smash things
up" when I was asking more "how can I know that this will smash things
up". But perhaps "do it whenever you move a method between packages"
is a good enough heuristic to avoid most pain points.

frank

> Levente
>
>>
>> frank
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: How to move a method from one package to another in the Trunk (was: Re: [squeak-dev] The Trunk: Graphics-fbs.209.mcz)

Levente Uzonyi-2
On Wed, 24 Apr 2013, Frank Shearar wrote:

> On 24 April 2013 16:47, Levente Uzonyi <[hidden email]> wrote:
>> On Tue, 23 Apr 2013, Frank Shearar wrote:
>>
>>>
>>> I've pushed out a new config map, update-fbs.231, which loads Morphic
>>> before Graphics, thus ensuring that there's always a #asGrafPort in
>>> the image. I still don't like that Cog sprang a leak there, but at
>>> least things are back on track.
>>>
>>> All I'd wanted to do was move a method from one package to another: I
>>> really hadn't expected to completely smash updating. Is there anything
>>
>>
>> Instead of changing the order of packages in the config map, you could have
>> created a map which contains the new version of Morphic (which contains the
>> method), but still the previous version of Graphics (which also has the
>> method). So when that update map is fully processed, the method is still in
>> the image (in 2 packages). The method will be removed from Graphics, when
>> the updater loads the newer version of it.
>>
>>> I could have done before pushing to trunk to prevent this?
>>
>>
>> Yes. This is how we used to do it:
>> 1) upload the package which you want to contain the method (in this case
>> Morphic)
>> 2) create a new update map (containting the latest version of all packages
>> as usual)
>> 3) upload the package which you don't want to contain the method (in this
>> case Graphics)
>>
>> This way you don't have to tweak the update map.
>
> Thanks. This is more "how do I do this when I know it'll smash things
> up" when I was asking more "how can I know that this will smash things
> up". But perhaps "do it whenever you move a method between packages"
> is a good enough heuristic to avoid most pain points.

Indeed. If you care about people who try to keep updating their long
forked Trunk-based images, then this can help them a lot.


Levente

>
> frank
>
>> Levente
>>
>>>
>>> frank
>>>
>>>
>>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Graphics-fbs.209.mcz

Eliot Miranda-2
In reply to this post by Frank Shearar-3


On Wed, Apr 24, 2013 at 10:40 AM, Frank Shearar <[hidden email]> wrote:
On 24 April 2013 17:50, Eliot Miranda <[hidden email]> wrote:
> Hi Frank,
>
> On Wed, Apr 24, 2013 at 3:37 AM, Frank Shearar <[hidden email]>
> 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

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 <[hidden email]> 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 <[hidden email]>
>> > wrote:
>> >>
>> >> On 23 April 2013 09:50,  <[hidden email]> 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


12