[8u60] RFR (XS): 8076325: java hangs with -XX:ParallelGCThreads=0 -XX:+ExplicitGCInvokesConcurrent options
Stefan Karlsson
stefan.karlsson at oracle.com
Thu Apr 9 08:02:57 UTC 2015
Hi Sangheon,
On 2015-04-09 01:07, Sangheon Kim wrote:
> Hi all,
>
> I am sending this RFR again to open mailing alias.
>
> Please review this change to remove hang with "-XX:ParallelGCThreads=0".
>
> Java hangs with "-XX:+UseG1GC -XX:ParallelGCThreads=0
> -XX:+ExplicitGCInvokesConcurrent" combinations of options. If use
> -XX:-ExplicitGCInvokesConcurrent or -XX:ParallelGCThreads=1 then all
> works fine.
> To check this issue compile and run below application[1] using this
> command "java -XX:+UseG1GC -XX:ParallelGCThreads=0
> -XX:+ExplicitGCInvokesConcurrent TestApp"
>
> This is a regression resulted by recent backport from jdk9. But as
> jdk9 disallows "ParallelGCThreads=0", this test is okay with jdk9.
> In addition, backport of disallowing "ParallGCThreads=0" is not an
> option as it will change the behavior.
>
> The hang is happening at
> "G1RootProcessor::wait_until_all_strong_classes_discovered()" since we
> can't escape from while loop of "while
> ((uint)_n_workers_discovered_strong_classes != n_workers)".
>
> This change makes to run a logic of
> "G1RootProcessor::wait_until_all_strong_classes_discovered()" and
> "G1RootProcessor::worker_has_discovered_all_strong_classes()", if gc
> workers are larger than 0.
> And this change is same as the original code before change of backport.
>
> I will need a sponsor for this change.
>
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8076325
>
> Webrev:
> http://cr.openjdk.java.net/~sangheki/8076325/webrev.00/
The patch looks good. Could you turn your test into a jtreg test?
Thanks,
StefanK
>
> Test:
> JPRT
>
> [1]: TestApp.java:
> import java.util.*;
>
> public class Test8000311 {
> public static void main(String args[]) {
> for(int i = 0; i<100; i++) {
> byte[] garbage = new byte[1000];
> System.gc();
> System.out.println(i);
> }
> System.out.println("PASS");
> }
> }
>
> Thanks,
> Sangheon
More information about the hotspot-gc-dev
mailing list