From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5386 invoked by alias); 5 Oct 2014 04:03:10 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 33354 Received: (qmail 23778 invoked from network); 5 Oct 2014 04:03:08 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 From: Bart Schaefer Message-id: <141004210320.ZM22343@torch.brasslantern.com> Date: Sat, 04 Oct 2014 21:03:20 -0700 In-reply-to: <141004140148.ZM7815@torch.brasslantern.com> Comments: In reply to Bart Schaefer "Re: piping question" (Oct 4, 2:01pm) References: <1412259225.3798.0@numa-i> <141003082330.ZM15100__40912.263657856$1412349949$gmane$org@torch.brasslantern.com> <87mw9bu94f.fsf@gmail.com> <141004111755.ZM7181@torch.brasslantern.com> <87iojztyzg.fsf@gmail.com> <141004140148.ZM7815@torch.brasslantern.com> X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: zsh-workers@zsh.org Subject: PATCH Re: piping question MIME-version: 1.0 Content-type: text/plain; charset=us-ascii On Oct 4, 2:01pm, Bart Schaefer wrote: } } For who may be interested, the parent zsh is holding open the file } descriptor that serves as the read end of the pipe. This happens only } if you backgrou[n]d the entire pipeline, e.g. } } cat /dev/zero | xmost & } } So I think we still have a few bugs along the lines of workers/32171 and } 32176 and perhaps 31919. This seems to take care of it. PWS, should I push before 5.0.7? diff --git a/Src/jobs.c b/Src/jobs.c index 83a4d96..bd95afb 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 8d256ff..ca97f4f 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