On Mon, 22 Feb 2021 22:26:50 GMT, Yumin Qi <[email protected]> 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