[Vm-dev] 64bits Guardian failure on Squeak 5.3 RC1

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Thu Feb 27 19:55:45 UTC 2020


Le jeu. 27 févr. 2020 à 20:08, Nicolas Cellier <
nicolas.cellier.aka.nice at gmail.com> a écrit :

> Ah yes, thanks, I tried QEMU via homebrew, but couldn't have it installing
> ubuntu, nor starting my already initialized images... Maybe 4.2.0 is too
> recent? I give up for now.
>
> Since we do not have to wait long for crash, I just used traditional trial
> and restart with hardware watchpoints.
>
> What happens is that loadObjectsFrom: is overwriting the textures...
> (lldb) p state
> (B3DRasterizerState) $12 = {
>   faceAlloc = 0x0000000108fbb6c8
>   edgeAlloc = 0x0000000108fdb6d8
>   attrAlloc = 0x0000000108feb6e8
>   aet = 0x0000000108fef6f8
>   addedEdges = 0x0000000108ff3708
>   fillList = 0x0000000108ff7710
>   nObjects = 1111
>   objects = 0x000000010920af98
>   nTextures = 1
>   textures = 0x000000010920c100
>   spanSize = 2048
>   spanBuffer = 0x0000000108ff7998
>   spanDrawer = 0x0000000100479960 (Squeak`copyBitsFromtoat at
> BitBltPlugin.c:1359)
> }
>
> There is just  4456 bytes offset between objects and textures addresses...
> But we pretend we are going to store 1111 pointers to B3DPrimitiveObject
> into this objects field...
> Obviously, that ain't gonna work on a 64bits VM.
>
> Let's take a look at B3DPrimitiveRasterizerData>>initObjects: nObjects
> objects _ B3DPrimitiveRasterizerData new: nObjects
>
> B3DPrimitiveRasterizerData is variableWordSubclass: so it needs to
> allocate twice more words on a 64 bits VM...
> With a bit of luck, we can fix it at image side...
>
> Nah, bad luck, there are a few slotSizeOf: that should be transformed into
byteSizeOf:/sizeof(void*) in the Squeak3D plugin...

So patching image like this is not enough:
B3DPrimitiveRasterizerData>>initObjects: nObjects
objects := B3DPrimitiveRasterizerData new: nObjects * (Smalltalk wordSize /
4)


> Le jeu. 27 févr. 2020 à 19:44, Paul DeBruicker <pdebruic at gmail.com> a
> écrit :
>
>>
>> libvirt & qemu are supported on macos (https://libvirt.org/platforms.html)
>> &
>> can use PMU
>> (
>> https://stackoverflow.com/questions/46490857/how-to-enable-pmu-in-kvm-guest
>> )
>>
>> You can use homebrew to install libvirt & qemu
>>
>>   brew install libvirt qemu
>>
>> virt-manager & virt-viewer (https://virt-manager.org/) are GUI tools
>> create/manage/view KVM virtual machines. Macos support and install
>> instructions are here:
>>
>> https://github.com/jeffreywildman/homebrew-virt-manager
>>
>> Or instead of virt-manager you can just use the command line and then
>> install VNC on the vm:
>>
>>
>> https://linuxconfig.org/how-to-create-and-manage-kvm-virtual-machines-from-cli#h9-create-the-new-virtual-machine
>>
>>
>>
>> Nicolas Cellier wrote
>> > Well, I've tried to install rr and all its dependencies on Ubuntu 16...
>> > But...
>> > I have no available machine to run linux natively.
>> >
>> > To run rr inside a virtual machine, virtualization of perf counters
>> needs
>> > to be enabled...
>> > https://github.com/mozilla/rr/wiki/Building-And-Installing
>> >
>> > I'm using parallels, but not the Pro version, because I don't like the
>> > annual pricing model, for personal use it's just too much.
>> > Unfortunately, only pro edition supports PMU virtualization
>> >
>> https://download.parallels.com/desktop/v11/docs/en_US/Parallels%20Desktop%20User%27s%20Guide/37830.htm
>> >
>> > Maybe it's time to change of VM provider, but for now, that's too many
>> > hurdles, I give up...
>> >
>> > Le mer. 26 févr. 2020 à 22:04, Nicolas Cellier <
>>
>> > nicolas.cellier.aka.nice@
>>
>> >> a écrit :
>> >
>> >>
>> >>
>> >> Le mer. 26 févr. 2020 à 21:56, Nicolas Cellier <
>> >>
>>
>> > nicolas.cellier.aka.nice@
>>
>> >> a écrit :
>> >>
>> >>> Hi Stephane,
>> >>> this is the worse game for VM developers ;)
>> >>>
>> >> Hem, I meant the worst ever, even worse than my globish dialect ;)
>> >>
>> >> No just kidding, very good game for finding our own bugs!
>> >>>
>> >>> I just ran in debugger, and it crash in b3dDrawSTWRGB
>> >>> But it seems like the function received an already corrupted
>> texture...
>> >>>
>> >>> (lldb) p *texture
>> >>> (B3DTexture) $10 = {
>> >>>   width = 152691968
>> >>>   height = 1
>> >>>   depth = 152842368
>> >>>   rowLength = 1
>> >>>   sMask = 152740096
>> >>>   sShift = 1
>> >>>   tMask = 152789728
>> >>>   tShift = 1
>> >>>   cmSize = 152890496
>> >>>   colormap = 0x000000010916dd80
>> >>>   data = 0x0000000109179f60
>> >>> }
>> >>>
>> >>> The width, depth and color map size are insane.
>> >>> (lldb) p/x texture->width
>> >>> (int) $5 = 0x0919e500
>> >>> (lldb) p/x texture->depth
>> >>> (int) $6 = 0x091c3080
>> >>> (lldb) p/x texture->sMask
>> >>> (int) $7 = 0x091aa100
>> >>> (lldb) p/x texture->tMask
>> >>> (int) $8 = 0x091b62e0
>> >>> (lldb) p/x texture->cmSize
>> >>> (int) $9 = 0x091cec80
>> >>>
>> >>> Now it remains to discover how this got corrupted...
>> >>> I wish I could run the debugger backward in time...
>> >>> Maybe it's time to learn a new skill and explore the rr capability on
>> >>> linux as recommended once by Jan Vrany.
>> >>>
>> >>>
>> >>> Le mer. 26 févr. 2020 à 10:35, Stéphane Rollandin <
>>
>> > lecteur@
>>
>> > >
>> >>> a écrit :
>> >>>
>> >>>> > http://files.squeak.org/5.3rc1/Squeak5.3rc1-19414-64bit/
>> >>>> > Please give them a try and report any issues here on the mailing
>> >>>> list.
>> >>>> The Guardians game does not run in the 64bit version - it crashes
>> >>>> immediately.
>> >>>>
>> >>>> Guardians:
>> >>>> http://www.zogotounga.net/comp/guardians.htm
>> >>>>
>> >>>> Code:
>> >>>>
>> >>>>
>> http://www.zogotounga.net/comp/squeak/guardians/Guardians-builder-0.94.sar
>> >>>>
>> >>>> (to see the crash, just install the above sar and follow the
>> >>>> instructions for starting the game)
>> >>>>
>> >>>>
>> >>>> Stef
>> >>>>
>> >>>>
>>
>>
>>
>>
>>
>> --
>> Sent from: http://forum.world.st/Squeak-VM-f104410.html
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20200227/8f9ee297/attachment-0001.html>


More information about the Vm-dev mailing list