8226462: [TESTBUG] runtime/appcds/sharedStrings/SysDictCrash.java failed with Cannot dump shared archive

Add a CDS log statement in arguments.cpp. The test catches RuntimeException duing dumping and checks if the log statement is in the stdout.

Reviewed-by: iklam, dholmes
This commit is contained in:
Calvin Cheung 2019-06-25 09:41:03 -07:00
parent 5629241827
commit 5c5126f5ee
2 changed files with 21 additions and 2 deletions

View File

@ -1815,6 +1815,10 @@ void Arguments::set_heap_size() {
// 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 {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -53,7 +53,22 @@ public class SysDictCrash {
"-Xshare:dump",
"-showversion", "-Xlog:cds,cds+hashtables"));
TestCommon.checkDump(TestCommon.executeAndLog(dumpPb, "dump"));
boolean continueTest = true;
OutputAnalyzer output = TestCommon.executeAndLog(dumpPb, "dump");
try {
TestCommon.checkDump(output);
} catch (java.lang.RuntimeException re) {
if (!output.getStdout().contains("UseCompressedOops and UseCompressedClassPointers have been disabled due to")) {
throw re;
} else {
System.out.println("Shared archive was not created due to UseCompressedOops and UseCompressedClassPointers have been disabled.");
continueTest = false;
}
}
if (!continueTest) {
return;
}
ProcessBuilder runPb = ProcessTools.createJavaProcessBuilder(true,
TestCommon.concat(vmOptionsPrefix,