[15] RFR 8245961: Shenandoah: move some root marking to concurrent phase

Aleksey Shipilev shade at redhat.com
Tue Jun 2 14:13:43 UTC 2020


On 6/2/20 3:12 PM, Zhengyu Gu wrote:
> http://cr.openjdk.java.net/~zgu/JDK-8245961/webrev.01/index.html

Looks OK. A few more minor nits (after rebasing to jdk/jdk):
  https://cr.openjdk.java.net/~shade/shenandoah/8245961-shade-updates.patch

Does it pass hotspot_gc_shenandoah?

Just got a failure while testing a patch above. Shouldn't we also except the newly handled
concurrent roots from this verification?

#  Internal Error
(/home/shade/trunks/jdk-jdk/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp:943), pid=14874,
tid=14881
#  Error: Verify Roots; Should not be forwarded

Referenced from:
  interior location: 0x00007fb898447a18
  outside of Java heap
  0x00007fb898447a18 is at entry_point+440 in (nmethod*)0x00007fb898447690

Object:
  0x00000000c0304350 - klass 0x000000080008bbf8 jdk.internal.loader.ClassLoaders$AppClassLoader
    not allocated after mark start
        marked
        in collection set
  mark: marked(0x00000000fff80003)
  region: |    6|CS |BTE     c0300000,     c0380000,     c0380000|TAMS     c0380000|UWM
c0380000|U   512K|T   494K|G     0B|S 17472B|L 17472B|CP   0

Forwardee:
  0x00000000fff80000 - klass 0x000000080008bbf8 jdk.internal.loader.ClassLoaders$AppClassLoader
        allocated after mark start
        marked
    not in collection set
  mark: mark(is_neutral hash=0x000000000c387f44 age=0)
  region: | 2047|R  |BTE     fff80000,    100000000,    100000000|TAMS     fff80000|UWM
100000000|U   512K|T     0B|G   512K|S     0B|L     0B|CP   0

Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native
code)
V  [libjvm.so+0x17246ee]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*,
Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x37e
V  [libjvm.so+0x17253ff]  VMError::report_and_die(Thread*, void*, char const*, int, char const*,
char const*, __va_list_tag*)+0x2f
V  [libjvm.so+0x8c8301]  report_vm_error(char const*, int, char const*, char const*, ...)+0x111
V  [libjvm.so+0x1420dbd]  ShenandoahAsserts::print_failure(ShenandoahAsserts::SafeLevel, oop, void*,
oop, char const*, char const*, char const*, int)+0x3ed
V  [libjvm.so+0x150fe53]  ShenandoahVerifyNoForwared::do_oop(oop*)+0xa3
V  [libjvm.so+0x11fe150]  nmethod::oops_do(OopClosure*, bool)+0x120
V  [libjvm.so+0xc41907]  CodeBlobToOopClosure::do_code_blob(CodeBlob*)+0x37
V  [libjvm.so+0x16576d7]  JavaThread::oops_do(OopClosure*, CodeBlobClosure*)+0x187
V  [libjvm.so+0x1662dab]  Threads::possibly_parallel_oops_do(bool, OopClosure*, CodeBlobClosure*)+0x7b
V  [libjvm.so+0x14e7730]  ShenandoahRootVerifier::oops_do(OopClosure*)+0x290
V  [libjvm.so+0x150e171]
ShenandoahVerifier::verify_roots_no_forwarded_except(ShenandoahRootVerifier::RootTypes)+0x41
V  [libjvm.so+0x149d1e0]  ShenandoahHeap::op_final_mark()+0x4e0
V  [libjvm.so+0x149d85f]  ShenandoahHeap::entry_final_mark()+0xbf
V  [libjvm.so+0x150dd54]  VM_ShenandoahFinalMarkStartEvac::doit()+0x34
V  [libjvm.so+0x172683d]  VM_Operation::evaluate()+0x1cd
V  [libjvm.so+0x175562b]  VMThread::evaluate_operation(VM_Operation*) [clone .constprop.71]+0x13b
V  [libjvm.so+0x175606d]  VMThread::loop()+0x7bd
V  [libjvm.so+0x17564ba]  VMThread::run()+0xca
V  [libjvm.so+0x1664616]  Thread::call_run()+0xf6
V  [libjvm.so+0x12907de]  thread_native_entry(Thread*)+0x10e



-- 
Thanks,
-Aleksey



More information about the shenandoah-dev mailing list