Fixed pinned region handling in mark-compact
Roman Kennke
rkennke at redhat.com
Fri Mar 2 18:22:29 UTC 2018
We've got a problem with pinned regions in full-GC: all normal regions
get compacted, and afterwards TAMS is set to bottom, which makes any
subsequent iteration using SH::marked_object_iterate() use size-based
iteration. HOWEVER, for pinned regions this does not happen: pinned
regions are left where they were, including possibly unreachable
objects inside. And since those unreachable objects may point to
unloaded Klasses, size-based-iteration over them would crash.
The solution is to keep marking bitmap and TAMS intact for pinned regions.
Thanks Aleksey for providing a testcase that triggers the bug.
http://cr.openjdk.java.net/~rkennke/fix-fullgc-pinned/webrev.00/
Testing: hotspot_gc_dev (incl new tests), manual testing of specjvm
run that trigger the original issue.
Ok?
More information about the shenandoah-dev
mailing list