From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kevin Ryde Newsgroups: gmane.lisp.guile.devel Subject: Re: 1.8 make check failing in popen.test Date: Fri, 25 Aug 2006 11:16:07 +1000 Message-ID: <87k64x8vjc.fsf@zip.com.au> References: <87vepora1r.fsf@raven.defaultvalue.org> <87y7tqo0po.fsf@raven.defaultvalue.org> <87r6zhlhhk.fsf@zip.com.au> <87ejvho4ve.fsf@raven.defaultvalue.org> <87mza4uurn.fsf@zip.com.au> <87bqqieohh.fsf@raven.defaultvalue.org> <87pset1wxr.fsf@zip.com.au> <87u045jzmz.fsf@raven.defaultvalue.org> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1156468634 4719 80.91.229.2 (25 Aug 2006 01:17:14 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 25 Aug 2006 01:17:14 +0000 (UTC) Cc: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Fri Aug 25 03:17:11 2006 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1GGQJe-0007I0-N2 for guile-devel@m.gmane.org; Fri, 25 Aug 2006 03:16:59 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GGQJd-00030P-SQ for guile-devel@m.gmane.org; Thu, 24 Aug 2006 21:16:57 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GGQJa-00030A-Iz for guile-devel@gnu.org; Thu, 24 Aug 2006 21:16:54 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GGQJY-0002zy-3J for guile-devel@gnu.org; Thu, 24 Aug 2006 21:16:53 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GGQJX-0002zv-VI for guile-devel@gnu.org; Thu, 24 Aug 2006 21:16:52 -0400 Original-Received: from [61.8.0.84] (helo=mailout1.pacific.net.au) by monty-python.gnu.org with esmtp (Exim 4.52) id 1GGQRi-0001aa-LC for guile-devel@gnu.org; Thu, 24 Aug 2006 21:25:18 -0400 Original-Received: from mailproxy2.pacific.net.au (mailproxy2.pacific.net.au [61.8.2.163]) by mailout1.pacific.net.au (Postfix) with ESMTP id 2AC815A1EEA; Fri, 25 Aug 2006 11:16:47 +1000 (EST) Original-Received: from localhost (ppp25C8.dyn.pacific.net.au [61.8.37.200]) by mailproxy2.pacific.net.au (8.13.4/8.13.4/Debian-3sarge1) with ESMTP id k7P1GKMx015880; Fri, 25 Aug 2006 11:16:37 +1000 Original-Received: from gg by localhost with local (Exim 3.36 #1 (Debian)) id 1GGQIp-0004fz-00; Fri, 25 Aug 2006 11:16:07 +1000 Original-To: Rob Browning Mail-Copies-To: never In-Reply-To: <87u045jzmz.fsf@raven.defaultvalue.org> (Rob Browning's message of "Mon, 21 Aug 2006 19:03:00 -0700") User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/21.4 (gnu/linux) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:6038 Archived-At: Rob Browning writes: > >>>From the output of ps auxf, it looks like the child is probably one of > these zombies. There are several zombie sh children: > > \_ [sh] > \_ [sh] > \_ [sh] > \_ [lt-guile] > \_ [lt-guile] Actually, I see the signalling pipe is left in the parent, so if the child has printed nothing it could hang. Obviously there's something wrong if the child doesn't print what's expected, but the change below should at least cause an error instead of a hang in that case. ;; After the child closes stdin (which it indicates here by writing ;; "closed" to stderr), the parent should see a broken pipe. We setup to ;; see this as EPIPE (rather than SIGPIPE). In Guile 1.6.4 and earlier a ;; duplicate of stdin existed in the child, preventing the broken pipe ;; occurring. (pass-if "no duplicate" (with-epipe (lambda () (let* ((pair (pipe)) (port (with-error-to-port (cdr pair) (lambda () (open-output-pipe "exec 0&2; exec 2>/dev/null; sleep 999"))))) (close-port (cdr pair)) ;; write side (and (char? (read-char (car pair))) ;; wait for child to do its thing (catch 'system-error (lambda () (write-char #\x port) (force-output port) #f) (lambda (key name fmt args errno-list) (= (car errno-list) EPIPE)))))))) _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel