[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