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