bugs in sparc VM

Jecel Assumpcao Jr jecel at merlintec.com
Wed Sep 11 18:36:41 UTC 2002


After looking for bugs in my code for a couple of days I came to the 
conclusion that the compiler might be generating bad code (which shows 
how humble I have become - back in the Burroughs Algol days I always 
blamed the compiler first ;-)

In one case I have something like

  [add: addr+1. test: (memory at: addr)] whileFalse.

and the loop kept going right past the iteration where 'test:' returned 
true. Running the same thing step by step in the debugger worked. 
Finally I decided to save a snapshot, quit the VM, restart everything 
and then this started working.

In another case I have

  word: (memory at: addr) && 16r0FFFF.

and I verified that "memory at: addr" is returning 16r01515 yet word is 
being assigned 16r0FFFF. Single stepping makes it work. The 
save/restore trick I used above didn't work in this case. In fact, 
eliminating the "halt" and allowing it to continue after having single 
stepped this a few times showed that it worked until it exited the 
inner loop and then it went back to the broken behavior. So I would 
guess that the NIC is generating correct code but the SIC isn't. The 
obvious next step is to disable the SIC and see what happens, but I 
will only be able to do that on Friday.

This is the 4.1.5 VM on a Ultra 5 running Solaris 2.8.

-- Jecel



More information about the Self-interest mailing list