Hi Chris,<br><br><div class="gmail_quote">On Thu, Jan 20, 2011 at 8:55 AM, Chris Muller <span dir="ltr">&lt;<a href="mailto:asqueaker@gmail.com">asqueaker@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
One of the tests only fails in Cog, with a very strange phenomena.<br>
<br>
It&#39;s easy to reproduce with the line of code from the test:<br>
<br>
     ObjectsTool initializedInstance showAll openCenteredInWorld<br>
<br>
the strange part is in the passing of the &quot;(colors at: i)&quot; argument<br>
from ColorForm&gt;&gt;colormapIfNeededForDepth:.  As you can see in the<br>
stack trace below (or in debugger from above expression), the third<br>
element is definitely an instance of Color.<br>
<br>
Yet, the message ends up being sent to a LargePositiveInteger,<br>
4278192128 to be exact.<br></blockquote><div><br></div><div>This bug is understood and fixed in my sources and I&#39;ll roll out new VMs over the weekend.  The bug is the result of the ColorArray leaking into the VM&#39;s atCache which means that later on it responds to at: in the Interpreter using the at: primitive that answers the integer value in the ColorArray without converting the value into a color.  This was a regression introduced when I fixed the objects-as-methods issues late last year.  Thanks to Matthew Fulmer for creating the reproducible case.</div>
<div><br></div><div>best</div><div>Eliot</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
 - Chris<br>
<br>
<br>
<br>
Subject: [BUG]LargePositiveInteger(Object)&gt;&gt;doesNotUnderstand:<br>
#pixelValueForDepth:<br>
19 January 2011 7:59:01.819 pm<br>
<br>
VM: unix - Smalltalk<br>
Image: Squeak4.2alpha [latest update: #10910]<br>
<br>
SecurityManager state:<br>
Restricted: false<br>
FileAccess: true<br>
SocketAccess: true<br>
<br>
LargePositiveInteger(Object)&gt;&gt;doesNotUnderstand: #pixelValueForDepth:<br>
        Receiver: 4278192128<br>
        Arguments and temporary variables:<br>
                aMessage:       pixelValueForDepth: 32<br>
                exception:      MessageNotUnderstood: LargePositiveInteger&gt;&gt;pixelValueForDepth:<br>
                resumeValue:    nil<br>
        Receiver&#39;s instance variables:<br>
4278192128<br>
<br>
ColorForm&gt;&gt;colormapIfNeededForDepth:<br>
        Receiver: ColorForm(52x29x8)<br>
        Arguments and temporary variables:<br>
                destDepth:      32<br>
                newMap:         a Bitmap of length 256<br>
                i:      3<br>
                iLimiT:         256<br>
        Receiver&#39;s instance variables:<br>
                bits:   #[225 121 17 227 23 227 219 212 205 189 188 174 187 185 156<br>
164 156 157 1...etc...<br>
                width:  52<br>
                height:         29<br>
                depth:  8<br>
                offset:         0@0<br>
                colors:         a ColorArray(Color transparent (Color r: 0.0 g: 0.0 b:<br>
0.031) (Color r:...etc...<br>
                cachedDepth:    nil<br>
                cachedColormap:         nil<br>
<br>
ColorForm&gt;&gt;colormapIfNeededFor:<br>
        Receiver: ColorForm(52x29x8)<br>
        Arguments and temporary variables:<br>
                destForm:       Form(212x49x32)<br>
                newMap:         nil<br>
                color:  nil<br>
                pv:     nil<br>
                i:      nil<br>
                iLimiT:         nil<br>
        Receiver&#39;s instance variables:<br>
                bits:   #[225 121 17 227 23 227 219 212 205 189 188 174 187 185 156<br>
164 156 157 1...etc...<br>
                width:  52<br>
                height:         29<br>
                depth:  8<br>
                offset:         0@0<br>
                colors:         a ColorArray(Color transparent (Color r: 0.0 g: 0.0 b:<br>
0.031) (Color r:...etc...<br>
                cachedDepth:    nil<br>
                cachedColormap:         nil<br>
<br>
FormCanvas&gt;&gt;image:at:sourceRect:rule:<br>
        Receiver: a FormCanvas on: Form(212x49x32)<br>
        Arguments and temporary variables:<br>
                aForm:  ColorForm(52x29x8)<br>
                aPoint:         131@10<br>
                sourceRect:     0@0 corner: 52@29<br>
                rule:   24<br>
        Receiver&#39;s instance variables:<br>
                target:         nil<br>
                filterSelector:         nil<br>
                origin:         0@0<br>
                clipRect:       0@0 corner: 212@49<br>
                form:   Form(212x49x32)<br>
                port:   a GrafPort<br>
                shadowColor:    nil<br>
<br>
FormCanvas(Canvas)&gt;&gt;translucentImage:at:sourceRect:<br>
        Receiver: a FormCanvas on: Form(212x49x32)<br>
        Arguments and temporary variables:<br>
                aForm:  ColorForm(52x29x8)<br>
                aPoint:         131@10<br>
                sourceRect:     0@0 corner: 52@29<br>
        Receiver&#39;s instance variables:<br>
                target:         nil<br>
                filterSelector:         nil<br>
                origin:         0@0<br>
                clipRect:       0@0 corner: 212@49<br>
                form:   Form(212x49x32)<br>
                port:   a GrafPort<br>
                shadowColor:    nil<br>
<br>
FormCanvas(Canvas)&gt;&gt;translucentImage:at:<br>
        Receiver: a FormCanvas on: Form(212x49x32)<br>
        Arguments and temporary variables:<br>
                aForm:  ColorForm(52x29x8)<br>
                aPoint:         131@10<br>
        Receiver&#39;s instance variables:<br>
                target:         nil<br>
                filterSelector:         nil<br>
                origin:         0@0<br>
                clipRect:       0@0 corner: 212@49<br>
                form:   Form(212x49x32)<br>
                port:   a GrafPort<br>
                shadowColor:    nil<br>
<br>
ThreePhaseButtonMorph&gt;&gt;drawOn:<br>
        Receiver: 3PButton(#goUp:with: 3545)<br>
        Arguments and temporary variables:<br>
                aCanvas:        a FormCanvas on: Form(212x49x32)<br>
        Receiver&#39;s instance variables:<br>
                bounds:         131@10 corner: 183@39<br>
                owner:  an AlignmentMorph&lt;script controls&gt;(2589)<br>
                submorphs:      #()<br>
                fullBounds:     131@10 corner: 183@39<br>
                color:  Color blue<br>
                extension:      a MorphExtension (3716) [balloonText]  [externalName =<br>
Go Button ]<br>
                image:  ColorForm(52x29x8)<br>
                offImage:       ColorForm(52x29x8)<br>
                pressedImage:   ColorForm(52x29x8)<br>
                state:  #off<br>
                target:         a StandardScriptingSystem<br>
                actionSelector:         #goUp:with:<br>
                arguments:      {nil . 3PButton(#goUp:with: 3545)}<br>
                actWhen:        #buttonUp<br>
<br>
FormCanvas(Canvas)&gt;&gt;draw:<br>
        Receiver: a FormCanvas on: Form(212x49x32)<br>
        Arguments and temporary variables:<br>
                anObject:       3PButton(#goUp:with: 3545)<br>
        Receiver&#39;s instance variables:<br>
                target:         nil<br>
                filterSelector:         nil<br>
                origin:         0@0<br>
                clipRect:       0@0 corner: 212@49<br>
                form:   Form(212x49x32)<br>
                port:   a GrafPort<br>
                shadowColor:    nil<br>
<br>
FormCanvas(Canvas)&gt;&gt;drawMorph:<br>
        Receiver: a FormCanvas on: Form(212x49x32)<br>
        Arguments and temporary variables:<br>
                aMorph:         3PButton(#goUp:with: 3545)<br>
        Receiver&#39;s instance variables:<br>
                target:         nil<br>
                filterSelector:         nil<br>
                origin:         0@0<br>
                clipRect:       0@0 corner: 212@49<br>
                form:   Form(212x49x32)<br>
                port:   a GrafPort<br>
                shadowColor:    nil<br>
<br>
[] in ThreePhaseButtonMorph(Morph)&gt;&gt;fullDrawOn:<br>
        Receiver: 3PButton(#goUp:with: 3545)<br>
        Arguments and temporary variables:<br>
                aCanvas:        a FormCanvas on: Form(212x49x32)<br>
        Receiver&#39;s instance variables:<br>
                bounds:         131@10 corner: 183@39<br>
                owner:  an AlignmentMorph&lt;script controls&gt;(2589)<br>
                submorphs:      #()<br>
                fullBounds:     131@10 corner: 183@39<br>
                color:  Color blue<br>
                extension:      a MorphExtension (3716) [balloonText]  [externalName =<br>
Go Button ]<br>
                image:  ColorForm(52x29x8)<br>
                offImage:       ColorForm(52x29x8)<br>
                pressedImage:   ColorForm(52x29x8)<br>
                state:  #off<br>
                target:         a StandardScriptingSystem<br>
                actionSelector:         #goUp:with:<br>
                arguments:      {nil . 3PButton(#goUp:with: 3545)}<br>
                actWhen:        #buttonUp<br>
<br>
FormCanvas&gt;&gt;roundCornersOf:in:during:<br>
        Receiver: a FormCanvas on: Form(212x49x32)<br>
        Arguments and temporary variables:<br>
                aMorph:         3PButton(#goUp:with: 3545)<br>
                bounds:         131@10 corner: 183@39<br>
                aBlock:         [closure] in ThreePhaseButtonMorph(Morph)&gt;&gt;fullDrawOn:<br>
        Receiver&#39;s instance variables:<br>
                target:         nil<br>
                filterSelector:         nil<br>
                origin:         0@0<br>
                clipRect:       0@0 corner: 212@49<br>
                form:   Form(212x49x32)<br>
                port:   a GrafPort<br>
                shadowColor:    nil<br>
<br>
FormCanvas(Canvas)&gt;&gt;roundCornersOf:during:<br>
        Receiver: a FormCanvas on: Form(212x49x32)<br>
        Arguments and temporary variables:<br>
                aMorph:         3PButton(#goUp:with: 3545)<br>
                aBlock:         [closure] in ThreePhaseButtonMorph(Morph)&gt;&gt;fullDrawOn:<br>
        Receiver&#39;s instance variables:<br>
                target:         nil<br>
                filterSelector:         nil<br>
                origin:         0@0<br>
                clipRect:       0@0 corner: 212@49<br>
                form:   Form(212x49x32)<br>
                port:   a GrafPort<br>
                shadowColor:    nil<br>
<br>
ThreePhaseButtonMorph(Morph)&gt;&gt;fullDrawOn:<br>
        Receiver: 3PButton(#goUp:with: 3545)<br>
        Arguments and temporary variables:<br>
                aCanvas:        a FormCanvas on: Form(212x49x32)<br>
        Receiver&#39;s instance variables:<br>
                bounds:         131@10 corner: 183@39<br>
                owner:  an AlignmentMorph&lt;script controls&gt;(2589)<br>
                submorphs:      #()<br>
                fullBounds:     131@10 corner: 183@39<br>
                color:  Color blue<br>
                extension:      a MorphExtension (3716) [balloonText]  [externalName =<br>
Go Button ]<br>
                image:  ColorForm(52x29x8)<br>
                offImage:       ColorForm(52x29x8)<br>
                pressedImage:   ColorForm(52x29x8)<br>
                state:  #off<br>
                target:         a StandardScriptingSystem<br>
                actionSelector:         #goUp:with:<br>
                arguments:      {nil . 3PButton(#goUp:with: 3545)}<br>
                actWhen:        #buttonUp<br>
<br>
FormCanvas(Canvas)&gt;&gt;fullDraw:<br>
        Receiver: a FormCanvas on: Form(212x49x32)<br>
        Arguments and temporary variables:<br>
                anObject:       3PButton(#goUp:with: 3545)<br>
        Receiver&#39;s instance variables:<br>
                target:         nil<br>
                filterSelector:         nil<br>
                origin:         0@0<br>
                clipRect:       0@0 corner: 212@49<br>
                form:   Form(212x49x32)<br>
                port:   a GrafPort<br>
                shadowColor:    nil<br>
<br>
FormCanvas(Canvas)&gt;&gt;fullDrawMorph:<br>
        Receiver: a FormCanvas on: Form(212x49x32)<br>
        Arguments and temporary variables:<br>
                aMorph:         3PButton(#goUp:with: 3545)<br>
        Receiver&#39;s instance variables:<br>
                target:         nil<br>
                filterSelector:         nil<br>
                origin:         0@0<br>
                clipRect:       0@0 corner: 212@49<br>
                form:   Form(212x49x32)<br>
                port:   a GrafPort<br>
                shadowColor:    nil<br>
<br>
[] in [] in AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
        Receiver: an AlignmentMorph&lt;script controls&gt;(2589)<br>
        Arguments and temporary variables:<br>
&lt;&lt;error during printing&gt;<br>
        Receiver&#39;s instance variables:<br>
                bounds:         25@8 corner: 185@41<br>
                owner:  an AlignmentMorph(1206)<br>
                submorphs:      {3PButton(#stopUp:with: 2931) .<br>
3PButton(#stepStillDown:with: 3201) ...etc...<br>
                fullBounds:     25@8 corner: 185@41<br>
                color:  Color transparent<br>
                extension:      a MorphExtension (2601) [externalName = script controls<br>
]  [other:  ...etc...<br>
                borderWidth:    0<br>
                borderColor:    Color black<br>
<br>
Array(SequenceableCollection)&gt;&gt;reverseDo:<br>
        Receiver: {3PButton(#stopUp:with: 2931) .<br>
3PButton(#stepStillDown:with: 3201) . 3PButton(#goUp:with:...etc...<br>
        Arguments and temporary variables:<br>
                aBlock:         [closure] in [] in AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
                index:  3<br>
        Receiver&#39;s instance variables:<br>
{3PButton(#stopUp:with: 2931) . 3PButton(#stepStillDown:with: 3201) .<br>
3PButton(#goUp:with:...etc...<br>
<br>
[] in AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
        Receiver: an AlignmentMorph&lt;script controls&gt;(2589)<br>
        Arguments and temporary variables:<br>
&lt;&lt;error during printing&gt;<br>
        Receiver&#39;s instance variables:<br>
                bounds:         25@8 corner: 185@41<br>
                owner:  an AlignmentMorph(1206)<br>
                submorphs:      {3PButton(#stopUp:with: 2931) .<br>
3PButton(#stepStillDown:with: 3201) ...etc...<br>
                fullBounds:     25@8 corner: 185@41<br>
                color:  Color transparent<br>
                extension:      a MorphExtension (2601) [externalName = script controls<br>
]  [other:  ...etc...<br>
                borderWidth:    0<br>
                borderColor:    Color black<br>
<br>
AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
        Receiver: an AlignmentMorph&lt;script controls&gt;(2589)<br>
        Arguments and temporary variables:<br>
                aCanvas:        a FormCanvas on: Form(212x49x32)<br>
                drawBlock:      [closure] in AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
        Receiver&#39;s instance variables:<br>
                bounds:         25@8 corner: 185@41<br>
                owner:  an AlignmentMorph(1206)<br>
                submorphs:      {3PButton(#stopUp:with: 2931) .<br>
3PButton(#stepStillDown:with: 3201) ...etc...<br>
                fullBounds:     25@8 corner: 185@41<br>
                color:  Color transparent<br>
                extension:      a MorphExtension (2601) [externalName = script controls<br>
]  [other:  ...etc...<br>
                borderWidth:    0<br>
                borderColor:    Color black<br>
<br>
<br>
--- The full stack ---<br>
LargePositiveInteger(Object)&gt;&gt;doesNotUnderstand: #pixelValueForDepth:<br>
ColorForm&gt;&gt;colormapIfNeededForDepth:<br>
ColorForm&gt;&gt;colormapIfNeededFor:<br>
FormCanvas&gt;&gt;image:at:sourceRect:rule:<br>
FormCanvas(Canvas)&gt;&gt;translucentImage:at:sourceRect:<br>
FormCanvas(Canvas)&gt;&gt;translucentImage:at:<br>
ThreePhaseButtonMorph&gt;&gt;drawOn:<br>
FormCanvas(Canvas)&gt;&gt;draw:<br>
FormCanvas(Canvas)&gt;&gt;drawMorph:<br>
[] in ThreePhaseButtonMorph(Morph)&gt;&gt;fullDrawOn:<br>
FormCanvas&gt;&gt;roundCornersOf:in:during:<br>
FormCanvas(Canvas)&gt;&gt;roundCornersOf:during:<br>
ThreePhaseButtonMorph(Morph)&gt;&gt;fullDrawOn:<br>
FormCanvas(Canvas)&gt;&gt;fullDraw:<br>
FormCanvas(Canvas)&gt;&gt;fullDrawMorph:<br>
[] in [] in AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
Array(SequenceableCollection)&gt;&gt;reverseDo:<br>
[] in AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>
[] in AlignmentMorph(Morph)&gt;&gt;fullDrawOn:<br>
FormCanvas&gt;&gt;roundCornersOf:in:during:<br>
FormCanvas(Canvas)&gt;&gt;roundCornersOf:during:<br>
AlignmentMorph(Morph)&gt;&gt;fullDrawOn:<br>
FormCanvas(Canvas)&gt;&gt;fullDraw:<br>
FormCanvas(Canvas)&gt;&gt;fullDrawMorph:<br>
[] in [] in AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
Array(SequenceableCollection)&gt;&gt;reverseDo:<br>
[] in AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
AlignmentMorph(Morph)&gt;&gt;drawSubmorphsOn:<br>
[] in AlignmentMorph(Morph)&gt;&gt;fullDrawOn:<br>
FormCanvas&gt;&gt;roundCornersOf:in:during:<br>
FormCanvas(Canvas)&gt;&gt;roundCornersOf:during:<br>
AlignmentMorph(Morph)&gt;&gt;fullDrawOn:<br>
FormCanvas(Canvas)&gt;&gt;fullDraw:<br>
FormCanvas(Canvas)&gt;&gt;fullDrawMorph:<br>
[] in [] in AllScriptsTool(Morph)&gt;&gt;drawSubmorphsOn:<br>
Array(SequenceableCollection)&gt;&gt;reverseDo:<br>
[] in AllScriptsTool(Morph)&gt;&gt;drawSubmorphsOn:<br>
AllScriptsTool(Morph)&gt;&gt;drawSubmorphsOn:<br>
[] in AllScriptsTool(Morph)&gt;&gt;fullDrawOn:<br>
CornerRounder class&gt;&gt;roundCornersOf:on:in:displayBlock:borderWidth:corners:<br>
FormCanvas&gt;&gt;roundCornersOf:in:during:<br>
FormCanvas(Canvas)&gt;&gt;roundCornersOf:during:<br>
AllScriptsTool(Morph)&gt;&gt;fullDrawOn:<br>
FormCanvas(Canvas)&gt;&gt;fullDraw:<br>
FormCanvas(Canvas)&gt;&gt;fullDrawMorph:<br>
[] in AllScriptsTool(Morph)&gt;&gt;imageForm:backgroundColor:forRectangle:<br>
FormCanvas&gt;&gt;translateBy:during:<br>
AllScriptsTool(Morph)&gt;&gt;imageForm:backgroundColor:forRectangle:<br>
PartsBin class&gt;&gt;thumbnailForQuad:color:<br>
[] in PartsBin&gt;&gt;listDirection:quadList:buttonClass:<br>
SortedCollection(OrderedCollection)&gt;&gt;do:<br>
PartsBin&gt;&gt;listDirection:quadList:buttonClass:<br>
PartsBin&gt;&gt;listDirection:quadList:<br>
ObjectsTool&gt;&gt;installQuads:fromButton:<br>
[] in ObjectsTool&gt;&gt;showAll<br>
BlockClosure&gt;&gt;ensure:<br>
CursorWithMask(Cursor)&gt;&gt;showWhile:<br>
ObjectsTool&gt;&gt;showAll<br>
MorphicUIBugTest class&gt;&gt;DoIt<br>
Compiler&gt;&gt;evaluate:in:to:notifying:ifFail:logged:<br>
-- and more not shown --<br>
<br>
</blockquote></div><br>