diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Src/jobs.c | 4 | ||||
-rw-r--r-- | Test/A05execution.ztst | 15 |
3 files changed, 24 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 5e5f3f268..f1fdbceac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2014-10-04 Barton E. Schaefer <schaefer@zsh.org> + + * 33354: Src/jobs.c, Test/A05execution.ztst: when backgrounding + a pipeline, close all pipe descriptors in the parent; add test + for both this and 33345+33346 + 2014-10-03 Bart Schaefer <schaefer@zsh.org> * 33346: Src/parse.c: another bit of the 33345 repair diff --git a/Src/jobs.c b/Src/jobs.c index 83a4d96a4..bd95afb7a 100644 --- a/Src/jobs.c +++ b/Src/jobs.c @@ -1627,8 +1627,10 @@ spawnjob(void) } if (!hasprocs(thisjob)) deletejob(jobtab + thisjob, 0); - else + else { jobtab[thisjob].stat |= STAT_LOCKED; + pipecleanfilelist(jobtab[thisjob].filelist); + } thisjob = -1; } diff --git a/Test/A05execution.ztst b/Test/A05execution.ztst index 8d256ff84..ca97f4f41 100644 --- a/Test/A05execution.ztst +++ b/Test/A05execution.ztst @@ -217,6 +217,21 @@ F:This similar test was triggering a reproducible failure with pipestatus. F:This test checks for a file descriptor leak that could cause the left F:side of a pipe to block on write after the right side has exited + { setopt MONITOR } 2>/dev/null + if [[ -o MONITOR ]] + then + ( while :; do print "This is a line"; done ) | () : & + sleep 1 + jobs -l + else + print -u $ZTST_fd "Skipping pipe leak test, requires MONITOR option" + print "[0] 0 0" + fi +0:Bug regression: piping to anonymous function; piping to backround function +*>\[<->\] <-> <-> +F:This test checks for two different bugs, a parser segfault piping to an +F:anonymous function, and a descriptor leak when backgrounding a pipeline + print "autoload_redir() { print Autoloaded ksh style; } >autoload.log" >autoload_redir autoload -Uk autoload_redir autoload_redir |