[Vm-dev] CogVM/StackVM fail to read in image, fine on Squeak
4.2.1 MacVM
Stefan Marr
squeak at stefan-marr.de
Mon Jul 18 23:43:33 UTC 2011
Hi:
On 18/07/11 15:01, Stefan Marr wrote:
>
> Hi Dave:
>
> On 18/07/11 14:34, David T. Lewis wrote:
>>
>> On Mon, Jul 18, 2011 at 02:02:10PM +0200, Stefan Marr wrote:
>>> However, now I noticed that the CogVM/StackVM crash when they are asked
>>> to load an image which is saved by our RoarVM.
>>>
>>> The Cog/StackVM fail to open it with an error in "0
>>> org.squeakfoundation.Squeak 0x00033462
>>> readImageFromFileHeapSizeStartingAt + 3058"
>>>
>>> [1] http://soft.vub.ac.be/~smarr/roarvm/squeak-saved-with-rvm.zip
> I took the standard stock Squeak 4.2 image, which is as far as I can
> tell published as 6504.
>
> Now, I open and save it with the RoarVM, and then try to open it with
> Stack/CogVM, which crashes.
I tried to dig into this a bit more.
The latest StackInterpreterSimulator in the image provided by Eliot on
the Cog branch seems to read the image [1] just fine.
It seems to hang, but might also be that I am to inpatient.
Anyway, a debug build of
http://www.squeakvm.org/unix/release/Squeak-4.4.7.2357-src.tar.gz loads
the image, too.
The available 5.x mac releases fail to load it: http://www.squeakvm.org/mac/
So, I took the Cog branch and the CoreVM.xcodeproj and got a VM compiled:
#0 0x00104f80 in initializeInterpreter (bytesToShift=339693560) at
/tmp/Cog/macbuild/../src/vm/gcc3x-cointerp.c:17479
ccIndex = 0
cct = 394155372
classArrayClass = 401932980
classArrayObj = 400674088
header = 317718813
i = 17402624
i1 = 1
i11 = 411556616
i2 = 317431
i3 = -1073746952
i4 = 11
index = -2
oop = 10
#1 0x00123fc0 in readImageFromFileHeapSizeStartingAt (f=0xa064d8e0,
desiredHeapSize=536870912, imageOffset=0) at
/tmp/Cog/macbuild/../src/vm/gcc3x-cointerp.c:39218
#2 0x000652dc in main (argc=1, argv=0xbffff278, envp=0xbffff280) at
/tmp/Cog/macbuild/../platforms/Mac OS/vm/sqMacMain.c:445
Where the code is:
17474 GIV(thisClassIndex) = i4;
17475 }
17476 }
17477 for (i4 = (InstanceSpecificationIndex + 1); i4 <=
(lengthOf(classArrayObj)); i4 += 1) {
17478 oop = longAt((classArrayObj + BaseHeaderSize) + (i4 <<
ShiftForWord));
-> 17479 if ((((oop & 1) == 0)
17480 && (((((usqInt) (longAt(oop))) >> 8) & 15) >= 8))
17481 && (((lengthOf(oop)) == 5)
17482 && ((strncmp("Array", firstFixedField(oop), 5)) == 0))) {
17483 GIV(classNameIndex) = i4;
17484 }
17485 }
Any guesses what is going on here?
Thanks
Stefan
More information about the Vm-dev
mailing list