[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