diff --git a/test/java/util/logging/AnonLoggerWeakRefLeak.sh b/test/java/util/logging/AnonLoggerWeakRefLeak.sh index 1402881275bdfdbd75680acab7cf2c83b0107df1..eef8641c7b665ec554f0d31ba948427b9a8e118e 100644 --- a/test/java/util/logging/AnonLoggerWeakRefLeak.sh +++ b/test/java/util/logging/AnonLoggerWeakRefLeak.sh @@ -59,9 +59,34 @@ set +e status="$?" set -e if [ "$status" != 0 ]; then - echo "INFO: switching jmap option from '$jmap_option'\c" - jmap_option="-histo" - echo " to '$jmap_option'." + # usage message doesn't show ':live' option + + if $isWindows; then + # If SA isn't present, then jmap gives a different usage message + # that doesn't show the ':live' option. However, that's a bug that + # is covered by 6971851 so we try using the option just to be sure. + # For some reason, this problem has only been seen on OpenJDK6 on + # Windows. Not sure why. + set +e + # Note: Don't copy this code to try probing process 0 on Linux; it + # will kill the process group in strange ways. + "${JMAP}" "$jmap_option" 0 2>&1 | grep 'Usage' > /dev/null 2>&1 + status="$?" + set -e + if [ "$status" = 0 ]; then + # Usage message generated so flag the problem. + status=1 + else + # No usage message so clear the flag. + status=0 + fi + fi + + if [ "$status" != 0 ]; then + echo "ERROR: 'jmap $jmap_option' is not supported so this test" + echo "ERROR: cannot work reliably. Aborting!" + exit 2 + fi fi # Start application and use TEST_NAME.port for coordination diff --git a/test/java/util/logging/LoggerWeakRefLeak.sh b/test/java/util/logging/LoggerWeakRefLeak.sh index 200e49b93694af1ac4387ef79815a1cf558b456f..ea3dc1f8f1dd993d65bdc6912ccfa5f7bf0df5ac 100644 --- a/test/java/util/logging/LoggerWeakRefLeak.sh +++ b/test/java/util/logging/LoggerWeakRefLeak.sh @@ -59,9 +59,34 @@ set +e status="$?" set -e if [ "$status" != 0 ]; then - echo "INFO: switching jmap option from '$jmap_option'\c" - jmap_option="-histo" - echo " to '$jmap_option'." + # usage message doesn't show ':live' option + + if $isWindows; then + # If SA isn't present, then jmap gives a different usage message + # that doesn't show the ':live' option. However, that's a bug that + # is covered by 6971851 so we try using the option just to be sure. + # For some reason, this problem has only been seen on OpenJDK6 on + # Windows. Not sure why. + set +e + # Note: Don't copy this code to try probing process 0 on Linux; it + # will kill the process group in strange ways. + "${JMAP}" "$jmap_option" 0 2>&1 | grep 'Usage' > /dev/null 2>&1 + status="$?" + set -e + if [ "$status" = 0 ]; then + # Usage message generated so flag the problem. + status=1 + else + # No usage message so clear the flag. + status=0 + fi + fi + + if [ "$status" != 0 ]; then + echo "ERROR: 'jmap $jmap_option' is not supported so this test" + echo "ERROR: cannot work reliably. Aborting!" + exit 2 + fi fi # Start application and use TEST_NAME.port for coordination