From 5c5126f5ee47e168753799a8fb6ef5a1983f761b Mon Sep 17 00:00:00 2001 From: Calvin Cheung Date: Tue, 25 Jun 2019 09:41:03 -0700 Subject: [PATCH] 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 --- src/hotspot/share/runtime/arguments.cpp | 4 ++++ .../appcds/sharedStrings/SysDictCrash.java | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp index a42570dd29c..55a89876b4b 100644 --- a/src/hotspot/share/runtime/arguments.cpp +++ b/src/hotspot/share/runtime/arguments.cpp @@ -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 { diff --git a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java index c99086f3727..fb8b5afbfa9 100644 --- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java +++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java @@ -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,