There are a few changes we can make to help understand the LingeredApp test when it goes wrong.
test/lib/jdk/test/lib/apps/LingeredApp.java
startAppExactJvmOpts() should not try and call finishApp unless the process isAlive, that just creates a misleading exception.
waitAppReady() is really waitAppReadyOrCrashed(), and should not timeout immediately after the 1 second sleep, or we lose a second of our timeout value (not critical with a long timeout, but seems more honest).
Show how long we waited when startup/crashing times out.
Show how long a good startup takes, so we have a basic for comparison when it fails.
Show if there are hs_err/core/mdmp files in the working directory after startup/crash attempt.
Also, in open/test/lib/jdk/test/lib/util/CoreUtils.java:
"Move core file" often seems unnecessary, core/mdmp usually being created in the current directory. But getCoreFileLocation() performs Files.move() which takes enough time to not be a no-op.
test/lib/jdk/test/lib/apps/LingeredApp.java
startAppExactJvmOpts() should not try and call finishApp unless the process isAlive, that just creates a misleading exception.
waitAppReady() is really waitAppReadyOrCrashed(), and should not timeout immediately after the 1 second sleep, or we lose a second of our timeout value (not critical with a long timeout, but seems more honest).
Show how long we waited when startup/crashing times out.
Show how long a good startup takes, so we have a basic for comparison when it fails.
Show if there are hs_err/core/mdmp files in the working directory after startup/crash attempt.
Also, in open/test/lib/jdk/test/lib/util/CoreUtils.java:
"Move core file" often seems unnecessary, core/mdmp usually being created in the current directory. But getCoreFileLocation() performs Files.move() which takes enough time to not be a no-op.