Dear all
we have as strange MNU on the CI, (MessageNotUnderstood: ByteSymbol>>width:color:) can someone look into this? Best regards -Tobias On 12.05.2015, at 04:16, squeak-ci <[hidden email]> wrote: > See <http://build.squeak.org/job/SqueakTrunk/1472/> > > ------------------------------------------ > [...truncated 53 lines...] > (Command started with PID 25813) > "/tmp/d20150512-25795-110yz31/bld/ckformat" "<http://build.squeak.org/job/SqueakTrunk/ws/target/TrunkImage.image"> > After format conversion: "<http://build.squeak.org/job/SqueakTrunk/ws/target/TrunkImage.image"> image format 6504 > === BUILD FINISHED > cp -r <http://build.squeak.org/job/SqueakTrunk/ws/target/cog.r3332> /tmp/d20150512-25795-12q4abx > cp -r <http://build.squeak.org/job/SqueakTrunk/ws/target/Squeak-4.10.2.2614-src-32/.> /tmp/d20150512-25795-zlj6l4 > Using existing cog r.3332 > Using existing interpreter VM in <http://build.squeak.org/job/SqueakTrunk/ws/target/Squeak-4.10.2.2614-src-32> > Using /tmp/d20150512-25795-zlj6l4/bld/squeak.sh > Preparing to update image of Squeak4.6 vintage > <http://build.squeak.org/job/SqueakTrunk/ws/update-image.st> > spawning command 1 with timeout 1500 seconds: "/tmp/d20150512-25795-12q4abx/cog.r3332/coglinux/bin/squeak" "-vm-sound-null" "-vm-display-null" "<http://build.squeak.org/job/SqueakTrunk/ws/target/TrunkImage.image"> "../update-image.st" > 2015-05-12T03:50:56.784+01:00: Updating http://source.squeak.org/trunk > 2015-05-12T03:50:57.988+01:00: Checking http://source.squeak.org/trunk > vvvvvvvvvvvvvvvvvv MessageNotUnderstood: ByteSymbol>>width:color: vvvvvvvvvvvvvvvvvv > The time is 2015-05-12T03:54:13.594+01:00 > ByteSymbol(Object)>>doesNotUnderstand: #width:color: > PluggableSystemWindow(BorderedMorph)>>borderStyle > MethodContext(Morph)>>drawOn: > MethodContext(Canvas)>>draw: > MethodContext(Canvas)>>drawMorph: > MethodContext(Morph)>>fullDrawOn: > MethodContext(Canvas)>>fullDraw: > MethodContext(Canvas)>>fullDrawMorph: > [] in [] in MethodContext(WorldState)>>drawWorld:submorphs:invalidAreasOn: > MethodContext(Rectangle)>>allAreasOutsideList:startingAt:do: > MethodContext(Rectangle)>>allAreasOutsideList:do: > [] in MethodContext(WorldState)>>drawWorld:submorphs:invalidAreasOn: > MethodContext(SequenceableCollection)>>do: > MethodContext(WorldState)>>drawWorld:submorphs:invalidAreasOn: > MethodContext(WorldState)>>displayWorld:submorphs: > MethodContext(PasteUpMorph)>>privateOuterDisplayWorld > MethodContext(PasteUpMorph)>>displayWorld > [] in MethodContext(SystemProgressMorph)>>position:label:min:max: > [] in [] in MethodContext(Collection)>>do:displayingProgress:every: > MethodContext(OrderedCollection)>>do: > [] in MethodContext(Collection)>>do:displayingProgress:every: > [] in [] in MethodContext(MorphicUIManager)>>displayProgress:at:from:to:during: > MethodContext(BlockClosure)>>on:do: > [] in MethodContext(MorphicUIManager)>>displayProgress:at:from:to:during: > MethodContext(BlockClosure)>>ensure: > MethodContext(MorphicUIManager)>>displayProgress:at:from:to:during: > MethodContext(ProgressInitiationException)>>defaultResumeValue > MethodContext(Exception)>>resume > MethodContext(ProgressInitiationException)>>defaultAction > MethodContext(UndefinedObject)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(Exception)>>signal > MethodContext(ProgressInitiationException)>>display:at:from:to:during: > MethodContext(ProgressInitiationException class)>>display:at:from:to:during: > MethodContext(String)>>displayProgressAt:from:to:during: > MethodContext(String)>>displayProgressFrom:to:during: > MethodContext(Collection)>>do:displayingProgress:every: > MethodContext(Collection)>>do:displayingProgress: > [] in [] in [] in [] in MethodContext(MCPackageLoader)>>basicLoad > MethodContext(BlockClosure)>>on:do: > [] in [] in [] in MethodContext(MCPackageLoader)>>basicLoad > MethodContext(BlockClosure)>>on:do: > MethodContext(CurrentReadOnlySourceFiles class)>>cacheDuring: > [] in [] in MethodContext(MCPackageLoader)>>basicLoad > MethodContext(BlockClosure)>>ensure: > [] in MethodContext(MCPackageLoader)>>basicLoad > MethodContext(BlockClosure)>>ensure: > MethodContext(RecentMessages)>>suspendWhile: > MethodContext(MCPackageLoader)>>basicLoad > [] in MethodContext(MCPackageLoader)>>loadWithNameLike: > MethodContext(BlockClosure)>>ensure: > MethodContext(MCPackageLoader)>>useChangeSetNamed:during: > MethodContext(MCPackageLoader)>>useNewChangeSetNamedLike:during: > MethodContext(MCPackageLoader)>>loadWithNameLike: > MethodContext(MCVersionLoader)>>load > MethodContext(MCVersionLoader class)>>loadVersion: > MethodContext(MCVersion)>>load > [] in MethodContext(MCConfiguration)>>upgrade > [] in [] in MethodContext(MCConfiguration)>>depsSatisfying:versionDo:displayingProgress: > MethodContext(OrderedCollection)>>do: > MethodContext(MCConfiguration)>>withProgress:in:do: > [] in MethodContext(MCConfiguration)>>depsSatisfying:versionDo:displayingProgress: > MethodContext(MCFileBasedRepository)>>cacheAllFileNamesDuring: > [] in [] in MethodContext(MCConfiguration)>>cacheAllFileNamesDuring: > MethodContext(MCConfiguration)>>cacheAllFileNamesDuring: > MethodContext(MCConfiguration)>>depsSatisfying:versionDo:displayingProgress: > MethodContext(MCConfiguration)>>upgrade > [] in [] in [] in [] in MethodContext(MCMcmUpdater class)>>updateFromRepositories: > [] in [] in MethodContext(Collection)>>do:displayingProgress:every: > MethodContext(OrderedCollection)>>do: > [] in MethodContext(Collection)>>do:displayingProgress:every: > [] in [] in MethodContext(MorphicUIManager)>>displayProgress:at:from:to:during: > MethodContext(BlockClosure)>>on:do: > [] in MethodContext(MorphicUIManager)>>displayProgress:at:from:to:during: > MethodContext(BlockClosure)>>ensure: > MethodContext(MorphicUIManager)>>displayProgress:at:from:to:during: > MethodContext(ProgressInitiationException)>>defaultResumeValue > MethodContext(Exception)>>resume > [] in [] in MethodContext(UndefinedObject)>>DoIt > MethodContext(BlockClosure)>>cull: > [] in MethodContext(ContextPart)>>handleSignal: > MethodContext(BlockClosure)>>ensure: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(Exception)>>signal > MethodContext(ProgressInitiationException)>>display:at:from:to:during: > MethodContext(ProgressInitiationException class)>>display:at:from:to:during: > MethodContext(String)>>displayProgressAt:from:to:during: > MethodContext(String)>>displayProgressFrom:to:during: > MethodContext(Collection)>>do:displayingProgress:every: > > ^^^^^^^^^^^^^^^^^^ MessageNotUnderstood: ByteSymbol>>width:color: ^^^^^^^^^^^^^^^^^^ > vvvvvvvvvvvvvvvvvv Error: MessageNotUnderstood: ByteSymbol>>width:color: vvvvvvvvvvvvvvvvvv > The time is 2015-05-12T03:54:13.606+01:00 > MethodContext(Object)>>error: > [] in MethodContext(WorldState)>>displayWorldSafely: > MethodContext(BlockClosure)>>cull:cull: > [] in MethodContext(BlockClosure)>>ifError: > MethodContext(BlockClosure)>>cull: > [] in MethodContext(ContextPart)>>handleSignal: > MethodContext(BlockClosure)>>ensure: > MethodContext(ContextPart)>>handleSignal: > MethodContext(Exception)>>signal > MethodContext(Object)>>doesNotUnderstand: #width:color: > MethodContext(BorderedMorph)>>borderStyle > MethodContext(Morph)>>drawOn: > MethodContext(Canvas)>>draw: > MethodContext(Canvas)>>drawMorph: > MethodContext(Morph)>>fullDrawOn: > MethodContext(Canvas)>>fullDraw: > MethodContext(Canvas)>>fullDrawMorph: > [] in [] in MethodContext(WorldState)>>drawWorld:submorphs:invalidAreasOn: > MethodContext(Rectangle)>>allAreasOutsideList:startingAt:do: > MethodContext(Rectangle)>>allAreasOutsideList:do: > [] in MethodContext(WorldState)>>drawWorld:submorphs:invalidAreasOn: > MethodContext(SequenceableCollection)>>do: > MethodContext(WorldState)>>drawWorld:submorphs:invalidAreasOn: > MethodContext(WorldState)>>displayWorld:submorphs: > MethodContext(PasteUpMorph)>>privateOuterDisplayWorld > MethodContext(PasteUpMorph)>>displayWorld > [] in MethodContext(WorldState)>>displayWorldSafely: > MethodContext(BlockClosure)>>on:do: > MethodContext(BlockClosure)>>ifError: > MethodContext(WorldState)>>displayWorldSafely: > MethodContext(PasteUpMorph)>>displayWorldSafely > MethodContext(Morph)>>refreshWorld > MethodContext(PluggableTextMorph)>>update: > MethodContext(PluggableTextMorphPlus)>>update: > [] in MethodContext(Object)>>changed: > MethodContext(DependentsArray)>>do: > MethodContext(Object)>>changed: > [] in MethodContext(TranscriptStream)>>endEntry > [] in MethodContext(Semaphore)>>critical: > MethodContext(BlockClosure)>>ensure: > MethodContext(Semaphore)>>critical: > MethodContext(TranscriptStream)>>endEntry > MethodContext(TranscriptStream)>>show: > MethodContext(SmalltalkImage)>>snapshot:andQuit:withExitCode:embedded: > MethodContext(SmalltalkImage)>>snapshot:andQuitWithExitCode: > [] in MethodContext(UndefinedObject)>>DoIt > MethodContext(BlockClosure)>>cull: > [] in MethodContext(ContextPart)>>handleSignal: > MethodContext(BlockClosure)>>ensure: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(Exception)>>signal > MethodContext(Object)>>doesNotUnderstand: > MethodContext(BorderedMorph)>>borderStyle > MethodContext(Morph)>>drawOn: > MethodContext(Canvas)>>draw: > MethodContext(Canvas)>>drawMorph: > MethodContext(Morph)>>fullDrawOn: > MethodContext(Canvas)>>fullDraw: > MethodContext(Canvas)>>fullDrawMorph: > [] in [] in MethodContext(WorldState)>>drawWorld:submorphs:invalidAreasOn: > MethodContext(Rectangle)>>allAreasOutsideList:startingAt:do: > MethodContext(Rectangle)>>allAreasOutsideList:do: > [] in MethodContext(WorldState)>>drawWorld:submorphs:invalidAreasOn: > MethodContext(SequenceableCollection)>>do: > MethodContext(WorldState)>>drawWorld:submorphs:invalidAreasOn: > MethodContext(WorldState)>>displayWorld:submorphs: > MethodContext(PasteUpMorph)>>privateOuterDisplayWorld > MethodContext(PasteUpMorph)>>displayWorld > [] in MethodContext(SystemProgressMorph)>>position:label:min:max: > [] in [] in MethodContext(Collection)>>do:displayingProgress:every: > MethodContext(OrderedCollection)>>do: > [] in MethodContext(Collection)>>do:displayingProgress:every: > [] in [] in MethodContext(MorphicUIManager)>>displayProgress:at:from:to:during: > MethodContext(BlockClosure)>>on:do: > [] in MethodContext(MorphicUIManager)>>displayProgress:at:from:to:during: > MethodContext(BlockClosure)>>ensure: > MethodContext(MorphicUIManager)>>displayProgress:at:from:to:during: > MethodContext(ProgressInitiationException)>>defaultResumeValue > MethodContext(Exception)>>resume > MethodContext(ProgressInitiationException)>>defaultAction > MethodContext(UndefinedObject)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(ContextPart)>>handleSignal: > MethodContext(Exception)>>signal > > ^^^^^^^^^^^^^^^^^^ Error: MessageNotUnderstood: ByteSymbol>>width:color: ^^^^^^^^^^^^^^^^^^ > (Command started with PID 25842) > !!! Killing command 1 for exceeding allotted time: "/tmp/d20150512-25795-12q4abx/cog.r3332/coglinux/bin/squeak" "-vm-sound-null" "-vm-display-null" "<http://build.squeak.org/job/SqueakTrunk/ws/target/TrunkImage.image"> "../update-image.st". > kill -USR1 25842 > rake aborted! > Process 25842 failed with exit status > <http://build.squeak.org/job/SqueakTrunk/ws/lib/squeak-ci/build.rb>:393:in `block in run_image_with_cmd' > <http://build.squeak.org/job/SqueakTrunk/ws/lib/squeak-ci/build.rb>:26:in `counted_command' > <http://build.squeak.org/job/SqueakTrunk/ws/lib/squeak-ci/build.rb>:352:in `run_image_with_cmd' > <http://build.squeak.org/job/SqueakTrunk/ws/Rakefile>:84:in `block (2 levels) in <top (required)>' > <http://build.squeak.org/job/SqueakTrunk/ws/Rakefile>:83:in `chdir' > <http://build.squeak.org/job/SqueakTrunk/ws/Rakefile>:83:in `block in <top (required)>' > /var/lib/jenkins/.rvm/gems/ruby-1.9.3-p392/bin/ruby_executable_hooks:15:in `eval' > /var/lib/jenkins/.rvm/gems/ruby-1.9.3-p392/bin/ruby_executable_hooks:15:in `<main>' > Tasks: TOP => update_base_image > (See full trace by running task with --trace) > > ------------- > Tried to kill process 25842 but it's gone > Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information > Build step 'Execute shell' marked build as failure > Archiving artifacts > Recording test results > ERROR: Publisher 'Publish JUnit test result report' failed: Test reports were found but none of them are new. Did tests run? > For example, <http://build.squeak.org/job/SqueakTrunk/ws/target/BalloonTests-Test.xml> is 23 hr old > > Discard old builds... > #1368 is removed because old than numToKeep |
Seems to be a VM bug. CogVM 3306 is fine. 3332 crashes. Windows.
Best, Marcel |
3306 OK
3312 OK 3319 CRASH 3332 CRASH Best, Marcel |
In reply to this post by Tobias Pape
I get some wonky answers. It seems to crash because of Reverting this method and the image don't crash. Morph>>innerBounds "Return the inner rectangle enclosed by the bounds of this morph excluding the space taken by its borders. For an unbordered morph, this is just its bounds." ^ self bounds insetBy: self borderStyle inset On Tue, May 12, 2015 at 7:22 AM, Tobias Pape <[hidden email]> wrote: Dear all |
I think that's only a symptom. Why else is the bug related to different VM versions?
The only thing that might change if you revert that code is the time to crash because border computation is deferred to a later point in time. :) Best, Marcel |
Oh, wait. There are two implementations of #borderStyle. Let me double-check.
Best, Marcel |
No, even Morph >> #borderStyle assumes that there is an instance of BorderStyle returned. So Morphic-DS.916.mcz is fine.
If you take a look at the strack trace and the implementation of BorderedMorph >> #borderStyle, you can see that #width:color: is only sent to the class BorderStyle, which strangely happens to be a ByteSymbol in recent VMs. So it's a VM bug. Best, Marcel |
There is also BorderStyle class inset and BorderStyle inset. One returns a class, one a integer. BorderStyle simple inset => nil ? Karl On Tue, May 12, 2015 at 10:14 AM, marcel.taeumel <[hidden email]> wrote: No, even Morph >> #borderStyle assumes that there is an instance of |
Maybe we need SimpleBorder>>width ^width ifNil:[ ^0] On Tue, May 12, 2015 at 10:47 AM, karl ramberg <[hidden email]> wrote:
|
SimpleBorder>>width ^width ifNil:[0] Simple stuff like this should work: RectangleMorph new borderStyle: BorderStyle simple; openInWorld Karl On Tue, May 12, 2015 at 10:57 AM, karl ramberg <[hidden email]> wrote:
|
BorderStyle>>inset that return the width is not a good method, since there is a BorderStyle named #inset. This will just obfuscate. Here one should use BorderStyle>>width instead Karl On Tue, May 12, 2015 at 12:02 PM, karl ramberg <[hidden email]> wrote:
|
It's a fall-back. Inset may be a scalar, a point, or a rectangle. See Rectangle interface for more information.
Best, Marcel |
Anyway, new border styles should not return nil on #width. The former implementation of Morph >> #innerBounds did use #borderWidth and BorderedMorph actually does overwrite this. This is not good because BorderStyle instances are used all over the place.
Best, Marcel |
Maybe for clarification: BorderStyle >> #inset is for non-uniform border styles. I did not manage to implement one as an example yet, but all the hooks are placed for this:
http://imgsrv.worldstart.com/ct-images/draw-border-old-excel.gif Morphic drawing code makes double-dispatch into BorderStyle >> #frameRectangle:on:. There, you can draw non-uniform borders. :-) But right, having #inset on both class-side and instance-side is confusing..... :-/ Best, Marcel |
In reply to this post by marcel.taeumel
On May 12, 2015, at 3:10 AM, marcel.taeumel <[hidden email]> wrote: > I think that's only a symptom. Why else is the bug related to different VM > versions? I ran into this and various variants of it a little while ago, when I tried to update my somewhat outdated image using the latest Cog VM. When I ran using an older interpreter VM, the build went fine. In tracking down one of the MNU failures I was seeing with the Cog build, I saw this: SmallInteger(Object) >> doesNotUnderstand: #isEmptyOrNil PluggableListMorphOfMany(PluggableListMorph) >> hasFilter where: hasFilter ^ lastKeystrokes isEmptyOrNil not the debugger in the context of hasFilter says that lastKeystrokes is an empty ByteString, but when I click on self for the SmallInteger DNU, it says that the receiver is a SmallInteger 0. Looking at the object context of PluggableListMorphOfMany, I saw that the only SmallInteger 0 value was the instance variable “lastKeystrokeTime” just before “lastKeystrokes”. So it looks to me like there may be a (rare) instance variable to register mapping bug in the latest Cog VMs. — tim |
Hi Tim,
On Tue, May 12, 2015 at 7:59 AM, Tim Olson <[hidden email]> wrote:
Yes, very nearly. In fact it was a bug in new register allocation code for compiling #==. It is fixed in the r3343 VMs. Sorry for the inconvenience. http://www.mirandabanda.org/files/Cog/VM/VM.r3343
best,
Eliot |
On May 15, 2015, at 9:20 PM, Eliot Miranda <[hidden email]> wrote:
Great, thanks! Going back to the interpreter VM temporarily made me realize just how much faster Cog was — glad to have it back! — tim |
Free forum by Nabble | Edit this page |