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

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


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...


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/86a412d0/attachment.html>


More information about the Vm-dev mailing list