JDK-6902115 : G1:assert(ignore_max_completed||thread->is_Java_thread()||SafepointSynchronize::is_at_safepoint())
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs17
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2009-11-17
  • Updated: 2013-09-18
  • Resolved: 2011-03-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.
JDK 6 JDK 7 Other
6u21Fixed 7Fixed hs17Fixed
Related Reports
Relates :  

I added the missing trailing parenthesis... and, umm..., removed the
space between "G1:" and "assert" -- the temptation to create a
nice long synopsis like that without any white-space was too
strong to resist! :-)

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/2dd52dea6d28

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/2dd52dea6d28

EVALUATION Assert is invalid.

SUGGESTED FIX The fix for the assert is to remove the assert. The concurrent refine threads can re-enqueue cards, potentially filling an update buffer which is then enqueued. The assert trips during the enqueuing of the completed buffer. Also it was noted that the block_start routine was returning an incorrect value. The fix for that is to use a "careful" version of block_start that uses only the block offset table entries themselves.