[13] RFR(xs) 8226462: [TESTBUG] runtime/appcds/sharedStrings/SysDictCrash.java failed with Cannot dump shared archive

David Holmes david.holmes at oracle.com
Tue Jun 25 02:19:56 UTC 2019


Hi Calvin,

On 24/06/2019 7:10 pm, Calvin Cheung wrote:
> Hi David,
> 
> On 6/24/19, 2:59 PM, David Holmes wrote:
>> Hi Calvin,
>>
>> On 23/06/2019 10:50 pm, Calvin Cheung wrote:
>>> Hi David,
>>>
>>> Thanks for your review!
>>>
>>> I've a different fix by issuing a warning message from the VM and 
>>> have the dump time part of the test to look for that warning message 
>>> in case there's a RuntimeException. If there's such warning, don't 
>>> continue further.
>>>
>>> Here's an updated webrev:
>>>      http://cr.openjdk.java.net/~ccheung/8226462/webrev.01/
>>>
>>> Warning message looks like the following:
>>>
>>> Java HotSpot(TM) 64-Bit Server VM warning: UseCompressedOops and 
>>> UseCompressedClassPointers have been disabled due to max heap 
>>> 33768409088 > compressed oop heap 32178700288
>>> Java HotSpot(TM) 64-Bit Server VM warning: Please check the setting 
>>> of MaxRAMPercentage 12.50
>>
>> If a warning is needed I think this should be a single warning, not two.
>>
>> But I'm concerned that this warning may be triggered unexpectedly in 
>> some of our test runs and that other tests won't be prepared for this 
>> warning to appear.
> How about changing it to a cds log statement?
> 
> diff --git a/src/hotspot/share/runtime/arguments.cpp 
> b/src/hotspot/share/runtime/arguments.cpp
> --- a/src/hotspot/share/runtime/arguments.cpp
> +++ b/src/hotspot/share/runtime/arguments.cpp
> @@ -1815,6 +1815,10 @@
>         // was not specified.
>         if (reasonable_max > max_coop_heap) {
>           if (FLAG_IS_ERGO(UseCompressedOops) && override_coop_limit) {
> +          log_info(cds)("UseCompressedOops and 
> UseCompressedClassPointers have been disabled due to"
> +            " max heap " SIZE_FORMAT " > compressed oop heap " 
> SIZE_FORMAT ". "
> +            "Please check the setting of MaxRAMPercentage %5.2f."
> +            ,(size_t)reasonable_max, (size_t)max_coop_heap, 
> MaxRAMPercentage);
>             FLAG_SET_ERGO(UseCompressedOops, false);
>             FLAG_SET_ERGO(UseCompressedClassPointers, false);
>           } else {
> 
> An example is:
> [0.002s][info][cds] UseCompressedOops and UseCompressedClassPointers 
> have been disabled due to max heap 43082346496 > compressed oop heap 
> 32178700288. Please check the setting of MaxRAMPercentage 70.00.

Yes that seems better.

Thanks,
David
> thanks,
> Calvin
> 
>>
>> David
>> -----
>>
>>> thanks,
>>> Calvin
>>>
>>> On 6/21/19, 6:00 PM, David Holmes wrote:
>>>> Hi Calvin,
>>>>
>>>> On 21/06/2019 3:16 pm, Calvin Cheung wrote:
>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8226462
>>>>>
>>>>> webrev: http://cr.openjdk.java.net/~ccheung/8226462/webrev.00/
>>>>>
>>>>> On a test host with large amount of RAM, the UseCompressedOops and 
>>>>> the UseCompressedClassPointers flags would be disabled 
>>>>> ergonomically by the VM with the MaxRAMPercentage set to 12.5. To 
>>>>> void the test failure, the test has been changed to check the given 
>>>>> MaxRAMPercentage and uses it if the setting is <= 12.5.
>>>>
>>>> But if it fails on 12.5 presently then you would need to be < 12.5 
>>>> surely?
>>>>
>>>> And it's not the 12.5 per-se that is the issue IIUC but the amount 
>>>> of memory that 12.5% of RAM represents. If there is more memory you 
>>>> would need to use a smaller % to ensure it works - no?
>>>>
>>>> Thanks,
>>>> David
>>>> -----
>>>>
>>>>> Ran the test 20 times on the linux test host where the failure was 
>>>>> reproduced.
>>>>>
>>>>> thanks,
>>>>> Calvin


More information about the hotspot-runtime-dev mailing list