-
Bug
-
Resolution: Unresolved
-
P3
-
8u232
-
generic
-
generic
A user reported a mutex rank ordering problem between JVMTI LoadedClassesClosure and G1's SATB queues. As far as I can tell, this is caused by JDK-8187577:
ClassLoaderData::loaded_classes_do() acquires the "Metaspace allocation lock/5" and LoadedClassesClosure tries to enqueue it into G1's SATB queue, thus attempts to acquire "SATB_Q_CBL_mon/16"
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/buildbot/worker/jdk8u-redhat-linux/build/hotspot/src/share/vm/runtime/mutex.cpp:1321), pid=52148, tid=0x00007f270fd93700
# fatal error: acquiring lock SATB_Q_CBL_mon/16 out of order with lock Metaspace allocation lock/5 -- possible deadlock
#
# JRE version: OpenJDK Runtime Environment (8.0) (build 1.8.0-builds.shipilev.net-openjdk-jdk8-redhat-fastdebug-b113-20191111-aarch64-shenandoah-jdk8u232-b09)
# Java VM: OpenJDK 64-Bit Server VM (25.71-b113-20191111-aarch64-shenandoah-jdk8u232-09-fastdebug mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x00007f270805d800): JavaThread "main" [_thread_in_vm, id=52149, stack(0x00007f270fc93000,0x00007f270fd94000)]
Stack: [0x00007f270fc93000,0x00007f270fd94000], sp=0x00007f270fd8b770, free space=993k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x1235370] VMError::report_and_die()+0x160
V [libjvm.so+0x79c14f] report_fatal(char const*, int, char const*)+0x6f
V [libjvm.so+0xe03c57] Monitor::set_owner_implementation(Thread*)+0x227
V [libjvm.so+0xf63f95] PtrQueueSet::enqueue_complete_buffer(void**, unsigned long)+0x25
V [libjvm.so+0xf64268] PtrQueueSet::process_or_enqueue_complete_buffer(void**)+0x78
V [libjvm.so+0xf646d5] PtrQueue::enqueue_known_active(void*)+0x265
V [libjvm.so+0x9036b6] G1SATBCardTableModRefBS::enqueue(oop)+0x166
V [libjvm.so+0xc353d2] LoadedClassesClosure::do_klass(Klass*)+0x102
V [libjvm.so+0x693955] ClassLoaderData::loaded_classes_do(KlassClosure*)+0x55
V [libjvm.so+0x69528b] ClassLoaderDataGraph::loaded_classes_do(KlassClosure*)+0x2b
V [libjvm.so+0xc337b9] JvmtiGetLoadedClasses::getLoadedClasses(JvmtiEnv*, int*, _jclass***)+0xb9
V [libjvm.so+0xb9e4d7] jvmti_GetLoadedClasses+0x127
C [libjdwp.so+0xc7a7] classTrack_processUnloads+0x77
C [libjdwp.so+0x14b6b] event_callback+0x2eb
C [libjdwp.so+0x158ff] cbClassPrepare+0x7f
V [libjvm.so+0xc2524a] JvmtiExport::post_class_prepare(JavaThread*, Klass*)+0xea
V [libjvm.so+0x9f336c] InstanceKlass::link_class_impl(instanceKlassHandle, bool, Thread*) [clone .part.235]+0x6ac
V [libjvm.so+0x9f33ec] InstanceKlass::link_class_impl(instanceKlassHandle, bool, Thread*)+0x4c
V [libjvm.so+0x9f4727] InstanceKlass::initialize(Thread*)+0x157
V [libjvm.so+0xaac066] InterpreterRuntime::_new(JavaThread*, ConstantPool*, int)+0x236
ClassLoaderData::loaded_classes_do() acquires the "Metaspace allocation lock/5" and LoadedClassesClosure tries to enqueue it into G1's SATB queue, thus attempts to acquire "SATB_Q_CBL_mon/16"
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/buildbot/worker/jdk8u-redhat-linux/build/hotspot/src/share/vm/runtime/mutex.cpp:1321), pid=52148, tid=0x00007f270fd93700
# fatal error: acquiring lock SATB_Q_CBL_mon/16 out of order with lock Metaspace allocation lock/5 -- possible deadlock
#
# JRE version: OpenJDK Runtime Environment (8.0) (build 1.8.0-builds.shipilev.net-openjdk-jdk8-redhat-fastdebug-b113-20191111-aarch64-shenandoah-jdk8u232-b09)
# Java VM: OpenJDK 64-Bit Server VM (25.71-b113-20191111-aarch64-shenandoah-jdk8u232-09-fastdebug mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x00007f270805d800): JavaThread "main" [_thread_in_vm, id=52149, stack(0x00007f270fc93000,0x00007f270fd94000)]
Stack: [0x00007f270fc93000,0x00007f270fd94000], sp=0x00007f270fd8b770, free space=993k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x1235370] VMError::report_and_die()+0x160
V [libjvm.so+0x79c14f] report_fatal(char const*, int, char const*)+0x6f
V [libjvm.so+0xe03c57] Monitor::set_owner_implementation(Thread*)+0x227
V [libjvm.so+0xf63f95] PtrQueueSet::enqueue_complete_buffer(void**, unsigned long)+0x25
V [libjvm.so+0xf64268] PtrQueueSet::process_or_enqueue_complete_buffer(void**)+0x78
V [libjvm.so+0xf646d5] PtrQueue::enqueue_known_active(void*)+0x265
V [libjvm.so+0x9036b6] G1SATBCardTableModRefBS::enqueue(oop)+0x166
V [libjvm.so+0xc353d2] LoadedClassesClosure::do_klass(Klass*)+0x102
V [libjvm.so+0x693955] ClassLoaderData::loaded_classes_do(KlassClosure*)+0x55
V [libjvm.so+0x69528b] ClassLoaderDataGraph::loaded_classes_do(KlassClosure*)+0x2b
V [libjvm.so+0xc337b9] JvmtiGetLoadedClasses::getLoadedClasses(JvmtiEnv*, int*, _jclass***)+0xb9
V [libjvm.so+0xb9e4d7] jvmti_GetLoadedClasses+0x127
C [libjdwp.so+0xc7a7] classTrack_processUnloads+0x77
C [libjdwp.so+0x14b6b] event_callback+0x2eb
C [libjdwp.so+0x158ff] cbClassPrepare+0x7f
V [libjvm.so+0xc2524a] JvmtiExport::post_class_prepare(JavaThread*, Klass*)+0xea
V [libjvm.so+0x9f336c] InstanceKlass::link_class_impl(instanceKlassHandle, bool, Thread*) [clone .part.235]+0x6ac
V [libjvm.so+0x9f33ec] InstanceKlass::link_class_impl(instanceKlassHandle, bool, Thread*)+0x4c
V [libjvm.so+0x9f4727] InstanceKlass::initialize(Thread*)+0x157
V [libjvm.so+0xaac066] InterpreterRuntime::_new(JavaThread*, ConstantPool*, int)+0x236
- relates to
-
JDK-8187577 JVM crash during gc doing concurrent marking
-
- Resolved
-