Question regarding JVM crashes in GC

Michael Rasmussen michael.rasmussen at
Tue Apr 4 08:49:35 UTC 2017


We are currently in the middle of making JRebel ready for Java 9, and in
that process came across some issues with the concurrent GCs, and was
wondering if anyone here could help shed some insight into what's going

Basically, running with the current internal build of JRebel, I can
reproducible crash the JVM by calling System.gc(), if using a concurrent GC.

Output from 9-ea+160-jigsaw-nightly-h6207-20170316 build on Windows x64:

-XX:+UseG1GC: EXCEPTION_ACCESS_VIOLATION # UpdateRSOopClosure::do_oop+0x47
-XX:+UseConcMarkSweepGC: Internal Error (.../synchronizer.cpp:1574),
pid=12588, tid=6176 # guarantee(obj->mark() == markOopDesc::encode(mid))
failed: invariant
-XX:+UseParallelOldGC: Internal Error (.../synchronizer.cpp:1574),
pid=13792, tid=12284 # guarantee(obj->mark() == markOopDesc::encode(mid))
failed: invariant
-XX:+UseSerialGC works

With -XX:+VerifyBeforeGC -XX:+VerifyAfterGC
-XX:+UseParallelOldGC: EXCEPTION_ACCESS_VIOLATION # oopDesc::verify+0x2b
-XX:+UseParallelGC: EXCEPTION_ACCESS_VIOLATION # oopDesc::verify+0x38
Rest have same outcome as without the verification.

Also ran on build 9-ea+163 (Windows x64), with similar results (though less
symbol info):
G1: EXCEPTION_ACCESS_VIOLATION  [jvm.dll+0x2ac0b7]
ParallelOld: Internal Error (.../synchronizer.cpp:1574), pid=10472,
tid=13212 #  guarantee(obj->mark() == markOopDesc::encode(mid)) failed:
Parallel: EXCEPTION_ACCESS_VIOLATION [jvm.dll+0x45f1d2]

JRebel basically instruments every class in the system, including the
classes in java.base. We also set native prefix, so it is likely that we
trigger something somewhere.
Though, at this point, I don't know what. Perhaps the GCs make some
assumptions about some of the classes we touch (like hard-coded method or
field offsets etc?) ?

If anyone here has any idea where to start looking, it would be greatly

Kind regards
Michael Rasmussen
Product Manager, JRebel


More information about the hotspot-dev mailing list