https://bz.apache.org/bugzilla/show_bug.cgi?id=58833
--- Comment #1 from Dan Fournier <[email protected]> --- I believe this is the same issue as reported in Bug 58451. The issue is that the PumpStreamHandler.java has a 200 MS value for JOIN_TIMEOUT and that is not enough time to flush the I/O when a system is busy. My proposed change would be to increase the JOIN_TIMEOUT from 200 to 5000 (maybe even larger) or make this a configurable property. Note that in the ant 1.9.7 PumpStreamHandler the code will do: t.join(JOIN_TIMEOUT); while ((s == null || !s.isFinished()) && t.isAlive()) { t.join(JOIN_TIMEOUT); t.interrupt(); It is the t.interrupt() that causes the StreamPumper to "break" when it checks Thread.interrupted() even when the inputStream (is.available()) is still returning >0 characters. If I run with the following build.xml (on linux), the output is always truncated (each file should be the same - they are never the same): <project name="LS" default="ls" basedir="."> <description> LS ant build file </description> <target name="ls"> <parallel> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls.txt" error="ls.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls2.txt" error="ls2.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls3.txt" error="ls3.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls4.txt" error="ls4.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls5.txt" error="ls5.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls6.txt" error="ls6.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls7.txt" error="ls7.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls8.txt" error="ls8.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls9.txt" error="ls9.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls10.txt" error="ls10.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls12.txt" error="ls12.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls13.txt" error="ls13.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls14.txt" error="ls14.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls15.txt" error="ls15.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> <exec executable="ls" dir="${basedir}" failonerror="true" logerror="true"> <redirector output="./ls16.txt" error="ls16.err" alwayslog="true"/> <arg value="-l"/> <arg value="/usr/bin"/> </exec> </parallel> </target> </project> -- You are receiving this mail because: You are the assignee for the bug.
