RFR: JDK-8078904 : CMS: Assert failed: Ctl pt invariant

Eric Caspole eric.caspole at oracle.com
Mon Jun 1 20:30:17 UTC 2015

Hi Thomas,
Coleen told me about Gerard's new command line validation feature which 
should be committed in the next week or two. That looks like a good way 
to fix the argument processing using simple functions for each option 
being checked. So I will wait for that to come out and then fix the 
MinTLABSize/YoungPLABSize conflict using it.

On 06/01/2015 07:17 AM, Thomas Schatzl wrote:
> Hi,
> On Thu, 2015-05-28 at 13:01 -0400, Eric Caspole wrote:
>> Hi Thomas,
>> OK after our IM yesterday and a few more experiments I changed this to
>> use a fixed divisor 2*K (currently the default MinTLABSize) for setting
>> up the stripes. I think this is the simplest fix that preserves the
>> intent of the plab_sample_minimum_size() that was there but avoids being
>> susceptible to unusual MinTLABSize options.
>>    http://cr.openjdk.java.net/~ecaspole/JDK-8078904/02/webrev/
>> There is a mess with Young/OldPLABSize vs unusual MinTLABSize options
>> but I think we should tackle that as a separate bug, since that affects
>> both G1 and CMS.
>    the problem I see with this change is that you can still make the
> assert fail by setting the initial YoungPLABSize to < 2K (if I
> understand the problem correctly).
> E.g. running the VM with -XX:YoungPLABSize=100 -XX:+ConcMarkSweepGC -XX:
> +CMSParallelInitialMarkEnabled -XX:+CMSParallelRemarkEnabled
> -XX:-ResizePLAB -Xms32M -Xmx64m SpecApplication -s100 -g _209_db gives
> the same error.
> G1 *should* not be affected to that extent because it does not size data
> structures according to MinTLABSize/YoungPLABSize afaik.
> I do not see a way around fixing either the argument processing or
> dropping the asserts as "benign" performance issue.
> Also, the change should be accompanied by a test case (well, two now :))
> that at show that this particular assert will not be triggered any more.
> Thanks,
>    Thomas

More information about the hotspot-gc-dev mailing list