-
Bug
-
Resolution: Fixed
-
P3
-
12, 13
-
b11
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8220498 | 12.0.2 | Thomas Schatzl | P3 | Resolved | Fixed | b01 |
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/scratch/opt/mach5/mesos/work_dir/5fbae2b5-f76e-47c8-bb78-216e4a9d30fe/workspace/open/src/hotspot/share/runtime/thread.hpp:2096), pid=1312, tid=7
# assert(thread->is_Java_thread()) failed: just checking
#
# JRE version: Java(TM) SE Runtime Environment (13.0) (fastdebug build 13-internal+0-jdk13-jdk.373)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 13-internal+0-jdk13-jdk.373, mixed mode, sharing, tiered, compressed oops, g1 gc, solaris-sparc)
# Core dump will be written. Default location: /opt/mach5/mesos/work_dir/df48cb68-2e89-40b2-ba97-a4768750775c/testOutput/test-support/jtreg_open_test_hotspot_jtreg_tier1_gc/scratch/3/core or core.1312
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
--------------- S U M M A R Y ------------
Command Line: -XX:+UseG1GC -XX:G1PeriodicGCInterval=100 -Xlog:gc,gc+periodic=debug -Xmx10M gc.g1.TestPeriodicLogMessages$GCTest
Host: XXXXX, Sparcv9 64 bit 4133 MHz, 63 cores, 64G, Oracle Solaris 11.3 SPARC
Time: Tue Feb 12 13:51:55 2019 PST elapsed time: 0 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x00000001001d5000): ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0xffffffff58600000,0xffffffff58700000] [id=7]
Stack: [0xffffffff58600000,0xffffffff58700000], sp=0xffffffff586ff1f0, free space=1020k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x2471f1c] void VMError::report_and_die(int,const char*,const char*,void*,Thread*,unsigned char*,void*,void*,const char*,int,unsigned long)+0x92c
V [libjvm.so+0x2471588] void VMError::report_and_die(Thread*,void*,const char*,int,const char*,const char*,void*)+0x38
V [libjvm.so+0x14925a0] void report_vm_error(const char*,int,const char*,const char*,...)+0x80
V [libjvm.so+0xe6f170] JavaThread*JavaThread::current()+0xc0
V [libjvm.so+0x16b8d08] void GCLocker::stall_until_clear()+0x18
V [libjvm.so+0x15aacc0] void G1CollectedHeap::collect(GCCause::Cause)+0x840
V [libjvm.so+0x16b36bc] void G1YoungRemSetSamplingThread::run_service()+0x25c
V [libjvm.so+0x13d2028] void ConcurrentGCThread::run()+0x88
V [libjvm.so+0x2388adc] void Thread::call_run()+0x1ec
V [libjvm.so+0x202f824] thread_native_entry+0x3e4
Test: gc/g1/TestPeriodicLogMessages.java
Problematic code:
void GCLocker::stall_until_clear() {
assert(!JavaThread::current()->in_critical(), "Would deadlock");
MutexLocker ml(JNICritical_lock);
if (needs_gc()) {
log_debug_jni("Allocation failed. Thread stalled by JNI critical section.");
}
// Wait for _needs_gc to be cleared
while (needs_gc()) {
JNICritical_lock->wait();
}
}
Looks like the assertion needs to check if dealing with a JavaThread first.
Unclear what may have changed, or if this is just on a path normally never taken - we failed to schedule a collection.
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/scratch/opt/mach5/mesos/work_dir/5fbae2b5-f76e-47c8-bb78-216e4a9d30fe/workspace/open/src/hotspot/share/runtime/thread.hpp:2096), pid=1312, tid=7
# assert(thread->is_Java_thread()) failed: just checking
#
# JRE version: Java(TM) SE Runtime Environment (13.0) (fastdebug build 13-internal+0-jdk13-jdk.373)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 13-internal+0-jdk13-jdk.373, mixed mode, sharing, tiered, compressed oops, g1 gc, solaris-sparc)
# Core dump will be written. Default location: /opt/mach5/mesos/work_dir/df48cb68-2e89-40b2-ba97-a4768750775c/testOutput/test-support/jtreg_open_test_hotspot_jtreg_tier1_gc/scratch/3/core or core.1312
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
--------------- S U M M A R Y ------------
Command Line: -XX:+UseG1GC -XX:G1PeriodicGCInterval=100 -Xlog:gc,gc+periodic=debug -Xmx10M gc.g1.TestPeriodicLogMessages$GCTest
Host: XXXXX, Sparcv9 64 bit 4133 MHz, 63 cores, 64G, Oracle Solaris 11.3 SPARC
Time: Tue Feb 12 13:51:55 2019 PST elapsed time: 0 seconds (0d 0h 0m 0s)
--------------- T H R E A D ---------------
Current thread (0x00000001001d5000): ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0xffffffff58600000,0xffffffff58700000] [id=7]
Stack: [0xffffffff58600000,0xffffffff58700000], sp=0xffffffff586ff1f0, free space=1020k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x2471f1c] void VMError::report_and_die(int,const char*,const char*,void*,Thread*,unsigned char*,void*,void*,const char*,int,unsigned long)+0x92c
V [libjvm.so+0x2471588] void VMError::report_and_die(Thread*,void*,const char*,int,const char*,const char*,void*)+0x38
V [libjvm.so+0x14925a0] void report_vm_error(const char*,int,const char*,const char*,...)+0x80
V [libjvm.so+0xe6f170] JavaThread*JavaThread::current()+0xc0
V [libjvm.so+0x16b8d08] void GCLocker::stall_until_clear()+0x18
V [libjvm.so+0x15aacc0] void G1CollectedHeap::collect(GCCause::Cause)+0x840
V [libjvm.so+0x16b36bc] void G1YoungRemSetSamplingThread::run_service()+0x25c
V [libjvm.so+0x13d2028] void ConcurrentGCThread::run()+0x88
V [libjvm.so+0x2388adc] void Thread::call_run()+0x1ec
V [libjvm.so+0x202f824] thread_native_entry+0x3e4
Test: gc/g1/TestPeriodicLogMessages.java
Problematic code:
void GCLocker::stall_until_clear() {
assert(!JavaThread::current()->in_critical(), "Would deadlock");
MutexLocker ml(JNICritical_lock);
if (needs_gc()) {
log_debug_jni("Allocation failed. Thread stalled by JNI critical section.");
}
// Wait for _needs_gc to be cleared
while (needs_gc()) {
JNICritical_lock->wait();
}
}
Looks like the assertion needs to check if dealing with a JavaThread first.
Unclear what may have changed, or if this is just on a path normally never taken - we failed to schedule a collection.
- backported by
-
JDK-8220498 G1 crashes when issuing a periodic GC while the GCLocker is held
- Resolved
- relates to
-
JDK-8212657 Implementation of JDK-8204089 Promptly Return Unused Committed Memory from G1
- Resolved