A standard Cog r.2714. As far as I understand a PharoVM is just a Cog with a few extra plugins?
frank On 30 May 2013 21:43, Guillermo Polito <[email protected]> wrote: > BTW, I was using PharoVM, not Eliot's Cog... What are you using? > > > On Thu, May 30, 2013 at 10:41 PM, Frank Shearar <[email protected]> > wrote: >> >> On 30 May 2013 21:39, Frank Shearar <[email protected]> wrote: >> > On 30 May 2013 16:43, Guillermo Polito <[email protected]> >> > wrote: >> >> Yes, this is a problem with Cog and Method wrappers it seems. Camille >> >> found >> >> not so long ago that when installing a method wrapper with instance >> >> variables, the VM just crashes. I think this should be the case. >> >> >> >> Anyway, I was just playing a bit because I want to use method wrappers >> >> for >> >> some experiments. >> >> So, the following looks like working when using wrappers with no inst >> >> vars. >> >> >> >> method := MyA>>#a. >> >> [ >> >> MyA methodDictionary at: #a put: MyWrapper new. >> >> anA := MyA new. >> >> res := anA a. >> >> ] ensure: [ >> >> MyA methodDictionary at: #a put: method. >> >> method flushCache. >> >> ]. >> >> res >> >> >> >> Doing the same with a wrapper with inst vars just crashes the vm. >> >> However, >> >> if flushing the method cache after installing the method in the method >> >> dictionary, makes it work... >> >> >> >> method := MyA>>#a. >> >> [ >> >> MyA methodDictionary at: #a put: MyWrapperWithInstVar new. >> >> method flushCache. >> >> anA := MyA new. >> >> res := anA a. >> >> ] ensure: [ >> >> MyA methodDictionary at: #a put: method. >> >> method flushCache. >> >> ]. >> >> res >> >> >> >> So it looks like a problem in the JIT cache not cleared :). >> >> >> >> Now, I was looking at the TestCoverage class, to see how to make it >> >> work, >> >> but not results yet :P. >> > >> > You might be onto something there. The only difference between >> > Squeak's and Pharo's TestCoverage is #flushCache. >> > >> > Pharo's says >> > >> > flushCache >> > self reference selector flushCache >> > >> > and Squeak's says >> > >> > flushCache >> > >> > (A no-op.) >> >> Of course, that's not the _whole_ story: making Squeak's flushCache >> match that of Pharo's doesn't make Cog crash. >> >> > frank >> > >> >> Guille >> >> >> >> >> >> On Sun, May 26, 2013 at 6:48 PM, Frank Shearar >> >> <[email protected]> >> >> wrote: >> >>> >> >>> Hi, >> >>> >> >>> I wanted to see FileSystem's coverage, so I >> >>> * downloaded 3.0 via curl http://get.pharo.org/30+vm | bash, >> >>> * fired up the image, >> >>> * opened the TestRunner, >> >>> * highlighted the three FileSystem packages, >> >>> * "select all"ed, >> >>> * pressed "Run Coverage" >> >>> >> >>> and the VM crashed with a segfault. I tried with a few other packages, >> >>> and every time I tried to run coverage the VM died with the same >> >>> message: >> >>> >> >>> Segmentation fault Sun May 26 15:46:45 2013 >> >>> >> >>> >> >>> pharo VM version: 3.9-7 #1 Wed Mar 13 18:22:44 CET 2013 gcc 4.4.3 >> >>> Built from: NBCoInterpreter NativeBoost-CogPlugin-EstebanLorenzano.18 >> >>> uuid: a53445f9-c0c0-4015-97a3-be7db8d9ed6b Mar 13 2013 >> >>> With: NBCogit NativeBoost-CogPlugin-EstebanLorenzano.18 uuid: >> >>> a53445f9-c0c0-4015-97a3-be7db8d9ed6b Mar 13 2013 >> >>> Revision: git://gitorious.org/cogvm/blessed.git Commit: >> >>> 412abef33cbed05cf1d75329e451d71c0c6aa5a7 Date: 2013-03-13 17:48:50 >> >>> +0100 By: Esteban Lorenzano <[email protected]> Jenkins build #14535 >> >>> Build host: Linux linux-ubuntu-10 2.6.32-38-server #83-Ubuntu SMP Wed >> >>> Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux >> >>> plugin path: /home/frank/Downloads/pharo-3.0/pharo-vm/ [default: >> >>> /home/frank/Downloads/pharo-3.0/pharo-vm/] >> >>> >> >>> >> >>> C stack backtrace: >> >>> pharo-vm/pharo[0x80a0c0c] >> >>> pharo-vm/pharo[0x80a0f28] >> >>> [0x408410] >> >>> [0x77744f1e] >> >>> [0x777447c8] >> >>> [0x7819010f] >> >>> [0x777454f9] >> >>> [0x777447c8] >> >>> [0x7818e112] >> >>> [0x777fc687] >> >>> [0x777456ea] >> >>> [0x77744668] >> >>> >> >>> >> >>> Smalltalk stack dump: >> >>> 0xbfc98e4c I [] in InteractiveResolverTest(TestCase)>runCase >> >>> 0x78f0bfc8: a(n) InteractiveResolverTest >> >>> 0xbfc98e6c M BlockClosure>ensure: 0x78fa4c34: a(n) BlockClosure >> >>> 0xbfc98e90 I InteractiveResolverTest(TestCase)>runCase 0x78f0bfc8: >> >>> a(n) InteractiveResolverTest >> >>> 0xbfc98eb4 I [] in TestResult>runCase: 0x78f0bdcc: a(n) TestResult >> >>> 0xbfc98ed0 M BlockClosure>on:do: 0x78fa4a30: a(n) BlockClosure >> >>> 0xbfc98ef8 I TestResult>runCase: 0x78f0bdcc: a(n) TestResult >> >>> 0xbfc98f1c I InteractiveResolverTest(TestCase)>run: 0x78f0bfc8: a(n) >> >>> InteractiveResolverTest >> >>> 0xbfc98f3c M [] in TestSuite>run: 0x78f0bfb0: a(n) TestSuite >> >>> 0xbfc98f5c M OrderedCollection>do: 0x78f0bfdc: a(n) OrderedCollection >> >>> 0xbfc9fdf0 I [] in TestSuite>run: 0x78f0bfb0: a(n) TestSuite >> >>> 0xbfc9fe10 M BlockClosure>ensure: 0x78fa48e4: a(n) BlockClosure >> >>> 0xbfc9fe34 I TestSuite>run: 0x78f0bfb0: a(n) TestSuite >> >>> 0xbfc9fe58 I [] in TestRunner>runSuite: 0x78e405bc: a(n) TestRunner >> >>> 0xbfc9fe80 I BlockClosure>cull:cull: 0x78f9c050: a(n) BlockClosure >> >>> 0xbfc9feb0 I [] in TestRunner>executeSuite:as: 0x78e405bc: a(n) >> >>> TestRunner >> >>> 0xbfc9fed0 M BlockClosure>ensure: 0x78f9c420: a(n) BlockClosure >> >>> 0xbfc9fef4 I TestRunner>executeSuite:as: 0x78e405bc: a(n) TestRunner >> >>> 0xbfc9ff1c I TestRunner>runSuite: 0x78e405bc: a(n) TestRunner >> >>> 0xbfc9ff3c M [] in TestRunner>collectCoverageFor: 0x78e405bc: a(n) >> >>> TestRunner >> >>> 0xbfc9ff5c M BlockClosure>ensure: 0x78f9bfcc: a(n) BlockClosure >> >>> 0xbfc97e54 M [] in TestRunner>collectCoverageFor: 0x78e405bc: a(n) >> >>> TestRunner >> >>> 0xbfc97e74 M BlockClosure>ensure: 0x78f0dd7c: a(n) BlockClosure >> >>> 0xbfc97ea8 I BlockClosure>valueUnpreemptively 0x78f0dd7c: a(n) >> >>> BlockClosure >> >>> 0xbfc97ed4 I TestRunner>collectCoverageFor: 0x78e405bc: a(n) >> >>> TestRunner >> >>> 0xbfc97ef8 M TestRunner>runCoverage 0x78e405bc: a(n) TestRunner >> >>> 0xbfc97f18 I PluggableButtonMorph>performAction: 0x78e6c24c: a(n) >> >>> PluggableButtonMorph >> >>> 0xbfc97f38 M [] in PluggableButtonMorph>mouseUp: 0x78e6c24c: a(n) >> >>> PluggableButtonMorph >> >>> 0xbfc97f5c M Array(SequenceableCollection)>do: 0x78ed9f14: a(n) Array >> >>> 0xbfc93e08 M PluggableButtonMorph>mouseUp: 0x78e6c24c: a(n) >> >>> PluggableButtonMorph >> >>> 0xbfc93e28 M PluggableButtonMorph(Morph)>handleMouseUp: 0x78e6c24c: >> >>> a(n) PluggableButtonMorph >> >>> 0xbfc93e44 M MouseButtonEvent>sentTo: 0x78ed9eec: a(n) >> >>> MouseButtonEvent >> >>> 0xbfc93e60 M PluggableButtonMorph(Morph)>handleEvent: 0x78e6c24c: a(n) >> >>> PluggableButtonMorph >> >>> 0xbfc93e7c M PluggableButtonMorph(Morph)>handleFocusEvent: 0x78e6c24c: >> >>> a(n) PluggableButtonMorph >> >>> 0xbfc93ea4 M [] in HandMorph>sendFocusEvent:to:clear: 0x77b1c270: a(n) >> >>> HandMorph >> >>> 0xbfc93ec0 M [] in PasteUpMorph>becomeActiveDuring: 0x7796b824: a(n) >> >>> PasteUpMorph >> >>> 0xbfc93edc M BlockClosure>on:do: 0x78ed9e5c: a(n) BlockClosure >> >>> 0xbfc93f08 M PasteUpMorph>becomeActiveDuring: 0x7796b824: a(n) >> >>> PasteUpMorph >> >>> 0xbfc93f2c M HandMorph>sendFocusEvent:to:clear: 0x77b1c270: a(n) >> >>> HandMorph >> >>> 0xbfc93f54 M HandMorph>sendEvent:focus:clear: 0x77b1c270: a(n) >> >>> HandMorph >> >>> 0xbfc92e44 M HandMorph>sendMouseEvent: 0x77b1c270: a(n) HandMorph >> >>> 0xbfc92e68 M HandMorph>handleEvent: 0x77b1c270: a(n) HandMorph >> >>> 0xbfc92e94 M HandMorph>processEvents 0x77b1c270: a(n) HandMorph >> >>> 0xbfc92eac M [] in WorldState>doOneCycleNowFor: 0x7797ab44: a(n) >> >>> WorldState >> >>> 0xbfc92ed0 M Array(SequenceableCollection)>do: 0x77846894: a(n) Array >> >>> 0xbfc92eec M WorldState>handsDo: 0x7797ab44: a(n) WorldState >> >>> 0xbfc92f08 M WorldState>doOneCycleNowFor: 0x7797ab44: a(n) WorldState >> >>> 0xbfc92f24 M WorldState>doOneCycleFor: 0x7797ab44: a(n) WorldState >> >>> 0xbfc92f40 M PasteUpMorph>doOneCycle 0x7796b824: a(n) PasteUpMorph >> >>> 0xbfc92f60 I [] in MorphicUIManager>? 0x7797ebd4: a(n) >> >>> MorphicUIManager >> >>> 0x77c9891c s [] in BlockClosure>? >> >>> >> >>> Most recent primitives >> >>> class >> >>> class >> >>> class >> >>> class >> >>> class >> >>> class >> >>> class >> >>> >> >> >> >
