JDK-8230483 : Shenandoah: consistently disable concurrent roots for Traversal mode
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 14
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2019-09-03
  • Updated: 2020-01-10
  • Resolved: 2019-09-03
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 14
14 b13Fixed
Related Reports
Relates :  
Description
SAP reported there were assertion failures since 2019-07-14.
It looks like traversal specific.

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/usr/work/openjdk/nb/linuxx86_64/nightly/jdk/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp:319), pid=17233, tid=17264
#  Error: Shenandoah assert_correct failed; Object klass pointer must go to metaspace

Referenced from:
  interior location: 0x00007fb755390a7f
  outside of Java heap
  0x00007fb755390a7f is at entry_point+3807 in (nmethod*)0x00007fb75538ed90

Object:
  0x00000000ffdc0d08 - safe print, no details
  region: | 2039|R  |BTE     ffdc0000,     ffe00000,     ffe00000|TAMS     ffe00000|U   256K|T     0B|G   256K|S     0B|L     0B|CP   0|SN            0,        0,     43e8,     43e8

Current thread (0x00007fb744001000):  GCTaskThread "Shenandoah GC Threads#1" [stack: 0x00007fb74ce30000,0x00007fb74cf30000] [id=17264]

Stack: [0x00007fb74ce30000,0x00007fb74cf30000],  sp=0x00007fb74cf2c550,  free space=1009k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x18e5c0f]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x37f
V  [libjvm.so+0x18e6a0f]  VMError::report_and_die(Thread*, void*, char const*, int, char const*, char const*, __va_list_tag*)+0x2f
V  [libjvm.so+0xa857b1]  report_vm_error(char const*, int, char const*, char const*, ...)+0x111
V  [libjvm.so+0x15d443c]  ShenandoahAsserts::print_failure(ShenandoahAsserts::SafeLevel, oop, void*, oop, char const*, char const*, char const*, int)+0x52c
V  [libjvm.so+0x15d51d7]  ShenandoahAsserts::assert_correct(void*, oop, char const*, int)+0x137
V  [libjvm.so+0x15ff8b5]  ShenandoahNMethod::assert_alive_and_correct()+0x165
V  [libjvm.so+0x1601461]  void ShenandoahCodeRootsIterator::fast_parallel_blobs_do<true>(CodeBlobClosure*)+0x111
V  [libjvm.so+0x16ac2e1]  ShenandoahRootScanner<ShenandoahCsetCodeRootsIterator>::roots_do(unsigned int, OopClosure*, CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0x1f1
V  [libjvm.so+0x16ac643]  ShenandoahInitTraversalCollectionTask::work(unsigned int)+0x203
V  [libjvm.so+0x195a2c0]  GangWorker::loop()+0xe0
V  [libjvm.so+0x1823d46]  Thread::call_run()+0xf6
V  [libjvm.so+0x1426186]  thread_native_entry(Thread*)+0x116


Comments
JDK-8236815 seems related to this one (which doesn't appear to be fully fixed).
08-01-2020

URL: https://hg.openjdk.java.net/jdk/jdk/rev/d8f22418ca99 User: zgu Date: 2019-09-03 17:56:31 +0000
03-09-2019

I believe it is caused by JDK-8226757. shenandoah/jdk has the fix. # HG changeset patch # User zgu # Date 1567522697 14400 # Tue Sep 03 10:58:17 2019 -0400 # Node ID df218f0b735c7fe2aca6589184bb0186d5dd1dab # Parent 2172fd713350599c2b056a7f2d7d0fa0bbcc84cd 8230483: Shenandoah: Shenandoah assert_correct failed; Object klass pointer should not be NULL diff --git a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentRoots.cpp b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentRoots.cpp --- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentRoots.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentRoots.cpp @@ -28,7 +28,7 @@ bool ShenandoahConcurrentRoots::can_do_concurrent_roots() { // Don't support traversal GC at this moment - return !ShenandoahHeap::heap()->is_concurrent_traversal_in_progress(); + return !ShenandoahHeap::heap()->is_traversal_mode(); } bool ShenandoahConcurrentRoots::should_do_concurrent_roots() {
03-09-2019