JDK-8047976 changes the logic of G1ConcRefinementThreads processing:
previously when G1ConcRefinementThreads was zero, ConcurrentG1Refine::thread_num returned max(ParallelGCThreads, 1).
So when both ParallelGCThreads and G1ConcRefinementThreads were zeros, at least one conc refinement thread was used.
After JDK-8047976 integration into 8u40 if G1ConcRefinementThreads=0 passed to JVM, then its value updated to ParallelGCThreads.
Since JDK-8059527 was not backported to 8u40, ParallelGCThreads still could be 0, and in this case G1ConcRefinementThreads will be zero too.
Following test fails for the case when both ParallelGCThreads & G1ConcRefinementThreads were set to zero, because G1RemSetSummary::print_on don't print RS threads time due to absence of such threads:
gc/g1/TestSummarizeRSetStatsThreads.java