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

Reply via email to