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