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

Calvin Cheung calvin.cheung at oracle.com
Mon Jun 24 23:10:19 UTC 2019


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.

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