It didn't work.

There's no termination notification, if I use Process#destroyForcibly(). I believe the hsperfdata file is left behind so it will not be able to detect that the process has died.

Here is an updated version that renames some variable/methods.

http://cr.openjdk.java.net/~egahlin/8028474_3/

Thanks
Erik

Erik Gahlin skrev 2014-06-18 09:37:
Didn't know about destroyForcibly(). I could try that.

Erik

Staffan Larsen skrev 18/06/14 09:26:
Erik,

How about using Process.destroyForcibly() as a means to terminate the process instead of using files for signaling?

/Staffan

On 17 jun 2014, at 23:13, Erik Gahlin <erik.gah...@oracle.com <mailto:erik.gah...@oracle.com>> wrote:

Yes, very weird

Could have been that I needed the tools.jar in the child processes, or it could have been something else. If I remember correctly, I got a CNF that I didn't get with the shell script, but it was few months back.

Anyway, I retried with JPRT and now it works without the shell script.

http://cr.openjdk.java.net/~egahlin/8028474_2/

Erik

Staffan Larsen skrev 2014-06-16 13:49:

On 16 jun 2014, at 12:32, Erik Gahlin <erik.gah...@oracle.com <mailto:erik.gah...@oracle.com>> wrote:

Yekaterina Kantserova skrev 13/06/14 12:59:
Erik,

is there some reason why we need to keep MonitorVmStartTerminate.sh? I've moved the JTreg header to MonitorVmStartTerminate.java
Hi Katja,

That's how I did the test initially, and it works locally, but I could never get it to work in JPRT without the shell script. I believe the tools.jar is not on the class path.

That is weird. I see other tests that depend in tools.jar and they work fine.

/Staffan



Erik

/*
 * @test
 * @bug 4990825
 * @summary attach to external but local JVM processes
 * @library /lib/testlibrary
 * @build jdk.testlibrary.*
 * @run main MonitorVmStartTerminate
 */

and the test works just fine.

The JTreg run contains all pathes and system properties MonitorVmStartTerminate.sh tries to construct: ${JAVA} ${TESTVMOPTS} -Dtest.jdk=${TESTJAVA} -Dtest.classes=${TESTCLASSES} -classpath ${CP} MonitorVmStartTerminate

See the log attached.

Note *@build jdk.testlibrary.** instead of *@build jdk.testlibrary.ProcessTools* to make sure all testlibrary classes are compiled
to the right place when running tests concurrently.

Thanks,
Katja (Not a Reviewer)



On 06/12/2014 12:37 AM, Erik Gahlin wrote:
Hi,

Could I have a review of a test that has been failing
intermittently. The test now uses files for synchronization
instead of waiting for a process that sleeps.

Webrev:
http://cr.openjdk.java.net/~egahlin/8028474/

Bug:
https://bugs.openjdk.java.net/browse/JDK-8028474

Description:

The test starts ten Java processes, each with a unique id.

Each process creates a file named after the id and then it waits for
 the test to remove the file, at which the Java process exits.

 The processes are monitored by the test to make sure notifications
 are sent when processes are started/terminated.

To avoid Java processes being left behind, in case of an unexpected failure, shutdown hooks are registered that remove files when the test
 exits. If files are not removed, i.e. due to a JVM crash,
 the Java processes will exit themselves after 1000 s.

Thanks
Erik







Reply via email to