JDK-6694340 : G1: deadlock in concurrent marking phase when stack overflow occurs
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs14
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2008-04-25
  • Updated: 2013-09-18
  • Resolved: 2009-02-13
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
6u14Fixed 7Fixed hs14Fixed
The concurrent marking threads can be deadlocked if a stack overflow occurs.

SUGGESTED FIX I'll piggy-back on this CR the increase of the global and region stack sizes to decrease the probability of an overflow.

SUGGESTED FIX Add some code to reset the sync barriers. *** (#1 of 1): [ UNSAVED ] ###@###.###

EVALUATION This happens when dealing with the second overflow of the same cycle. To deal with the stack overflow, the workers that are doing the marking have to go through two sync barriers. Unfortunately, said sync barriers are not properly reset after the first overflow, so the workers get stuck during the second one. In fact, it looks as if the workers are stuck there for good. So, subsequently, no more concurrent marking phases take place and G1 only does GC pauses and Full GCs.