review request 7140866: assert(covered) failed: Card for end of new region not committed

Bengt Rutisson bengt.rutisson at
Tue Feb 14 14:24:59 PST 2012

Hi Dean,

Thanks for fixing this. Overall I think your change look good, but I 
have one question:

The check on line 282 uses spec()->enable_shared_spaces(), which I think 
is basically the same as "UseSharedSpaces || DumpSharedSpaces". So, this 
means that if we are running with "-XX:-UseSharedSpaces 
-XX:+DumpSharedSpaces" we would before your change do a call to

_rs->resize_covered_region(MemRegion(readonly_bottom, readwrite_end))

but after your change we won't do that call, right? Is this an intended 
change of behavior?

I admit that I know too little about this to even know if the above 
command line makes sense, but it seems to be allowed.


On 2012-02-13 23:09, Dean Long wrote:
> The problem happens when trying to use a shared archive.  If for some 
> reason mapping the shared file fails,
> we call
>     _rs->resize_covered_region(MemRegion(shared_bottom, shared_bottom));
> to undo the earlier call to
>     _rs->resize_covered_region(MemRegion(readonly_bottom, 
> readwrite_end));
> Unfortunately the resize code is not prepared to deal with a 
> zero-sized region so an assert fails.
> Rather than touch the resize code, this fix changes the caller to only 
> call resize_covered_region()
> once after the shared file is mapped.
> Tested fix on a particular linux arm platform where the mmap fails 
> 100% of the time due to a different issue.
> Ran -Xshare:dump first then a few GC tests.
> dl

More information about the hotspot-gc-dev mailing list