Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: strange behavior
On 2011-01-28 07:49:15 -0800, Bart Schaefer wrote:
> I forget whether we covered this before, but does {svn "$@"} ever
> fork as part of its execution?
Yes (for SSH connection, and the ssh script can start a SSH master
connection, which will still run in background after svn terminates,
and that's why I needed the svnwrapper:term trick in my script).
> There has to be some kind of race condition here. 2>>(filter) runs
> filter in the background, so if something behind svn also runs as an
> separate process, it could be possible for the filter to exit and
> close it's stdin (thereby closing everything else's stdder) before
> operating-system-level exit-time buffer-flushing has finished.
Yes, this happens, but I don't see why this could make the script
terminate with a broken pipe. I recall the whole script:
filter()
{
unset brpipe
while true
do
unset line timeout
while read -r $timeout -k -u 0 ch
do
line="$line$ch"
[[ $ch = $'\012' ]] && break
timeout=(-t 0.1)
done
case $line in
svnwrapper:term$'\012')
break ;;
*Broken\ pipe$'\012') brpipe=1 ;;
?*) printf "%s" "$line" >&2 ;;
*) break ;; # empty line (end of file) - parent has died?
esac
done
# The "sleep 5" is there to avoid a rare race condition (it occurred
# once): make sure the parent process receives the PIPE signal before
# the filter process terminates (which can yield a SIGPIPE in svn).
[[ -z $brpipe ]] || { kill -PIPE $$; sleep 5 }
}
{ svn "$@"; st=$?; echo "svnwrapper:term" >&2 } 2>>(filter)
exit $st
Because of the "while true" loop, filter should still run after svn
terminates.
Note that when I obtained the "zsh: exit 141", the svn output wasn't
redirected, so that a "Broken pipe" message from svn was not possible.
> Hmm, another thought ... maybe the "zsh: exit 141" is coming from
> the shell's exit-time handling of the "filter" program, rather than
> from svn. I've lost enough context here that I don't recall whether
> that was previously ruled out too.
What do you mean here?
--
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)
Messages sorted by:
Reverse Date,
Date,
Thread,
Author