RFR: 8262157: LingeredApp.startAppExactJvmOpts does not print app output when launching fails
Chris Plummer
cjplummer at openjdk.java.net
Tue Feb 23 02:57:39 UTC 2021
On Mon, 22 Feb 2021 22:26:50 GMT, Yumin Qi <minqi at openjdk.org> wrote:
> Hi, Please review
>
> When debugging for other test case which uses jcmd to attach LingeredApp process, found there is no error information logged when the app started with function 'startAppExactJvmOpts' exits due to some reason. This is not convenient for trace what is the app failure.
> This simple fix for adding finishApp to print out error information when LingeredApp could not start with startAppExactJvmOpts, this is similar to startApp.
>
> Tests: This is a simple fix and done tests with test/jdk/sun/tools/jinfo which uses the function startAppExactJvmOpts to create LingeredApp, also the test case in debugging, which indeed captured the error message upon start error.
>
> Thanks
> Yumin
test/lib/jdk/test/lib/apps/LingeredApp.java line 419:
> 417: theApp.waitAppReady();
> 418: } catch (Exception ex) {
> 419: theApp.finishApp();
I'm worried about the output appearing twice in some tests:
try {
...
theApp = new LingeredAppWithLargeArray();
LingeredApp.startAppExactJvmOpts(theApp, vmArgs);
attachAndDump(heapDumpFileName, theApp.getPid());
} finally {
LingeredApp.stopApp(theApp);
heapDumpFile.delete();
}
So we always call `stopApp()`:
public void stopApp() throws IOException {
...
if (appProcess != null) {
...
finishApp();
...
}
}
Which means we always call `finishApp()`, which means we always print the output. With your changes won't we see the output twice when there is an exception?
In the CR it looks like `LingeredApp.startAppExactJvmOpts()` is being call from `JCmdTest.java`. I don't see this test. Is it under development? Does it need a `stopApp()` call?
-------------
PR: https://git.openjdk.java.net/jdk/pull/2679
More information about the hotspot-runtime-dev
mailing list