[Vm-dev] A new ready-to-crash image is available

Stéphane Rollandin lecteur at zogotounga.net
Sat Feb 8 00:36:03 UTC 2020


> Why only with fast VM? It might be yet another case of Undefined 
> Behavior (UB)...
> I have thus recompiled the VM with UB sanitizer, and there is indeed 
> some UB reported:
> 
> ../../platforms/Cross/plugins/Squeak3D/b3dMain.c:1252:29: runtime error: 
> left shift of negative value -760
> ../../platforms/Cross/plugins/Squeak3D/b3dMain.c:1254:25: runtime error: 
> left shift of negative value -751
> ../../platforms/Cross/plugins/Squeak3D/b3dDraw.c:317:33: runtime error: 
> left shift of negative value -802
> ../../platforms/Cross/plugins/Squeak3D/b3dDraw.c:318:33: runtime error: 
> left shift of negative value -802
> ../../platforms/Cross/plugins/Squeak3D/b3dDraw.c:316:33: runtime error: 
> left shift of negative value -114
> ../../platforms/Cross/plugins/Squeak3D/b3dMain.c:829:61: runtime error: 
> left shift of negative value -2
> 
> Though, the instrumented fast VM does not fail...
> It might be that some aggressive optimizations assuming the absence of 
> UB do not occur with all the instrumentation stuff embedded...

This is very dark magic.

> IMO, declaring a left shift of negative int UB is sort of FOOLISH.

Tell me where to vote and I'll vote for you.

> We will have to protect each and every left shift in b3d with a cast...

To see a good side in this, stumbling at this point upon this kind of 
errors must mean the 3D code in itself is quite sound. Indeed I had only 
a couple of similar crashes for hours of testing (well, playing).

What I saw also a couple times, and which is more difficult to report, 
is the VM hanging at 100% CPU on its core and having to be killed 
externally. Could it be the same nasal demons at work?


Stef


More information about the Vm-dev mailing list