Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8225837 | 14 | Aleksey Shipilev | P4 | Resolved | Fixed | team |
This shows up in testing:
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/buildbot/worker/shenandoah-jdkX-linux/build/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp:94), pid=112582, tid=112613
# assert(!ShenandoahHeap::heap()->unload_classes() || ShenandoahHeap::heap()->heuristics()->can_do_traversal_gc()) failed: No class unloading or traversal GC
#
# JRE version: OpenJDK Runtime Environment (13.0) (fastdebug build 13-testing+0-builds.shipilev.net-openjdk-shenandoah-jdk-b465-20190527-jdk-1321)
# Java VM: OpenJDK Server VM (fastdebug 13-testing+0-builds.shipilev.net-openjdk-shenandoah-jdk-b465-20190527-jdk-1321, mixed mode, tiered, shenandoah gc, linux-x86)
# Problematic frame:
# V [libjvm.so+0x12fcc44] ShenandoahRootScanner<ShenandoahAllCodeRootsIterator>::roots_do(unsigned int, OopClosure*, CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0x164
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
--------------- T H R E A D ---------------
Current thread (0xdd4ae000): VMThread "VM Thread" [stack: 0xdd165000,0xdd1e5000] [id=55777]
Stack: [0xdd165000,0xdd1e5000], sp=0xdd1e3b70, free space=506k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x12fcc44] ShenandoahRootScanner<ShenandoahAllCodeRootsIterator>::roots_do(unsigned int, OopClosure*, CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0x164
V [libjvm.so+0x1328f2a] ShenandoahHeap::object_iterate(ObjectClosure*) [clone .part.141]+0x17a
V [libjvm.so+0xb94c44] HeapInspection::populate_table(KlassInfoTable*, BoolObjectClosure*)+0x94
V [libjvm.so+0xb950ea] HeapInspection::heap_inspection(outputStream*)+0x25a
V [libjvm.so+0xb3554d] VM_GC_HeapInspection::doit()+0x6d
V [libjvm.so+0x158c9c1] VM_Operation::evaluate()+0x1c1
V [libjvm.so+0x15b85d8] VMThread::evaluate_operation(VM_Operation*) [clone .constprop.61]+0x128
V [libjvm.so+0x15b8cfb] VMThread::loop()+0x38b
V [libjvm.so+0x15b96ce] VMThread::run()+0xce
V [libjvm.so+0x14d54f9] Thread::call_run()+0xf9
V [libjvm.so+0x112dfc6] thread_native_entry(Thread*)+0x136
C [libpthread.so.0+0x627a] start_thread+0xda
It seems we have entered for VM_GC_HeapInspection, which means the assert that verifies ShenandoahRootScanner::roots_do is only entered for class unloading / traversal is too strong.
Introduced byJDK-8224210.
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/buildbot/worker/shenandoah-jdkX-linux/build/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp:94), pid=112582, tid=112613
# assert(!ShenandoahHeap::heap()->unload_classes() || ShenandoahHeap::heap()->heuristics()->can_do_traversal_gc()) failed: No class unloading or traversal GC
#
# JRE version: OpenJDK Runtime Environment (13.0) (fastdebug build 13-testing+0-builds.shipilev.net-openjdk-shenandoah-jdk-b465-20190527-jdk-1321)
# Java VM: OpenJDK Server VM (fastdebug 13-testing+0-builds.shipilev.net-openjdk-shenandoah-jdk-b465-20190527-jdk-1321, mixed mode, tiered, shenandoah gc, linux-x86)
# Problematic frame:
# V [libjvm.so+0x12fcc44] ShenandoahRootScanner<ShenandoahAllCodeRootsIterator>::roots_do(unsigned int, OopClosure*, CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0x164
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
--------------- T H R E A D ---------------
Current thread (0xdd4ae000): VMThread "VM Thread" [stack: 0xdd165000,0xdd1e5000] [id=55777]
Stack: [0xdd165000,0xdd1e5000], sp=0xdd1e3b70, free space=506k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x12fcc44] ShenandoahRootScanner<ShenandoahAllCodeRootsIterator>::roots_do(unsigned int, OopClosure*, CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0x164
V [libjvm.so+0x1328f2a] ShenandoahHeap::object_iterate(ObjectClosure*) [clone .part.141]+0x17a
V [libjvm.so+0xb94c44] HeapInspection::populate_table(KlassInfoTable*, BoolObjectClosure*)+0x94
V [libjvm.so+0xb950ea] HeapInspection::heap_inspection(outputStream*)+0x25a
V [libjvm.so+0xb3554d] VM_GC_HeapInspection::doit()+0x6d
V [libjvm.so+0x158c9c1] VM_Operation::evaluate()+0x1c1
V [libjvm.so+0x15b85d8] VMThread::evaluate_operation(VM_Operation*) [clone .constprop.61]+0x128
V [libjvm.so+0x15b8cfb] VMThread::loop()+0x38b
V [libjvm.so+0x15b96ce] VMThread::run()+0xce
V [libjvm.so+0x14d54f9] Thread::call_run()+0xf9
V [libjvm.so+0x112dfc6] thread_native_entry(Thread*)+0x136
C [libpthread.so.0+0x627a] start_thread+0xda
It seems we have entered for VM_GC_HeapInspection, which means the assert that verifies ShenandoahRootScanner::roots_do is only entered for class unloading / traversal is too strong.
Introduced by
- backported by
-
JDK-8225837 ShenandoahRootScanner::roots_do assert is too strong
- Resolved
- relates to
-
JDK-8225014 Separate ShenandoahRootScanner method for object_iterate
- Resolved
-
JDK-8224210 Shenandoah: Refactor ShenandoahRootScanner to support scanning CSet codecache roots
- Resolved