[15] RFR 8237963: Shenandoah: Heap iteration should use single-threaded string dedup oops_do_slow()

Zhengyu Gu zgu at redhat.com
Tue Jan 28 19:03:34 UTC 2020


Sorry, the early fix is incorrect.

Concurrent string dedup cleaning task may change string dedup 
table/queue structures, that makes it unsafe for heap iteration to walk 
them concurently.

Instead, heap iteration should use concurrent version, to block out each 
other.

Updated webrev: 
http://cr.openjdk.java.net/~zgu/JDK-8237963/webrev.00/index.html

Also changed bug synopsis to:

Shenandoah: Heap iteration should use concurrent version of string dedup 
roots

Test:
     gc/shenandoah/jvmti/TestHeapDump.java test with
    -XX:+UseStringDeduplication (fastdebug and release) on x86_64 Linux.
    in loop with 10 iterations.

Thanks,

-Zhengyu

On 1/28/20 10:34 AM, Zhengyu Gu wrote:
> Please review this patch that uses single-threaded string dedup's 
> oops_do() implementation for heap iteration.
> 
> The bug was reported by SAP on Windows, but it is not Windows specific. 
> The bug is due to heap iteration uses parallel version of string dedup's 
> oops_do() implementation, which can interfere concurrent string dedup 
> cleaning task.
> 
> 
> Bug: https://bugs.openjdk.java.net/browse/JDK-8237963
> Webrev: http://cr.openjdk.java.net/~zgu/JDK-8237963/webrev.00/index.html
> 
> Test:
>     gc/shenandoah/jvmti/TestHeapDump.java test with 
> -XX:+UseStringDeduplication (fastdebug and release) on x86_64 Linux.
> 
> Thanks,
> 
> -Zhengyu



More information about the shenandoah-dev mailing list