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