[squeak-dev] #testBecomeForward fails when simulated in a rush

Thiede, Christoph Christoph.Thiede at student.hpi.uni-potsdam.de
Sun Mar 14 15:48:01 UTC 2021


Hi all,


it's Sunday afternoon (at least in my timezone :D) and here's an interesting weekend issue for you, maybe even a bug in the VM:


p := [ObjectTest new testBecomeForward] newProcess.
p runUntil: [:c | c isDead].


In my fresh trunk image, this expression always fails, i.e. a TestFailure is raised from the second assertion in the test, pt3 == pt2.

However, when running the test normally, i.e. executing the first block without simulation, the test passes as expected.

Also, when I try to debug the simulation, the test passes again.

But I even inserted a halt around the (pt3 == pt2) and could see that it actually evaluated to false.


And when I change the expression like this, it suddenly passes:


p := [ObjectTest new testBecomeForward] newProcess.
p runUntil: [:c | Smalltalk garbageCollect. c isDead].


What is this? Does the VM require some kind of memory sweep before the object identity consistency is restored again? To me, this looks pretty suspicious at least.


In SqueakJS, I cannot reproduce the issue, i.e., since https://github.com/codefrau/SqueakJS/pull/117, #testBecomeForward never fails.


Best,

Christoph
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20210314/9a398230/attachment.html>


More information about the Squeak-dev mailing list