diff --git a/main/actions/src/main/scala/sbt/ForkTests.scala b/main/actions/src/main/scala/sbt/ForkTests.scala index 981c714cf..b9186b1fe 100755 --- a/main/actions/src/main/scala/sbt/ForkTests.scala +++ b/main/actions/src/main/scala/sbt/ForkTests.scala @@ -49,6 +49,8 @@ private[sbt] object ForkTests case _: java.net.SocketException => return } val os = new ObjectOutputStream(socket.getOutputStream) + // Must flush the header that the constructor writes, otherwise the ObjectInputStream on the other end may block indefinitely + os.flush() val is = new ObjectInputStream(socket.getInputStream) try { diff --git a/testing/agent/src/main/java/sbt/ForkMain.java b/testing/agent/src/main/java/sbt/ForkMain.java index c54d177da..a494adbc4 100755 --- a/testing/agent/src/main/java/sbt/ForkMain.java +++ b/testing/agent/src/main/java/sbt/ForkMain.java @@ -92,6 +92,8 @@ public class ForkMain { Socket socket = new Socket(InetAddress.getByName(null), Integer.valueOf(args[0])); final ObjectInputStream is = new ObjectInputStream(socket.getInputStream()); final ObjectOutputStream os = new ObjectOutputStream(socket.getOutputStream()); + // Must flush the header that the constructor writes, otherwise the ObjectInputStream on the other end may block indefinitely + os.flush(); try { try { new Run().run(is, os);