SUGGESTED FIX
changeset: 301:ebeb6490b814
parent: 299:387a62b4be60
user: ysr
date: Tue Aug 26 14:54:48 2008 -0700
summary: 6722116: CMS: Incorrect overflow handling when using parallel concurrent marking
|
|
|
EVALUATION
http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/ebeb6490b814
|
|
|
SUGGESTED FIX
The following is under testing and review:
http://analemma.sfbay.sun.com/net/neeraja/export/ysr/cms_cmt/webrev/
|
|
|
EVALUATION
This is a bug since 6.0 when parallel concurrent marking was first introduced.
Because this involves not the first, but the second level of overflow,
it's much less frequent (other than under really high stress
conditions), and so customers are not likely to run into this
very frequently (i think).
|
|
|
SUGGESTED FIX
The restart_addr should be pushed down into the state of the
ConcurrentMarkingTask and, further, the do_scan_and_mark()
methods should use that restart address as the starting point
when re-starting their marking work following an overflow-and-restart
(rather than the bottom of the space as currently done).
|
|
|
WORK AROUND
-XX:-CMSConcurrentMTEnabled.
Otherwise, increasing the size of the marking stack via -XX:CMSMarkingStackSize{,Max}
would reduce the probability of hitting this bug.
|
|
|