Testing an alternate fix that will wait for the debugee process to
terminate after processing the "quit"
command before doing the vm tear down.
diff --git a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java
b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java
--- a/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java
+++ b/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/Debugee.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights
reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights
reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -557,6 +557,7 @@
* exit status code.
*/
public int endDebugee() {
+ int status = waitFor();
if (vm != null) {
try {
vm.dispose();
@@ -564,7 +565,7 @@
}
vm = null;
}
- return waitFor();
+ return status;
}
On 2/6/19, 8:14 AM, Gary Adams wrote:
Just a quick update on the failure on shutdown ...
I've come across a couple of other tests with a similar failure mode.
I'm attempting to get some additional diagnostic information from these
tests with "-jdi.trace=all", but the diagnostic output may be interfering
with the timing.
My current investigation is around a possible race condition
in the Debgugee.quit() processing.
- the "quit" string is sent to the deuggee via the IOpipe
- the vm.dispose() is handled from the JDWP communication
If the context switching is not quick enough, the debugee
may not have read and processed the "quit" command before
tear down is handled.
From earlier comments in the bug report the debuggee was observed
still at the breakpoint, so the resume and the disabling of the
breakpoint
had not been processed, yet.
It might be worth having an "ack" returned when the "quit" is
processed in the debugee.
...
On 2/1/19, 2:15 PM, serguei.spit...@oracle.com wrote:
Hi Gary,
The debugee.quit() is to complete the session.
It makes this call: sendSignal(SGNL_QUIT);
A call to the debugee.quit() is at the end of execTest() method:
display("");
}
display("");
display("=============");
display("TEST FINISHES\n");
brkpReq.disable();
debugee.resume();
debugee.quit();
}
Thanks,
Serguei
On 2/1/19 10:00, Gary Adams wrote:
When the remove_l005 runs to completion, it never signals the debuggee
that all iterations have completed.
Issue: https://bugs.openjdk.java.net/browse/JDK-8068225
diff --git a/test/hotspot/jtreg/ProblemList.txt
b/test/hotspot/jtreg/ProblemList.txt
--- a/test/hotspot/jtreg/ProblemList.txt
+++ b/test/hotspot/jtreg/ProblemList.txt
@@ -163,7 +163,6 @@
vmTestbase/nsk/jdi/EventRequest/setEnabled/setenabled003/TestDescription.java
8066993 generic-all
vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses021/TestDescription.java
8065773 generic-all
vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses023/TestDescription.java
8065773 generic-all
-vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005/TestDescription.java
8068225 generic-all
vmTestbase/metaspace/gc/firstGC_10m/TestDescription.java 8208250
generic-all
vmTestbase/metaspace/gc/firstGC_50m/TestDescription.java 8208250
generic-all
diff --git
a/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005.java
b/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005.java
---
a/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005.java
+++
b/test/hotspot/jtreg/vmTestbase/nsk/jdi/EventQueue/remove_l/remove_l005.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All
rights reserved.
+ * Copyright (c) 2002, 2019, Oracle and/or its affiliates. All
rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or
modify it
@@ -134,6 +134,7 @@
}
display("");
}
+ debugee.sendSignal(SGNL_QUIT);
display("");
display("=============");