request for review (medium): 6722113

Y Srinivas Ramakrishna Y.S.Ramakrishna at Sun.COM
Fri Nov 14 20:03:29 UTC 2008

6722113 CMS: Incorrect overflow handling during precleaning of Reference lists


One problem was that we had reused a CMS reference processing closure
to do concurrent precleaning of the discovered reference list,
but had not extended it to deal correctly with marking stack overflow
that might occur during a concurrent phase. The fix is to do so
in the usual way for CMS, by redirtying the MUT-card containing the
overflown object, taking care to deal with reference array objects

A further problem was that the marking done during the precleaning
pass was not updating the discovered list lengths correctly because
of the interleaved manner in which discovery and preclean-processing
proceed in this case. This could lead to issues during the rebalancing
of the per-thread discovered lists when doing reference processing
multi-threaded. Adjusted related comments. (Note that this is
the first case where we are explicitly doing reference processing
without disabling discovery,  I'd like to call this out explicitly
for reviewers to pay special attention to. This will require looking
at the reference processing code in detail, not just the portions
that changed in the webrev. Note that this will need to change
if concurrent precleaning were ever to become parallel/multi-threaded.)

Testing: jprt, refworkload, with and without +ParallelRefProcEnabled

Thanks for your reviews.
-- ramki

More information about the hotspot-gc-dev mailing list