I think I found the reason for the hanging slave programs. It wasn’t an interaction between my modifications and JPDA, it was just an interaction between JPDA’s lack of straight-forwardness and my lack of intelligence. There existed a code path in the portion of code that read the slave’s list in which not all threads were resumed again. After a while, that could lead to all threads being suspended.
I also implemented the slave push technique. It seems nice so far and is definitely the right way to approach this, but it is less predictable for me. I’m still playing with it.
Now that I have left one problem behind me and have opened two new arenas, I’m running into another one of my beloved HotSpot errors:
# # An unexpected error has been detected by HotSpot Virtual Machine: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d72b030, pid=2080, tid=2484 # # Java VM: Java HotSpot(TM) Client VM (1.5.0_04-b05 mixed mode) # Problematic frame: # V [jvm.dll+0xeb030]
No clue yet what this is, but I’m working on it.