[BUG] InterpreterSimulator

Ned Konz ned at squeakland.org
Thu Mar 31 18:10:10 UTC 2005


On Thursday 31 March 2005 4:52 am, Noury Bouraqadi wrote:

> I run in Squeak 3.7 full
> (InterpreterSimulator new openOn: Smalltalk imageName) test
>
> But it failed quickly.

Can you give us more details? The stack traces of the intpreter and the stack 
trace of the interpreted image, perhaps (you can get the stack from the 
InterpreterSimulator by calling printStack).

> I searched the web and found that Nathanel alreardy pointed this bug in
> may 2004. But, found no fix. Any hint?

Yes. I was able to run the InterpreterSimulator in a recent 3.8g image (using 
a very recent VM) on a stock 3.7 image (prepared as described below) as the 
target image (with an MVC project open in the target image). Other than not 
seeing all the fonts rendered, it worked well enough to debug (very well, if 
you don't need the UI to work). I've attached a screenshot.

I got more or less the same results on a 3.8g target image prepared as below 
(i.e. no fonts displayed).

Follow the process below if you're interested:

I'd recommend trying a smaller image first (with the fonts changed as 
described below). In the target image (the one to be run in the 
InterpreterSimulator):

 Revert the change to Project class>>interruptName: in the LowSpaceWatcherFix 
changeset if you have a recent image.

 Change all the system fonts in the image that you're going to simulate to 
non-Truetype fonts. Close every window and save the image. 

 Make a new MVC or Morphic project (MVC will be faster, of course).

 Destroy all the flaps if it's a Morphic project.

 Load the MVCSupport.cs.gz fixes that Yoshiki posted on 14 March if you'd like 
to run MVC and have a recent image.

 Change the desktop background color to something different than the host 
image's desktop color.

 Save and quit.

In the host image:

 First, get a 3.8 image and load the latest VMMaker package for 3.8 into it.

 Revert the change in the LowSpaceWatcherFix changeset.

 Save the image.

 Open a Transcript

 Then run the InterpreterSimulator as above on the target image:

  (InterpreterSimulator new openOn: 'myTest.image') test

 or if you run out of memory:

    (InterpreterSimulator new openOn: 'myTest.image' extraMemory: 10000000) 
test

You may have to fiddle with the extraMemory setting.

Everything seems to work more or less well (that is, the InterpreterSimulator 
mostly works and keeps going; there may be some minor problems with 
individual plugins (like for instance the FloatArrayPlugin, which is why I 
suggested to eliminate TrueType fonts).

To find out what's going on:

Interrupt the running simulator using alt-.

Debug the interrrupted simulator.

Select a stack frame that has the InterpreterSimulator as a receiver.

Do-it:
 self printAllStacks

And you'll see all the stacks in the target image on the Transcript.


When I tried it the first time (in a Morphic project, with the default fonts), 
I didn't see a quick failure. It actually ran for a while before having a 
problem.

What I got is a walkback on trying to store a float (which in Smalltalk is 2 
words) into the memory with #longAt:put:

Bitmap(Object)>>error:
Bitmap(Object)>>errorImproperStore
Bitmap(Object)>>at:put:
InterpreterSimulatorLSB(InterpreterSimulator)>>longAt:put:
CArray>>at:put:
FloatArrayPlugin>>primitiveAtPut
InterpreterSimulatorLSB(InterpreterSimulator)>>callExternalPrimitive:
InterpreterSimulatorLSB(Interpreter)>>primitiveExternalCall
InterpreterSimulatorLSB(InterpreterSimulator)>>dispatchFunctionPointer:
InterpreterSimulatorLSB(Interpreter)>>internalExecuteNewMethod
InterpreterSimulatorLSB(InterpreterSimulator)>>internalExecuteNewMethod
InterpreterSimulatorLSB(Interpreter)>>commonSend
InterpreterSimulatorLSB(Interpreter)>>normalSend
InterpreterSimulatorLSB(Interpreter)>>bytecodePrimAtPut
InterpreterSimulatorLSB(InterpreterSimulator)>>dispatchOn:in:
InterpreterSimulatorLSB(InterpreterSimulator)>>test

And the stack of the interpreter is:

16r0269FA8C MatrixTransform2x3>>#a11:
16r0269FA30 MatrixTransform2x3>>#setScale:
16r0269F9D4 MatrixTransform2x3 class>>#withScale:
16r0269FCF0 
TTGlyph>>#asFormWithScale:ascender:descender:fgColor:bgColor:depth:replaceColor:lineGlyph:lingGlyphWidth:empha
16r0269FBF4 
TTGlyph>>#asFormWithScale:ascender:descender:fgColor:bgColor:depth:replaceColor:
16r0269F978 
TTGlyph>>#asFormWithScale:ascender:descender:fgColor:bgColor:depth:
16r0269F2E8 TTCFont>>#computeForm:
16r0269F28C TTCFont>>#widthOf:
16r0269F230 AbstractFont>>#widthOfString:from:to:
16r0269F1D4 AbstractFont>>#widthOfString:
16r0269F178 StringMorph>>#measureContents
16r0269F0C0 StringMorph>>#fitContents
16r0269F064 StringMorph>>#font:emphasis:
16r0269E358 SystemWindow>>#initializeLabelArea
16r0269D3A0 SystemWindow>>#initialize
16r0269D344 PreDebugWindow>>#initialize
16r0269D2E8 SystemWindow class>>#labelled:
16r02656684 Debugger>>#buildMorphicNotifierLabelled:message:
16r02656604 Debugger>>#openNotifierContents:label:
16r02656338 [] in Debugger class>>#openOn:context:label:contents:fullView:
16r026562DC BlockContext>>#on:do:
16r02656118 [] in Debugger class>>#openOn:context:label:contents:fullView:
16r02656214 [] in BlockContext>>#newProcess

-- 
Ned Konz
http://bike-nomad.com/squeak/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: interpreterSimulator.png
Type: image/png
Size: 15192 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20050331/5c798044/interpreterSimulator.png


More information about the Squeak-dev mailing list