8u144 hotspot fails to reach safepoint due to compiler thread - VM frozen
I have some colleagues who appear to be running into https://bugs.openjdk.java.net/browse/JDK-8059128 on Oracle JDK 8u144 (Linux, x86-64). Naturally, there's no reproducer but they've seen this happen several times in the last couple of months.
The symptom is the JVM becomes unresponsive - the application is not servicing any traffic, and jstack doesn't work without the force option. jstack output (with native frames) captured some time apart shows the compiler thread either in Parse::do_all_blocks -> do_one_block -> do_one_bytecode -> ... InstanceKlass::has_finalizable_subclass -> Dependencies::find_finalizable_subclass or <same as the previous one> ... Dependencies::has_finalizable_subclass() -> Klass::next_sibling()
I see that 8059128 was closed as Incomplete, but it does look like there's a real issue here. Has anyone looked into this further or has any new thoughts/ideas?
My understanding is the working theory is it's related to some data race between class unloading and the compiler thread observing an inconsistent (corrupt?) type hierarchy. I see https://bugs.openjdk.java.net/browse/JDK-8114823 is also noted as possibly related - the app we're having trouble with is using G1, but class unloading isn't disabled of course. Is there some work around to reduce the likelihood of having the compiler thread and GC cross paths like this?