Noam Postavsky <npostavs@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.npostavs@HIDDEN
to control <at> debbugs.gnu.org
.
Full text available.Noam Postavsky <npostavs@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Received: (at submit) by debbugs.gnu.org; 1 Dec 2013 08:33:07 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 01 03:33:07 2013 Received: from localhost ([127.0.0.1]:52515 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1Vn2Sg-00076T-Fa for submit <at> debbugs.gnu.org; Sun, 01 Dec 2013 03:33:06 -0500 Received: from eggs.gnu.org ([208.118.235.92]:53530) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from <teika@HIDDEN>) id 1Vn2Sd-00075z-QA for submit <at> debbugs.gnu.org; Sun, 01 Dec 2013 03:33:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <teika@HIDDEN>) id 1Vn2SS-0001vA-6J for submit <at> debbugs.gnu.org; Sun, 01 Dec 2013 03:32:58 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:47556) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <teika@HIDDEN>) id 1Vn2SS-0001ux-2i for submit <at> debbugs.gnu.org; Sun, 01 Dec 2013 03:32:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55235) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <teika@HIDDEN>) id 1Vn2SM-0001YV-90 for bug-gnu-emacs@HIDDEN; Sun, 01 Dec 2013 03:32:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <teika@HIDDEN>) id 1Vn2SG-0001lx-I7 for bug-gnu-emacs@HIDDEN; Sun, 01 Dec 2013 03:32:46 -0500 Received: from mout.gmx.net ([212.227.17.21]:57931) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <teika@HIDDEN>) id 1Vn2SG-0001lY-7w for bug-gnu-emacs@HIDDEN; Sun, 01 Dec 2013 03:32:40 -0500 Received: from localhost ([123.222.72.213]) by mail.gmx.com (mrgmx003) with ESMTPSA (Nemesis) id 0MH0eg-1Vqq4V1nhC-00DrBV for <bug-gnu-emacs@HIDDEN>; Sun, 01 Dec 2013 09:32:38 +0100 Date: Sun, 01 Dec 2013 17:30:03 +0900 (JST) Message-Id: <20131201.173003.1027114851058206117.teika@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: Undocumented interaction with descendants of process created by Emacs (very annoying) From: Teika Kazura <teika@HIDDEN> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:djvjqUNTxVfOaGycv64SCY6u3h2enZo0o2ql1gIQh7hhO6LM5hy U4cbKjXtYSsCLrMHQhexBdvHuUXQlGOyEIGK3K1EVkOZvuzG2YsQHlf9dCeMAsOoXXadsc+ V2zShQXpzSYdoyGx67u/+W0Nqik1JhK9wgbjK2Vldf7CwbRiVatAEi7j0yUMjNg/atmxrbN SGXTnyO+T+pyBWNuWMCCA== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -4.1 (----) Hi, Emacs developers. Emacs interacts with the forks of a process created by Emacs, but in ways **not documented**, leading to unexpected, very annoying results. Both synchronous and async cases apply, but in different ways. * Environment: Gentoo Linux, Emacs 24.3, (at least since 24.1). * Description: (I only know, and can test Linux.) First, synchorous cases. Assume you create a process P with `call-process'. Then Emacs basically waits for the termination of all descendants, not only P. More precisely, it's until all descendants' stdout and stderr, attached to Emacs, get closed. (So probably Emacs waits for the closing of the pipes it opened for P.) Here, P's output BUFFER doesn't matter. Let's review the grammar: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) I mean, BUFFER (and INFILE) doesn't matter. Emacs waits even if they are nil. Test codes. First, "sync.sh": ------------------------------------------------------------------------ #!/bin/bash ( # This is inside of a fork sleep 2 ; exec 1>/dev/null sleep 1 ; exec 2>/dev/null sleep 4 exit ) & sleep 1 ------------------------------------------------------------------------ Run it with the following: (let ((now (cadr (current-time)))) (call-process "/path/to/sync.sh" nil nil nil) (message "elapesd %s secs" (- (cadr (current-time)) now)) ) P itself dies in 1 sec, but the "let" ends after 4 secs. Now, the asynchronous case. When an asynchronous process P, created by `start-process', terminates, all its descendants (perhaps all processes in the process group?) receive SIGHUP from Emacs. It is the default behavior, but if you set `process-connection-type' to nil, then P's subprocesses are not affected. For asynchronous cases, detaching stdout and stderr has no effect. Suggestions: * At least these should be documented, but you may like to modify the implementation. I don't know much about process and inter-process communication, and I can't say anything about it. * If my description applies to all platforms, then I can contribute a draft of info file and C-src docstrings. (My draft probably will need a review by experts, as I indicated above.) Or, I can help you by formatting your technically correct plain text doc to info. * (Not related the bug report itself) The names `call-process' and `start-process' are confusing, although you can remember them. I propose to change them to `start-sync-process' and `start-async-process'. (Ineviably their grammars differ, namely in INFILE and NAME. But it's also confusing that the argument positions of the path to the program differ. It's better to fix them too.) Thank you for reading, and developing Emacs. Best regards, Teika (Teika kazura)
Teika Kazura <teika@HIDDEN>
:bug-gnu-emacs@HIDDEN
.
Full text available.bug-gnu-emacs@HIDDEN
:bug#16019
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.