All,
I have noticed endless loop behavior when running gc.LOS. It appears to go
into some sort of endless loop when I try, " build test". Does anyone else
see this problem?
I used MSVC to break into drlvm when it gets stuck. It shows basically
what's been reported before – a bunch of threads in JITed code. They keep
making some system call.
Semis/vm/_smoke.tests/reports/gc.LOS_jit.out shows that somehow LOS.java is
in an infinite loop after it prints all 200 dots. This is rather curious.
Looking at gc/LOS.java, there is a "threads[i].join()" where "i" goes from 0
to 199. This thread join happens immediately after a "notifyAll()" that is
intended to tell each of the threads to start running.
I moved the trace(".") to immediately after the synchronized statement in
run(). The test now completes successfully. It might be a bug in the
implementation of Object.wait() and Object.notifyAll() that different HW/SW
combinations are aggrevating??? Below are the mods that I made:
public void run () {
//trace(".");
synchronized (this.getClass()) {
if (!started)
try {
this.getClass().wait();
} catch (InterruptedException e) {}
}
trace("."); //wjw
--
Weldon Washburn
Intel Middleware Products Division