JVM hanging when using G1GC on JDK8 b78 or b79 (Linux 32 bit)
thomas.schatzl at oracle.com
Wed Mar 6 03:18:08 PST 2013
On Wed, 2013-03-06 at 20:23 +1000, David Holmes wrote:
> On 6/03/2013 5:55 PM, Dawid Weiss wrote:
> > Here you go:
> > http://pastebin.com/raw.php?i=b2PHLm1e
> Thanks. I would have to say this seems to be the suspicious part:
> Thread 22 (Thread 0xf20ffb40 (LWP 22939)):
> #6 0xf6b5ea41 in ConcurrentG1RefineThread::run_young_rs_sampling() ()
> The suspendible thread set logic looks 'tricky". Time for the G1 experts
> to take over. :)
The young gen rs sampling thread is a thread that does some statistical
updates while the application is running. So that in the STW pause not
so much work needs to be done.
At a safepoint it is always suspended, this is normal.
As Bengt mentioned, the problem seems to be thread 10, which is the VM
thread (the one responsible for bringing everything to a safepoint and
then distributing work).
According to the stack trace, this thread seems to be waiting for
synchronization with the marking threads because of a mark stack
overflow during weak reference processing.
However all marking threads are already waiting due to the safepointing
operation, and so it waits endlessly.
As Bengt mentioned, this thread shouldn't be waiting, and shouldn't need
to because it seems to be the only thread working on weak references
anyway (i.e. this phase is single threaded).
More information about the hotspot-gc-dev