--- old/test/runtime/7158988/FieldMonitor.java 2014-02-11 18:26:14.000000000 +0100 +++ new/test/runtime/7158988/FieldMonitor.java 2014-02-11 18:26:14.000000000 +0100 @@ -34,13 +34,10 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.Reader; -import java.io.Writer; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.io.PrintWriter; import com.sun.jdi.Bootstrap; import com.sun.jdi.Field; @@ -70,16 +67,9 @@ public static void main(String[] args) throws IOException, InterruptedException { - - StringBuffer sb = new StringBuffer(); - - for (int i=0; i < args.length; i++) { - sb.append(' '); - sb.append(args[i]); - } - //VirtualMachine vm = launchTarget(sb.toString()); + VirtualMachine vm = launchTarget(CLASS_NAME); - + System.out.println("Vm launched"); // set watch field on already loaded classes List referenceTypes = vm @@ -100,7 +90,9 @@ // Copy target's output and error to our output and error. Thread outThread = new StreamRedirectThread("out reader", process.getInputStream()); Thread errThread = new StreamRedirectThread("error reader", process.getErrorStream()); - + + PrintWriter vmPrinter = null; + errThread.start(); outThread.start(); @@ -121,6 +113,13 @@ ReferenceType refType = classPrepEvent .referenceType(); addFieldWatch(vm, refType); + + // inform TestPostFieldModification that it can exit. // JDK-8007710 + if (vmPrinter == null) { + vmPrinter = new PrintWriter(process.getOutputStream()); + vmPrinter.println(""); + vmPrinter.flush(); + } } else if (event instanceof ModificationWatchpointEvent) { System.out.println("sleep for 500 ms"); Thread.sleep(500); --- old/test/runtime/7158988/TestPostFieldModification.java 2014-02-11 18:26:15.000000000 +0100 +++ new/test/runtime/7158988/TestPostFieldModification.java 2014-02-11 18:26:14.000000000 +0100 @@ -36,6 +36,17 @@ for(int i = 0; i < 10; i++) { test.value += new String("_test"); } + + // JDK-8007710 + System.out.println("---TestPostFieldModification-run waiting to exit ..."); + try { + System.in.read(); + } catch (Exception e) { + System.out.println("---TestPostFieldModification-run impossible? "+e); + e.printStackTrace(); + } + + System.out.println("---TestPostFieldModification-run bye!"); } }.start();