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

Zhengyu Gu zgu at redhat.com
Tue Jun 2 17:50:50 UTC 2020



On 6/2/20 10:13 AM, Aleksey Shipilev wrote:
> 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

Rebased webrev.01 to jdk/jdk and manually folded some of your suggested 
changes:

http://cr.openjdk.java.net/~zgu/JDK-8245961/webrev.02/

Test:
   hotspot_gc_shenandoah (with +ShenandoahVerify), all clear.

Thanks,

-Zhengyu

> 
> 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
> 
> 
> 



More information about the hotspot-gc-dev mailing list