JDK-8052170 : G1 asserts at collection exit with -XX:-G1DeferredRSUpdate
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2014-07-28
  • Updated: 2015-01-21
  • Resolved: 2014-08-08
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.
8u40Fixed 9 b28Fixed
Related Reports
Duplicate :  
Relates :  
G1 asserts with the following error when deferred RS update is disabled.

# after -XX: or in .hotspotrc:  SuppressErrorAt=/g1GCPhaseTimes.cpp:155
Unexpected Error
Internal Error at g1GCPhaseTimes.cpp:155, pid=3097, tid=140579531847424
assert(_data[i] != _uninitialized) failed: Invalid data for worker 0, data: -1.000000, uninitialized: -1.000000

Do you want to debug the problem?

To debug, run 'gdb /proc/3097/exe 3097'; then switch to thread 140579531847424 (0x00007fdb390ef700)
Enter 'yes' to launch gdb automatically (PATH must include gdb)
Otherwise, press RETURN to abort...

P5 because G1DeferredRSUpdate is debug only, and needs to be explicitly set.
The changeset identifies the regression test (via addition of this bugid to the @bugs list) which can be run to find this issue. A "noreg" Label is not necessary.

Also needs -XX:+PrintGCDetails to reproduce. This is why the test for JDK-8040977 does not fire.

I=M, assert when running with -G1DeferredRSUpdate L=M, not an entirely uncommon debugging situation is disabling deferred rs updates W=L, -G1DeferredRSUpdate is usually not needed, and the assert can be worked around with SuppressErrorAt for debugging MML=>P4