diff --git a/WHATSNEW b/WHATSNEW index 99916f40f..1db16d667 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -317,6 +317,9 @@ Other changes: Fixed bugs: ----------- +* Killing a thread running (e.g. from an IDE) would + not stop the forked process. Bugzilla 31928. + * Programs run with can now accept standard input from the Ant console. (Programs run with could already do so.) Bugzilla 24918. diff --git a/src/main/org/apache/tools/ant/taskdefs/Execute.java b/src/main/org/apache/tools/ant/taskdefs/Execute.java index e2da15bb3..09b762418 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Execute.java +++ b/src/main/org/apache/tools/ant/taskdefs/Execute.java @@ -27,11 +27,8 @@ import java.io.PrintWriter; import java.io.StringReader; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; -import java.util.Map; -import java.util.Set; import java.util.Vector; import org.apache.tools.ant.BuildException; @@ -40,7 +37,6 @@ import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.condition.Os; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.util.FileUtils; -import org.apache.tools.ant.util.JavaEnvUtils; /** * Runs an external program. @@ -485,6 +481,10 @@ public class Execute { watchdog.checkException(); } return getExitValue(); + } catch (ThreadDeath t) { + // #31928: forcibly kill it before continuing. + process.destroy(); + throw t; } finally { // remove the process to the list of those to destroy if // the VM exits