JDK-8060116 : After JDK-8047976 gc/g1/TestSummarizeRSetStatsThreads fails
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 8u40,9
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2014-10-10
  • Updated: 2017-07-26
  • Resolved: 2014-10-14
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 JDK 9
8u40Fixed 9 b37Fixed
Related Reports
Relates :  
Relates :  
Description
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
Comments
Then the additional task is to check why in jdk9 the test does not fail. If there is a problem in 9 too, change fix version accordingly.
10-10-2014

Taking my words back: jdk 9 should be also affected (I've missed that JDK-8059527 is about defualt ParallelGCThreads value), but gc/g1/TestSummarizeRSetStatsThreads.java passed w/ 9-b34.
10-10-2014

ILW: I: medium -> no log output, but otherwise no change, test failure L: high -> always when used W: high -> none -> P2
10-10-2014

Also check if this really is no problem in jdk9
10-10-2014

Ah, JDK-8047976 is still in "team" repo, according to main bug. :)
10-10-2014

Hm, I though that 8047976 should be presented in 9-b34 (it was in PIT, IIRC), but it is not there: Dump of assembler code for function _ZN18ConcurrentG1Refine10thread_numEv: => 0x00007ffff62eabb0 <+0>: lea 0x10a0ac1(%rip),%rax # 0x7ffff738b678 <G1ConcRefinementThreads> 0x00007ffff62eabb7 <+7>: push %rbp 0x00007ffff62eabb8 <+8>: mov %rsp,%rbp 0x00007ffff62eabbb <+11>: mov (%rax),%rdx 0x00007ffff62eabbe <+14>: test %rdx,%rdx 0x00007ffff62eabc1 <+17>: jne 0x7ffff62eabcc <_ZN18ConcurrentG1Refine10thread_numEv+28> 0x00007ffff62eabc3 <+19>: lea 0x10a139e(%rip),%rax # 0x7ffff738bf68 <ParallelGCThreads> 0x00007ffff62eabca <+26>: mov (%rax),%edx 0x00007ffff62eabcc <+28>: mov $0x1,%eax 0x00007ffff62eabd1 <+33>: test %edx,%edx 0x00007ffff62eabd3 <+35>: cmovne %edx,%eax 0x00007ffff62eabd6 <+38>: pop %rbp 0x00007ffff62eabd7 <+39>: retq
10-10-2014