GNU bug report logs - #56002
src/process.c; make-process fails to clean up stderr process on early exit

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Tom Gillespie <tgbugs@HIDDEN>; dated Wed, 15 Jun 2022 22:39:01 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 9 Aug 2022 18:59:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Aug 09 14:59:39 2022
Received: from localhost ([127.0.0.1]:45033 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oLUS3-0003fR-6L
	for submit <at> debbugs.gnu.org; Tue, 09 Aug 2022 14:59:39 -0400
Received: from mail-pg1-f174.google.com ([209.85.215.174]:43570)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tgbugs@HIDDEN>) id 1oLUS1-0003fE-Bd
 for 56002 <at> debbugs.gnu.org; Tue, 09 Aug 2022 14:59:38 -0400
Received: by mail-pg1-f174.google.com with SMTP id h132so12183602pgc.10
 for <56002 <at> debbugs.gnu.org>; Tue, 09 Aug 2022 11:59:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc;
 bh=VlBvticDxxAWa9+GXorAJKq3ymfvJ5VFlNrNOl2RHIg=;
 b=eWe2fykxdkC/LsH9sLiN5Nd2BC61eHtzvwOq+cIn2wdmZ7Yo2lyt45s7rR4rfZw6s1
 b7Yq4EtcO3BMySjBRBFMsgnpxdgkroOdk5k+mUe3S9EGbXG2zCMpVxpU/5xtOG8zdkYF
 AI26cjJqYuuSJtQOI1MCKCVrVtlEzIC8QMpgY57EzJbBs7WlJlckmZJyj+S4Oy6b6OK1
 qD0ANo2YzSPx6+eKlAczl/nVSHdAQQBJMNZfXprFNQeHXbg+dlz8KNensVNYwcARP/WG
 znQe6+LY3Gn24dJ8OEAIR3pAt356i1ArkESvYv2OmuTvNm61cvH14VfxJbEnBOft7FMh
 rLdQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc;
 bh=VlBvticDxxAWa9+GXorAJKq3ymfvJ5VFlNrNOl2RHIg=;
 b=H+n2kJhM9fKqMNM/Rus59MG6tLoT4VwgLAMkDgCkZ0fA8Uzlx/RY+7Yp1VK6zbYlae
 hcts8hpiZrpUUY5qfAP91cqeidNP5Et+aXTw/HyA1+BCwZj+sb3fGVHQq6p0HwieU6FF
 n4YtftKdxbOjAwZmxTGRmLwsA73TV/197lyH+qEr15pOksKHRD+pZOLhT5ihLbjXipkq
 +z3W6IboVqXVMR0ao/Cj/NRW/T6iqqPICAXU8BLFyJQqlPnhV6WJ/HLPL9XQbB+7X2r0
 4Vch0JyV2VzktNyckJCur+w6kRBftcjRXoSKrNG9+59Fsne5UIyixsDEC5KLFzKVX4Rc
 NxhQ==
X-Gm-Message-State: ACgBeo29zsdFOJAESmrFpQVcCrXPfQBA2LtVleWQnuqKK1J7/QFTOKeo
 2/K+oMEvT6RTCZgz0cbspI9RvZzHz24IijjoQZ4=
X-Google-Smtp-Source: AA6agR7Ebyj/MkQK7ALT0kXk8gafTBXAR6B5+59nGT7qNIhItzRm8Ywi7nOOz9FaCAPLzo+z2bFE8V+eRy46R6OAN8s=
X-Received: by 2002:a05:6a00:e85:b0:52b:5db8:f3df with SMTP id
 bo5-20020a056a000e8500b0052b5db8f3dfmr24188429pfb.14.1660071571181; Tue, 09
 Aug 2022 11:59:31 -0700 (PDT)
MIME-Version: 1.0
References: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
 <83pmj9qjgk.fsf@HIDDEN>
 <CA+G3_PNnJ2akU9D2i3CGeYg=p56wzuy-gtzEGTk6kzmYrQyd6A@HIDDEN>
 <CA+G3_PPtJd9L+FWTPBkhKcs0fPAcTqRQzw54oG66fLHrC5mrsQ@HIDDEN>
 <CA+G3_POV0zB11TFLcYtvHuMSB5Oou8tW1v6K50qbhWrv5f=aPQ@HIDDEN>
 <8735e70xwl.fsf@HIDDEN> <831qtrvtg5.fsf@HIDDEN>
 <CA+G3_POmUnEozARB4WhLsM5esYOyQPKAKwPD7XxyZLRVWAZPCg@HIDDEN>
 <83czd9ve0n.fsf@HIDDEN>
In-Reply-To: <83czd9ve0n.fsf@HIDDEN>
From: Tom Gillespie <tgbugs@HIDDEN>
Date: Tue, 9 Aug 2022 11:59:19 -0700
Message-ID: <CA+G3_POSq2gxJO-M63DtkgmOkoZjsrY2jp6JA4G93+J37zjhxQ@HIDDEN>
Subject: Re: bug#56002: src/process.c; make-process fails to clean up stderr
 process on early exit
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 56002
Cc: larsi@HIDDEN, 56002 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -1.0 (-)

> This is a misunderstanding: I meant "recycled" as in
> "garbage-collected".  GC in Emacs is supposed to prevent leaks of
> memory and resources.  You seem to be saying that this somehow doesn't
> work in this case.  Can you explain why it doesn't work, and which
> resources specifically appear to be leaking?

Ah. It doesn't work because in this failure mode stderrproc is never gced
because it is still running and attached to a buffer. This is because it is in
a bad state where it cannot exit because it cannot receive a signal from
the non-existent primary process. See the example below where you will
be prompted to kill stderr-buffer after sleeping and gc.

#+begin_src bash
read -r -d '' example <<'EOF'
(progn
  (setq stderr-buffer (generate-new-buffer " rc stderr"))
  (condition-case nil
      (make-process
       :name "process that never actually starts"
       :stderr stderr-buffer
       :query-stderr t
       :command '("i_fail_before_there_can_be_a_return_code"))
    (error t))
  (message "%S" (get-buffer-process stderr-buffer))
  (sleep-for 1)
  (garbage-collect)
  (message "%S" (get-buffer-process stderr-buffer))
  (kill-buffer stderr-buffer))
EOF
emacs -Q -batch -eval "${example}"
#+end_src

> But we have code that errors out in the middle of processing all over
> the place, and that is safe in Emacs, because any unused Lisp objects
> will be GC'ed soon.  Why is this case special?

There are a few reasons why this is special.

0. An internally created stderrproc will never be gced if the parent process
   fails to be created for the reasons listed below.
1. A vfork failure or being passed a command that does not exist causes
   a make-process to fail in a way that a) leaves stderrproc attached to the
   stderr buffer and b) leaves stderrproc in a bad state where it cannot receive
   a signal from the primary process to exit because the primary process
   never makes it into existence
2. Once created, stderrproc is attached to a buffer and that buffer is
    not guaranteed to be gced if the caller e.g. passes in a buffer they
    want to persist.
3. Elisp code can and does interact with stderr buffers that have
    this zombie stderrproc as their buffer process.

> I meant the potential interactions that are not explicitly visible by
> reading the code, but instead stem from system-dependent stuff that is
> related to how subprocesses are created on different systems.

My reading of make-process is that it is impossible for callers in
the elisp universe to see an internally created stderrproc until after
create-process returns so implicit interactions on the elisp side
never happen.

On the C side there are already implicit interactions that exist
and can fail because the original code as written did not account
for them, such as failures during vfork or a command that does
not exist, and this patch prevents those.

To the best of my knowledge the point to which I moved the call
to create stderrproc minimize all possible implicit interactions.

It is a pipe process that nothing else cares about or depends on
until create_process gets stderrproc's stdout file descriptor and
passes it to emacs_spawn as fd_error.

> So I'd still be happier if we could deal with the problem without
> moving chunks of code around.

The alternative is to add code to clean up the stderrproc for any
possible failure during make-process after it has been created,
though I'm not sure that is actually possible.

It is vastly easier, requires much less code, and leaves no doubt
as to whether we missed a call that could fail, to simply move
the creation of stderrproc to a point after all those potential
failure conditions but before it is ever accessed or needed by
other parts of the system.

To quote my internal notes while debugging the issue:

>> there is literally no way to automatically clean up the stderr buffer
>> no matter what you do if there is an error during process creation

Of course the caller could add a call to get-buffer-process and kill the
thing, but there shouldn't even be a process attached to the stderr buffer
because the call to make-process failed.

Without this patch make-process is fundamentally broken and every
caller that wants to clean up the stderr buffer on error but also prompt
on exit would have to know about this issue and call get-buffer-process
on the stderr buffer and then kill that process manually because it is in
a bad state and will not terminate by itself. All this assuming that they
could even figure out what was happening and find this bug report.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 9 Aug 2022 11:43:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Aug 09 07:43:24 2022
Received: from localhost ([127.0.0.1]:42771 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oLNds-0002DX-23
	for submit <at> debbugs.gnu.org; Tue, 09 Aug 2022 07:43:24 -0400
Received: from eggs.gnu.org ([209.51.188.92]:53730)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1oLNdp-0002DJ-K9
 for 56002 <at> debbugs.gnu.org; Tue, 09 Aug 2022 07:43:22 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:37742)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1oLNdk-0006ez-6H; Tue, 09 Aug 2022 07:43:16 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=LSjtc+Tmt0pm2nG5npy/lZWQ0wUPY9ICUSq0N5FVuTU=; b=GPkSdLiEeRZC
 IQ0gZyIttYuta07U5BBIR4NuSElPhUXftrwMhnbUq2Ep+Gj3hADEkARcAkZG4SrK0Lgw5YG57WL/Y
 P3YKG68CLDwLOG2ti1N0C2iA0BZy8QhaNppWz72AsFYenq4VgWn3EwGxc+1SLRLJP4shNPAdyWJ0F
 OR8wenLYrhuuOxHx5ERnxJNeDJDFxnqzUgGSba8jdWYDLOvSrofw456OjggqZBsihmLjul3IVrDmw
 jJUmfu0yK5ZI1xJt3Mc/pk13II1t41R6rgyf+krInO0QOhQjn5Pj7acgPhWlQNKo7f4bkIMFq1R/+
 TLg5qyqCWXTeJOFWU9Xamg==;
Received: from [87.69.77.57] (port=3371 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1oLNdj-0008SM-Ja; Tue, 09 Aug 2022 07:43:15 -0400
Date: Tue, 09 Aug 2022 14:43:04 +0300
Message-Id: <83czd9ve0n.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Tom Gillespie <tgbugs@HIDDEN>
In-Reply-To: <CA+G3_POmUnEozARB4WhLsM5esYOyQPKAKwPD7XxyZLRVWAZPCg@HIDDEN>
 (message from Tom Gillespie on Mon, 8 Aug 2022 11:54:09 -0700)
Subject: Re: bug#56002: src/process.c; make-process fails to clean up stderr
 process on early exit
References: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
 <83pmj9qjgk.fsf@HIDDEN>
 <CA+G3_PNnJ2akU9D2i3CGeYg=p56wzuy-gtzEGTk6kzmYrQyd6A@HIDDEN>
 <CA+G3_PPtJd9L+FWTPBkhKcs0fPAcTqRQzw54oG66fLHrC5mrsQ@HIDDEN>
 <CA+G3_POV0zB11TFLcYtvHuMSB5Oou8tW1v6K50qbhWrv5f=aPQ@HIDDEN>
 <8735e70xwl.fsf@HIDDEN> <831qtrvtg5.fsf@HIDDEN>
 <CA+G3_POmUnEozARB4WhLsM5esYOyQPKAKwPD7XxyZLRVWAZPCg@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 56002
Cc: larsi@HIDDEN, 56002 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -3.3 (---)

> From: Tom Gillespie <tgbugs@HIDDEN>
> Date: Mon, 8 Aug 2022 11:54:09 -0700
> Cc: Lars Ingebrigtsen <larsi@HIDDEN>, 56002 <at> debbugs.gnu.org
> 
> > TBH, I don't understand the rationale well enough.  What does it mean
> > we "leak stderr process"? isn't the stderr process recycled if
> > make-process fails?
> 
> When the stderrproc is created internally there is no way that it can be
> reused because nothing else has a reference to it. The changes here only
> deal with cases where a stderrproc is not provided by the caller.

This is a misunderstanding: I meant "recycled" as in
"garbage-collected".  GC in Emacs is supposed to prevent leaks of
memory and resources.  You seem to be saying that this somehow doesn't
work in this case.  Can you explain why it doesn't work, and which
resources specifically appear to be leaking?

> > Is it just a matter of some simple change in the
> > control flow, to make sure we always go through the cleanup code
> > before we return?
> 
> There is no way easy way to modify the control flow because there are
> so many possible points where process creation can fail unexpectedly
> that must be handled if the stderrproc is created too early.

But we have code that errors out in the middle of processing all over
the place, and that is safe in Emacs, because any unused Lisp objects
will be GC'ed soon.  Why is this case special?

> It is very hard to determine exactly which statements inside of make
> process can produce unexpected exits, I have encountered at least
> two, but I'm sure there are others. Thus the safest thing to do was to
> move creation of stderrproc after all the points where process creation
> can potentially fail (e.g. failures during vfork).
> 
> > In general, I'd prefer not to change timing of what we do in
> > make-process unless it's really unavoidable.  There's a lot of
> > system-dependent stuff there, and who knows what will that cause on
> > some platform?
> 
> I'm fairly certain that it is impossible for there to be any interaction between
> the primary process and the stderr proc at any point in time prior to where
> I moved the creation of the stderrproc because the first reference to
> p->stderrproc after it is created is in create_process.

I meant the potential interactions that are not explicitly visible by
reading the code, but instead stem from system-dependent stuff that is
related to how subprocesses are created on different systems.

So I'd still be happier if we could deal with the problem without
moving chunks of code around.

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 8 Aug 2022 18:54:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 08 14:54:30 2022
Received: from localhost ([127.0.0.1]:41994 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oL7tW-0004jD-2V
	for submit <at> debbugs.gnu.org; Mon, 08 Aug 2022 14:54:30 -0400
Received: from mail-pg1-f181.google.com ([209.85.215.181]:34408)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tgbugs@HIDDEN>) id 1oL7tS-0004iy-G7
 for 56002 <at> debbugs.gnu.org; Mon, 08 Aug 2022 14:54:29 -0400
Received: by mail-pg1-f181.google.com with SMTP id 12so9378603pga.1
 for <56002 <at> debbugs.gnu.org>; Mon, 08 Aug 2022 11:54:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc;
 bh=YsBvHrrVS4e8EHzh8u89N0Zvi5n8j/VHNj9RP/AVLD0=;
 b=iXBBHqo492C4sr6CD91h/yRKpV59KrORRcnRuiLCD/jxNTsCaGMxL1Nx+cCDI9JXUz
 w9fnKSBnHyvSJKVmSz4mTXXpr7JW/nDog17bE0LNlOaV8gAUcT7BPZzwtq/YFQplwRe2
 BdSqTnYp0/MkjuslCzLX7bbGAIj3+bVwRJSJcGdQHpxaqdaBD9u2xkr3kudym0uhBPDl
 DOGO6SuM02sqTvuApqIEXlH83sE5C0z5bSKyRcwUcMTcvvt7e8IXNopdQxUD/GL78/6T
 eXzFTWOK9QXlJQrlqsztOIFB2cL7mkUFVTaU0zM+T8PXo+bJcPblLVeD5btWDxsWAwOX
 fx6Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc;
 bh=YsBvHrrVS4e8EHzh8u89N0Zvi5n8j/VHNj9RP/AVLD0=;
 b=6C0w2/5sJ6GAknd9FwwrvK4qzxc7c0wZ8oJgup4HPYSD0W8IOpnwsaAMywBasoABCU
 OXHmWeT0v9dN+dlj6KPwLKz4BNXk6RvWnv85yCEwbcadQ+/CZvhgA+W1eH9ows1weqYx
 6SKyw5qULYyoA6VD08h1r7GraVauk3f7yoTmUHLmkLNMyxzqDQawrXt4TZDWopNHstFY
 QDqpXX+a8g5WakmcgELEM2A3jE43RNuEDI07b3ENxFy9Mn0A6r6sIhDttXAk+Tz46Ghi
 GJO357cVG4ssZnok2KB+YTpIGLACDQ0bLepTYfMWqFYZSL2FxjbUQO1xCqdHtr6diCBv
 ztQQ==
X-Gm-Message-State: ACgBeo0QHhKOSwRFXqow6NesppyKBif9JpP4x64l5JLBiY1QaLSPRX64
 6Xy3vw5ZWFyao0QSA90EMehZspPpq/SX/50/yQw=
X-Google-Smtp-Source: AA6agR60Ou3IkvXBmqPrfrR9eB4UVigrMNmwGyFIKcTqr6nMUJDpL5CcnmZ9NUeUxeT5KaSKhxjHY4L2p/TRNIwGTA4=
X-Received: by 2002:a62:3086:0:b0:52b:fd6c:a49d with SMTP id
 w128-20020a623086000000b0052bfd6ca49dmr19285464pfw.26.1659984860524; Mon, 08
 Aug 2022 11:54:20 -0700 (PDT)
MIME-Version: 1.0
References: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
 <83pmj9qjgk.fsf@HIDDEN>
 <CA+G3_PNnJ2akU9D2i3CGeYg=p56wzuy-gtzEGTk6kzmYrQyd6A@HIDDEN>
 <CA+G3_PPtJd9L+FWTPBkhKcs0fPAcTqRQzw54oG66fLHrC5mrsQ@HIDDEN>
 <CA+G3_POV0zB11TFLcYtvHuMSB5Oou8tW1v6K50qbhWrv5f=aPQ@HIDDEN>
 <8735e70xwl.fsf@HIDDEN> <831qtrvtg5.fsf@HIDDEN>
In-Reply-To: <831qtrvtg5.fsf@HIDDEN>
From: Tom Gillespie <tgbugs@HIDDEN>
Date: Mon, 8 Aug 2022 11:54:09 -0700
Message-ID: <CA+G3_POmUnEozARB4WhLsM5esYOyQPKAKwPD7XxyZLRVWAZPCg@HIDDEN>
Subject: Re: bug#56002: src/process.c; make-process fails to clean up stderr
 process on early exit
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 56002
Cc: Lars Ingebrigtsen <larsi@HIDDEN>, 56002 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -1.0 (-)

> TBH, I don't understand the rationale well enough.  What does it mean
> we "leak stderr process"? isn't the stderr process recycled if
> make-process fails?

When the stderrproc is created internally there is no way that it can be
reused because nothing else has a reference to it. The changes here only
deal with cases where a stderrproc is not provided by the caller.

> Is it just a matter of some simple change in the
> control flow, to make sure we always go through the cleanup code
> before we return?

There is no way easy way to modify the control flow because there are
so many possible points where process creation can fail unexpectedly
that must be handled if the stderrproc is created too early.

It is very hard to determine exactly which statements inside of make
process can produce unexpected exits, I have encountered at least
two, but I'm sure there are others. Thus the safest thing to do was to
move creation of stderrproc after all the points where process creation
can potentially fail (e.g. failures during vfork).

> In general, I'd prefer not to change timing of what we do in
> make-process unless it's really unavoidable.  There's a lot of
> system-dependent stuff there, and who knows what will that cause on
> some platform?

I'm fairly certain that it is impossible for there to be any interaction between
the primary process and the stderr proc at any point in time prior to where
I moved the creation of the stderrproc because the first reference to
p->stderrproc after it is created is in create_process.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 8 Aug 2022 11:57:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 08 07:57:56 2022
Received: from localhost ([127.0.0.1]:39388 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oL1OO-0005jB-3r
	for submit <at> debbugs.gnu.org; Mon, 08 Aug 2022 07:57:56 -0400
Received: from eggs.gnu.org ([209.51.188.92]:55928)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1oL1OJ-0005iv-NG
 for 56002 <at> debbugs.gnu.org; Mon, 08 Aug 2022 07:57:54 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:43694)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1oL1OE-000855-Cb; Mon, 08 Aug 2022 07:57:46 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Co23mkXUQwijPVVm7mpHo443ijYsEVlseD2KEJgeJQk=; b=iUWoQG3xAwIb
 SCZcYeaq4oiL3L5zWoSn89u/UePldxIj9YncWFpeVR4fiLH9K63+7I3W3MMFev4DOmm2CPUdapNFc
 n7PKP27j9BmeB/54IisOSdD9Uk5Ilnfsm1EmAA7vLBS6PF5rbFXXHbO5Hf7akPJJ5Wiug5KXe4SEL
 2AWg1xngI14kmUlyLow8NAIZrQfIvv4VZUxSpao31lrk65JLzbHG5Bj/AHpssTHTFgnbGUWbRoFaU
 F1wqlOL3gJBgTadVDzZ8w92+fIQRrkbWoC2jcd1J9FygMIH89pN0OrRp6DHbaAf2zgJBBVLH6oeqs
 yP+j0fm5xX0zoGs56dWIBA==;
Received: from [87.69.77.57] (port=2917 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1oL1OB-0001t7-QI; Mon, 08 Aug 2022 07:57:46 -0400
Date: Mon, 08 Aug 2022 14:57:30 +0300
Message-Id: <831qtrvtg5.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Lars Ingebrigtsen <larsi@HIDDEN>
In-Reply-To: <8735e70xwl.fsf@HIDDEN> (message from Lars Ingebrigtsen on Mon, 
 08 Aug 2022 13:36:58 +0200)
Subject: Re: bug#56002: src/process.c; make-process fails to clean up stderr
 process on early exit
References: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
 <83pmj9qjgk.fsf@HIDDEN>
 <CA+G3_PNnJ2akU9D2i3CGeYg=p56wzuy-gtzEGTk6kzmYrQyd6A@HIDDEN>
 <CA+G3_PPtJd9L+FWTPBkhKcs0fPAcTqRQzw54oG66fLHrC5mrsQ@HIDDEN>
 <CA+G3_POV0zB11TFLcYtvHuMSB5Oou8tW1v6K50qbhWrv5f=aPQ@HIDDEN>
 <8735e70xwl.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 56002
Cc: tgbugs@HIDDEN, 56002 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>,  56002 <at> debbugs.gnu.org
> Date: Mon, 08 Aug 2022 13:36:58 +0200
> 
> Tom Gillespie <tgbugs@HIDDEN> writes:
> 
> > * src/process.c (Fmake_process): Move the call to create the stderr
> > process as late as possible to avoid having to clean up stderrproc in
> > the event of an error prior to the call to create_process. This change
> > is needed to ensure that when called with :query-stderr t (aka the
> > default behavior prior to the addition of :query-stderr) make-process
> > will not leak the stderr process if a call to make-process fails.
> > Also adds a new keyword argument :query-stderr to control whether to
> > query on exit the stderr process (if one is created). (bug#56002)
> 
> I think this makes sense...  Eli, any comments?

TBH, I don't understand the rationale well enough.  What does it mean
we "leak stderr process"? isn't the stderr process recycled if
make-process fails?  Is it just a matter of some simple change in the
control flow, to make sure we always go through the cleanup code
before we return?

In general, I'd prefer not to change timing of what we do in
make-process unless it's really unavoidable.  There's a lot of
system-dependent stuff there, and who knows what will that cause on
some platform?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 8 Aug 2022 11:37:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 08 07:37:10 2022
Received: from localhost ([127.0.0.1]:39370 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oL14I-0005Bm-4a
	for submit <at> debbugs.gnu.org; Mon, 08 Aug 2022 07:37:10 -0400
Received: from quimby.gnus.org ([95.216.78.240]:39136)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1oL14G-0005Ba-Fq
 for 56002 <at> debbugs.gnu.org; Mon, 08 Aug 2022 07:37:08 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References:
 In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=70VI/9wFARy8je6sxz9cEFO1uGXl+pA0tPmqPshS7fA=; b=c4+2fp3JVMUrI0GiBrdcFg9WZ9
 JyTY4dR2S4Yt2FaCaCb9wBDyLmk83LwL1fp6n7QYW6P/0PZHhGSVQHSa2OCLZ8+QjlXrxkKedShrr
 k7X8WMuKsLDevt2AMogmeYwuKKJcrZKs8+JiLJAXPF4GklrglJ7WHlDES0ED5eIQ78lw=;
Received: from [84.212.220.105] (helo=joga)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1oL147-00005h-GZ; Mon, 08 Aug 2022 13:37:01 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Tom Gillespie <tgbugs@HIDDEN>
Subject: Re: bug#56002: src/process.c; make-process fails to clean up stderr
 process on early exit
In-Reply-To: <CA+G3_POV0zB11TFLcYtvHuMSB5Oou8tW1v6K50qbhWrv5f=aPQ@HIDDEN>
 (Tom Gillespie's message of "Sun, 7 Aug 2022 16:48:44 -0700")
References: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
 <83pmj9qjgk.fsf@HIDDEN>
 <CA+G3_PNnJ2akU9D2i3CGeYg=p56wzuy-gtzEGTk6kzmYrQyd6A@HIDDEN>
 <CA+G3_PPtJd9L+FWTPBkhKcs0fPAcTqRQzw54oG66fLHrC5mrsQ@HIDDEN>
 <CA+G3_POV0zB11TFLcYtvHuMSB5Oou8tW1v6K50qbhWrv5f=aPQ@HIDDEN>
X-Now-Playing: Dzyan's _Deutsche Elektronische Music 4 (2)_: "Dragonsong"
Date: Mon, 08 Aug 2022 13:36:58 +0200
Message-ID: <8735e70xwl.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Tom Gillespie <tgbugs@HIDDEN> writes: > * src/process.c
 (Fmake_process): Move the call to create the stderr > process as late as
 possible to avoid having to clean up stderrproc in > the event of an error
 prior to the call to create_proces [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 56002
Cc: Eli Zaretskii <eliz@HIDDEN>, 56002 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -3.3 (---)

Tom Gillespie <tgbugs@HIDDEN> writes:

> * src/process.c (Fmake_process): Move the call to create the stderr
> process as late as possible to avoid having to clean up stderrproc in
> the event of an error prior to the call to create_process. This change
> is needed to ensure that when called with :query-stderr t (aka the
> default behavior prior to the addition of :query-stderr) make-process
> will not leak the stderr process if a call to make-process fails.
> Also adds a new keyword argument :query-stderr to control whether to
> query on exit the stderr process (if one is created). (bug#56002)

I think this makes sense...  Eli, any comments?





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 7 Aug 2022 23:49:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Aug 07 19:49:07 2022
Received: from localhost ([127.0.0.1]:38558 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oKq15-0001Hs-3E
	for submit <at> debbugs.gnu.org; Sun, 07 Aug 2022 19:49:07 -0400
Received: from mail-pj1-f50.google.com ([209.85.216.50]:37407)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tgbugs@HIDDEN>) id 1oKq11-0001HM-1S
 for 56002 <at> debbugs.gnu.org; Sun, 07 Aug 2022 19:49:05 -0400
Received: by mail-pj1-f50.google.com with SMTP id
 w11-20020a17090a380b00b001f73f75a1feso2107588pjb.2
 for <56002 <at> debbugs.gnu.org>; Sun, 07 Aug 2022 16:49:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc;
 bh=wBJWB+jVLf+Sf/a7Ga4Z6PgH1SJgcBiI6KpxYvOdKCQ=;
 b=LcC1+w8bzZmyXNAm08JP11mjupeeQLEjLB2kGQ54telZc5uDMmK7C8okF0ieLsv3s0
 /dJDKyZgyucjDiYyL8NEP2TXZJ180oN2DcWIZDnyv/Xq/rH+qZ/otcQ8Pgdnpc0Oqvi0
 pI3ZQBR0CfCD/NtPdCOQTrQmVBvPI2eGNG4GSTrfHR+ZHrPi9SIJKM5g1nESRODqPaMq
 laRnqEfrIJPKTfN1oDBFoXCz9I8VZBaJ6i2dBhLNZp4VWr+mnTRSkrbZKwV+nIm9ioFU
 303uTOClD0CbNl1CvyHUVqcJmONpxU2JVtGbWVMiW546A5pT9hm/b34dWuBe1QFVCO/t
 yyAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc;
 bh=wBJWB+jVLf+Sf/a7Ga4Z6PgH1SJgcBiI6KpxYvOdKCQ=;
 b=NFlqgWyJfwFeBkgK+M7Ikg4MyjdflIH4nwl1lSk1IF13coMgPyIABhk4pcI3lSj2g0
 ZBU6qgLbjv+Do5FoWAiOYee/kvBct3gf31RVfYRoSLKHTcC/C1RoJ1tV6lE+YSb6YYf9
 Jhq5s97vZ79CblIEfU3R6jS1f6IxlTLJABZTUtIfTFOkgjBbm0KWlVQTdM58UcmWHvJg
 HuAd9lJMA908EwASPOVtA85kyEwLP2aIfQx24EN7PXUpDwdSBubvmC0TzyGzWlplglrV
 EVhFCCr4dD8n4CWnxgn7qpfnneA25HqnwAVKUIMSLQwn60J7J0BY4kXCjpRR4nhcevxg
 c85w==
X-Gm-Message-State: ACgBeo2St2sg4QyN5Yz2DVCrRrCfw7uZx/rSzLRK498qNc2A0iIlvC4O
 GZWHsjrC1mjOv0iWgvnCza/9+RWCaduert0z398=
X-Google-Smtp-Source: AA6agR43ydRuaSG1uH9IpuuoGKd1oVTHxTosevgycjx3oaLExzUEY5m62/nryg5CdAspbGBTP8WSAsu2AGZWPw4xDpc=
X-Received: by 2002:a17:903:2c6:b0:16d:d2c2:9939 with SMTP id
 s6-20020a17090302c600b0016dd2c29939mr16364765plk.42.1659916136887; Sun, 07
 Aug 2022 16:48:56 -0700 (PDT)
MIME-Version: 1.0
References: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
 <83pmj9qjgk.fsf@HIDDEN>
 <CA+G3_PNnJ2akU9D2i3CGeYg=p56wzuy-gtzEGTk6kzmYrQyd6A@HIDDEN>
 <CA+G3_PPtJd9L+FWTPBkhKcs0fPAcTqRQzw54oG66fLHrC5mrsQ@HIDDEN>
In-Reply-To: <CA+G3_PPtJd9L+FWTPBkhKcs0fPAcTqRQzw54oG66fLHrC5mrsQ@HIDDEN>
From: Tom Gillespie <tgbugs@HIDDEN>
Date: Sun, 7 Aug 2022 16:48:44 -0700
Message-ID: <CA+G3_POV0zB11TFLcYtvHuMSB5Oou8tW1v6K50qbhWrv5f=aPQ@HIDDEN>
Subject: Re: bug#56002: src/process.c; make-process fails to clean up stderr
 process on early exit
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/mixed; boundary="000000000000b27eab05e5af57ca"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 56002
Cc: 56002 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -1.0 (-)

--000000000000b27eab05e5af57ca
Content-Type: text/plain; charset="UTF-8"

Here is an update to the 0002 patch to account for recent changes.

--000000000000b27eab05e5af57ca
Content-Type: text/x-patch; charset="US-ASCII"; 
	name="0002-make-process-stderrproc-cleanup-on-failure-decouple-v2.patch"
Content-Disposition: attachment; 
	filename="0002-make-process-stderrproc-cleanup-on-failure-decouple-v2.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_l6jz76050>
X-Attachment-Id: f_l6jz76050

RnJvbSBmODgzMDA0NTE4N2QyOGM5MGVlNjE2N2VhZmM3OWEwMDE5YzQxYWI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gR2lsbGVzcGllIDx0Z2J1Z3NAZ21haWwuY29tPgpEYXRl
OiBTdW4sIDcgQXVnIDIwMjIgMTY6NDM6MTMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBtYWtlLXBy
b2Nlc3Mgc3RkZXJycHJvYyBjbGVhbnVwIG9uIGZhaWx1cmUgZGVjb3VwbGUgc3RkZXJyCiBxdWVy
eQoKKiBzcmMvcHJvY2Vzcy5jIChGbWFrZV9wcm9jZXNzKTogTW92ZSB0aGUgY2FsbCB0byBjcmVh
dGUgdGhlIHN0ZGVycgpwcm9jZXNzIGFzIGxhdGUgYXMgcG9zc2libGUgdG8gYXZvaWQgaGF2aW5n
IHRvIGNsZWFuIHVwIHN0ZGVycnByb2MgaW4KdGhlIGV2ZW50IG9mIGFuIGVycm9yIHByaW9yIHRv
IHRoZSBjYWxsIHRvIGNyZWF0ZV9wcm9jZXNzLiBUaGlzIGNoYW5nZQppcyBuZWVkZWQgdG8gZW5z
dXJlIHRoYXQgd2hlbiBjYWxsZWQgd2l0aCA6cXVlcnktc3RkZXJyIHQgKGFrYSB0aGUKZGVmYXVs
dCBiZWhhdmlvciBwcmlvciB0byB0aGUgYWRkaXRpb24gb2YgOnF1ZXJ5LXN0ZGVycikgbWFrZS1w
cm9jZXNzCndpbGwgbm90IGxlYWsgdGhlIHN0ZGVyciBwcm9jZXNzIGlmIGEgY2FsbCB0byBtYWtl
LXByb2Nlc3MgZmFpbHMuCkFsc28gYWRkcyBhIG5ldyBrZXl3b3JkIGFyZ3VtZW50IDpxdWVyeS1z
dGRlcnIgdG8gY29udHJvbCB3aGV0aGVyIHRvCnF1ZXJ5IG9uIGV4aXQgdGhlIHN0ZGVyciBwcm9j
ZXNzIChpZiBvbmUgaXMgY3JlYXRlZCkuIChidWcjNTYwMDIpCgpOb3cgd2l0aCBjaGFuZ2VzIHRv
IGFjY291bnQgZm9yIGludGVydmVuaW5nIGNoYW5nZXMgdG8gcHR5IGNvZGUuCi0tLQogc3JjL3By
b2Nlc3MuYyB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t
LQogMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL3NyYy9wcm9jZXNzLmMgYi9zcmMvcHJvY2Vzcy5jCmluZGV4IDIzNDc5YzA2MTku
LjExZjg1YzVkMWQgMTAwNjQ0Ci0tLSBhL3NyYy9wcm9jZXNzLmMKKysrIGIvc3JjL3Byb2Nlc3Mu
YwpAQCAtMTc2Miw2ICsxNzYyLDExIEBAIERFRlVOICgibWFrZS1wcm9jZXNzIiwgRm1ha2VfcHJv
Y2VzcywgU21ha2VfcHJvY2VzcywgMCwgTUFOWSwgMCwKIDpub3F1ZXJ5IEJPT0wgLS0gV2hlbiBl
eGl0aW5nIEVtYWNzLCBxdWVyeSB0aGUgdXNlciBpZiBCT09MIGlzIG5pbCBhbmQKIHRoZSBwcm9j
ZXNzIGlzIHJ1bm5pbmcuICBJZiBCT09MIGlzIG5vdCBnaXZlbiwgcXVlcnkgYmVmb3JlIGV4aXRp
bmcuCiAKKzpxdWVyeS1zdGRlcnIgQk9PTCAtLSBXaGVuIGV4aXRpbmcgRW1hY3MsIHF1ZXJ5IHRo
ZSB1c2VyIGlmIEJPT0wgaXMKK25vbi1uaWwgYW5kIHRoZSBzdGRlcnIgcHJvY2VzcyBpcyBydW5u
aW5nLiBJZiBCT09MIGlzIG5vdCBnaXZlbiwgZG8KK25vdCBxdWVyeSBiZWZvcmUgZXhpdGluZy4g
VGhpcyBoYXMgbm8gZWZmZWN0IGlmIHRoZSB2YWx1ZSBwYXNzZWQgdG8KKzpzdGRlcnIgaXMgYSBw
cm9jZXNzLgorCiA6c3RvcCBCT09MIC0tIEJPT0wgbXVzdCBiZSBuaWwuICBUaGUgYDpzdG9wJyBr
ZXkgaXMgaWdub3JlZCBvdGhlcndpc2UKIGFuZCBpcyByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0
eSB3aXRoIG90aGVyIHByb2Nlc3MgdHlwZXMgc3VjaCBhcwogcGlwZSBwcm9jZXNzZXMuICBBc3lu
Y2hyb25vdXMgc3VicHJvY2Vzc2VzIG5ldmVyIHN0YXJ0IGluIHRoZQpAQCAtMTgzNyw4ICsxODQy
LDYgQEAgREVGVU4gKCJtYWtlLXByb2Nlc3MiLCBGbWFrZV9wcm9jZXNzLCBTbWFrZV9wcm9jZXNz
LCAwLCBNQU5ZLCAwLAogICBpZiAoIU5JTFAgKHByb2dyYW0pKQogICAgIENIRUNLX1NUUklORyAo
cHJvZ3JhbSk7CiAKLSAgYm9vbCBxdWVyeV9vbl9leGl0ID0gTklMUCAocGxpc3RfZ2V0IChjb250
YWN0LCBRQ25vcXVlcnkpKTsKLQogICBzdGRlcnJwcm9jID0gUW5pbDsKICAgeHN0ZGVyciA9IHBs
aXN0X2dldCAoY29udGFjdCwgUUNzdGRlcnIpOwogICBpZiAoUFJPQ0VTU1AgKHhzdGRlcnIpKQpA
QCAtMTg0OCwxNiArMTg1MSw3IEBAIERFRlVOICgibWFrZS1wcm9jZXNzIiwgRm1ha2VfcHJvY2Vz
cywgU21ha2VfcHJvY2VzcywgMCwgTUFOWSwgMCwKICAgICAgIHN0ZGVycnByb2MgPSB4c3RkZXJy
OwogICAgIH0KICAgZWxzZSBpZiAoIU5JTFAgKHhzdGRlcnIpKQotICAgIHsKLSAgICAgIENIRUNL
X1NUUklORyAocHJvZ3JhbSk7Ci0gICAgICBzdGRlcnJwcm9jID0gQ0FMTE4gKEZtYWtlX3BpcGVf
cHJvY2VzcywKLQkJCSAgUUNuYW1lLAotCQkJICBjb25jYXQyIChuYW1lLCBidWlsZF9zdHJpbmcg
KCIgc3RkZXJyIikpLAotCQkJICBRQ2J1ZmZlciwKLQkJCSAgRmdldF9idWZmZXJfY3JlYXRlICh4
c3RkZXJyLCBRbmlsKSwKLQkJCSAgUUNub3F1ZXJ5LAotCQkJICBxdWVyeV9vbl9leGl0ID8gUW5p
bCA6IFF0KTsKLSAgICB9CisgICAgQ0hFQ0tfU1RSSU5HIChwcm9ncmFtKTsKIAogICBwcm9jID0g
bWFrZV9wcm9jZXNzIChuYW1lKTsKICAgcmVjb3JkX3Vud2luZF9wcm90ZWN0IChzdGFydF9wcm9j
ZXNzX3Vud2luZCwgcHJvYyk7CkBAIC0xODcwLDcgKzE4NjQsNyBAQCBERUZVTiAoIm1ha2UtcHJv
Y2VzcyIsIEZtYWtlX3Byb2Nlc3MsIFNtYWtlX3Byb2Nlc3MsIDAsIE1BTlksIDAsCiAgIHBzZXRf
ZmlsdGVyIChYUFJPQ0VTUyAocHJvYyksIHBsaXN0X2dldCAoY29udGFjdCwgUUNmaWx0ZXIpKTsK
ICAgcHNldF9jb21tYW5kIChYUFJPQ0VTUyAocHJvYyksIEZjb3B5X3NlcXVlbmNlIChjb21tYW5k
KSk7CiAKLSAgaWYgKCFxdWVyeV9vbl9leGl0KQorICBpZiAoIU5JTFAgKHBsaXN0X2dldCAoY29u
dGFjdCwgUUNub3F1ZXJ5KSkpCiAgICAgWFBST0NFU1MgKHByb2MpLT5raWxsX3dpdGhvdXRfcXVl
cnkgPSAxOwogICB0ZW0gPSBwbGlzdF9nZXQgKGNvbnRhY3QsIFFDc3RvcCk7CiAgIC8qIE5vcm1h
bCBwcm9jZXNzZXMgY2FuJ3QgYmUgc3RhcnRlZCBpbiBhIHN0b3BwZWQgc3RhdGUsIHNlZQpAQCAt
MTg4OSw5ICsxODgzLDYgQEAgREVGVU4gKCJtYWtlLXByb2Nlc3MiLCBGbWFrZV9wcm9jZXNzLCBT
bWFrZV9wcm9jZXNzLCAwLCBNQU5ZLCAwLAogCWlzX3B0eV9mcm9tX3N5bWJvbCAodGVtKTsKICAg
ICB9CiAKLSAgaWYgKCFOSUxQIChzdGRlcnJwcm9jKSkKLSAgICBwc2V0X3N0ZGVycnByb2MgKFhQ
Uk9DRVNTIChwcm9jKSwgc3RkZXJycHJvYyk7Ci0KICNpZmRlZiBIQVZFX0dOVVRMUwogICAvKiBB
S0EgR05VVExTX0lOSVRTVEFHRShwcm9jKS4gICovCiAgIHZlcmlmeSAoR05VVExTX1NUQUdFX0VN
UFRZID09IDApOwpAQCAtMjA1NywxMCArMjA0OCwyOSBAQCBERUZVTiAoIm1ha2UtcHJvY2VzcyIs
IEZtYWtlX3Byb2Nlc3MsIFNtYWtlX3Byb2Nlc3MsIDAsIE1BTlksIDAsCiAJICB0ZW0gPSBYQ0RS
ICh0ZW0pOwogCX0KIAorICAgICAgaWYgKCFQUk9DRVNTUCAoeHN0ZGVycikgJiYgIU5JTFAgKHhz
dGRlcnIpKQorCXsKKwkgIHN0ZGVycnByb2MgPSBDQUxMTiAoRm1ha2VfcGlwZV9wcm9jZXNzLAor
CQkJICAgICAgUUNuYW1lLAorCQkJICAgICAgY29uY2F0MiAobmFtZSwgYnVpbGRfc3RyaW5nICgi
IHN0ZGVyciIpKSwKKwkJCSAgICAgIFFDYnVmZmVyLAorCQkJICAgICAgRmdldF9idWZmZXJfY3Jl
YXRlICh4c3RkZXJyLCBRbmlsKSwKKwkJCSAgICAgIFFDbm9xdWVyeSwKKwkJCSAgICAgIE5JTFAg
KHBsaXN0X2dldCAoY29udGFjdCwgUUNxdWVyeV9zdGRlcnIpKSA/IFF0IDogUW5pbCk7CisJfQor
CisgICAgICBpZiAoIU5JTFAgKHN0ZGVycnByb2MpKQorCXBzZXRfc3RkZXJycHJvYyAoWFBST0NF
U1MgKHByb2MpLCBzdGRlcnJwcm9jKTsKKwogICAgICAgY3JlYXRlX3Byb2Nlc3MgKHByb2MsIG5l
d19hcmd2LCBjdXJyZW50X2Rpcik7CiAgICAgfQogICBlbHNlCi0gICAgY3JlYXRlX3B0eSAocHJv
Yyk7CisgICAgeworICAgICAgaWYgKCFOSUxQIChzdGRlcnJwcm9jKSkKKwlwc2V0X3N0ZGVycnBy
b2MgKFhQUk9DRVNTIChwcm9jKSwgc3RkZXJycHJvYyk7CisKKyAgICAgIGNyZWF0ZV9wdHkgKHBy
b2MpOworICAgIH0KIAogICByZXR1cm4gU0FGRV9GUkVFX1VOQklORF9UTyAoY291bnQsIHByb2Mp
OwogfQpAQCAtODYwOSw2ICs4NjE5LDcgQEAgc3ltc19vZl9wcm9jZXNzICh2b2lkKQogICBERUZT
WU0gKFFuc21fdmVyaWZ5X2Nvbm5lY3Rpb24sICJuc20tdmVyaWZ5LWNvbm5lY3Rpb24iKTsKICAg
REVGU1lNIChRQ2xvZywgIjpsb2ciKTsKICAgREVGU1lNIChRQ25vcXVlcnksICI6bm9xdWVyeSIp
OworICBERUZTWU0gKFFDcXVlcnlfc3RkZXJyLCAiOnF1ZXJ5LXN0ZGVyciIpOwogICBERUZTWU0g
KFFDc3RvcCwgIjpzdG9wIik7CiAgIERFRlNZTSAoUUNwbGlzdCwgIjpwbGlzdCIpOwogICBERUZT
WU0gKFFDY29tbWFuZCwgIjpjb21tYW5kIik7Ci0tIAoyLjM1LjEKCg==
--000000000000b27eab05e5af57ca--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 29 Jun 2022 21:18:03 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 29 17:18:03 2022
Received: from localhost ([127.0.0.1]:60357 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o6f4U-0005vo-CT
	for submit <at> debbugs.gnu.org; Wed, 29 Jun 2022 17:18:02 -0400
Received: from mail-io1-f47.google.com ([209.85.166.47]:38877)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tgbugs@HIDDEN>) id 1o6f4R-0005vH-AP
 for 56002 <at> debbugs.gnu.org; Wed, 29 Jun 2022 17:18:01 -0400
Received: by mail-io1-f47.google.com with SMTP id k15so17282834iok.5
 for <56002 <at> debbugs.gnu.org>; Wed, 29 Jun 2022 14:17:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=H9P6OnouvejPPK+jXDx9t1rgGFLTLciQ/+xdGW1VtP0=;
 b=pzxjD3wMKRXxmcUx4AMIo1T1rUxhG8gzC5kQDrTw7O5cCxn0DkDAzmYaxbNxVICtOp
 IzvV/bDGaysDGvQ1J4p31nLVMVgMobTYH18Q+dIElngltDYb4omrFWUQADAONSCFC4NB
 8JdZJoUCxcrRvwkl0+v9UaCTgLoOEAd9bhqCrwlcenmvdl0ODEFTom8aPKRrvejUoISh
 E8O3JEFJNCQpX/eJNATVv9s1r88qrFcUzC7EiKoU343WMCe6aMBmqqG+lcFtt72vdBZY
 SgMVsKf7vVgS17yIsIo2xgWrtjws6UtzsfaEMAAaTfmVoNb5Xzy61/jbFr6d2cyzvc7P
 Muqg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=H9P6OnouvejPPK+jXDx9t1rgGFLTLciQ/+xdGW1VtP0=;
 b=okrtQdESCjkfniG7ecMqNFZDeDgw7dc0Ge7lw1xgttMpAt6TIOY/sxY7JxUj2Ejxf4
 98GT19Gu3c/93LxNSCRAOEXlQl3Gulf9jNy+JLcArH/auQ6ou3JDv94HQNHVItkkxlig
 Zo14+DJktbKEO9ijPJlPG556RUB1FiXzUB80fRnAIYHC4Ey8e9fhJ1k50FELxJ0mszzB
 cf/ATSDePEvbo2MtmXy6XhMje7xgvP3yOilR8T89K3FkkqXuLZOGsIrtTqwozvh1Xjtd
 JVqHoIGu9BgFzKQZRZC3ljiiMTteeWYhtlch3EFtEvI4lOTbbJfVOHO+c/zj8huh6qK/
 wuZQ==
X-Gm-Message-State: AJIora/dklqZCYCVoEVCR4/92Wdsn+VYB7QSc0ncSvp4XD3B0lYzfbVH
 6Uz+WdqHcKjqj3SaSk8MswFEja9tL2JKF9PBkYk4D50WzCk=
X-Google-Smtp-Source: AGRyM1uquutjER+8ZVQwvEoK/wPhqAiY/ojKMNjUA+N9ZCmaGa/X9tVRO6pnGbQBzyqLW555ZOGosq5FGwUuqAQgDx8=
X-Received: by 2002:a02:a08d:0:b0:33c:6a7d:87db with SMTP id
 g13-20020a02a08d000000b0033c6a7d87dbmr3138047jah.64.1656537473637; Wed, 29
 Jun 2022 14:17:53 -0700 (PDT)
MIME-Version: 1.0
References: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
 <83pmj9qjgk.fsf@HIDDEN>
 <CA+G3_PNnJ2akU9D2i3CGeYg=p56wzuy-gtzEGTk6kzmYrQyd6A@HIDDEN>
In-Reply-To: <CA+G3_PNnJ2akU9D2i3CGeYg=p56wzuy-gtzEGTk6kzmYrQyd6A@HIDDEN>
From: Tom Gillespie <tgbugs@HIDDEN>
Date: Wed, 29 Jun 2022 14:17:42 -0700
Message-ID: <CA+G3_PPtJd9L+FWTPBkhKcs0fPAcTqRQzw54oG66fLHrC5mrsQ@HIDDEN>
Subject: Re: bug#56002: src/process.c; make-process fails to clean up stderr
 process on early exit
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/mixed; boundary="000000000000ac7b6b05e29cafa9"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 56002
Cc: 56002 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -1.0 (-)

--000000000000ac7b6b05e29cafa9
Content-Type: text/plain; charset="UTF-8"

After digging deep into this I think I have a solution. It is attached
as two patches, one that adds tests and one that updates Fmake_proc.
For the record, there was not a missing unwind-protect.

There are two changes to the implementation that are complementary.

The first is to change the internal structure of Fmake_process so that
stderrproc is created immediately before the call to create_process.
This avoids the need to call remove_process on stderrproc in the event
of any expected or unexpected exits prior to the call to create process.

This resolves the issue as originally described.

The second change is to decouple the query-on-exit behavior of
stderrproc from that of proc by adding a new keyword argument
:query-stderr which defaults to nil. The coupling of query-on-exit for
proc and stderrproc in the currently implementation forces users to
always add additional boilerplate specifically when they don't care
about stderr, which is the opposite of what would want (forcing
callers who don't care about something to handle it, rather than the
other way around).

In addition to the patches, I have a question about an inconsistency
in the documentation, and a suggestion about how it might be resolved.
I can open this as a new issue if that makes more sense.

One thing I don't understand is the interaction between :command
'(nil) and :stderr a-pipe-process. It seems that the behaviors
described by their documentation should be mutually exclusive, but
make-process creates a pty without complaining.

I suggest that either an error be raised if :command '(nil) and
:stderr a-pipe-process are provided at the same time, because in all
other cases for :stderr there is a call to CHECK_STRING that will
cause an error, and it is not clear why the pipe process variant should
be exempt from this check since it does not appear that the stderr pipe
process is ever hooked up to the pty.

Any insights here would be appreciated.

At the very least the documentation for :connection-type needs to be
updated to correct the following, since it does not match the current
implemented behavior

> if a non-nil value is specified for the :stderr parameter ... the type will always be pipe

As it stands I think I have preserved existing behavior with some
slight code duplication that reflects the confusion about what should
happens when a stderr process is provided and create_pty is called
instead of create_process.

--000000000000ac7b6b05e29cafa9
Content-Type: text/x-patch; charset="US-ASCII"; 
	name="0001-test-src-process-tests.el-test-make-process-stderr-q.patch"
Content-Disposition: attachment; 
	filename="0001-test-src-process-tests.el-test-make-process-stderr-q.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_l503j6ix1>
X-Attachment-Id: f_l503j6ix1

RnJvbSAyYjBkM2QyYWE4ODZhNDgyYmIwZTU1NDZlYzI3ZmVmNDdmOWQzNGIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gR2lsbGVzcGllIDx0Z2J1Z3NAZ21haWwuY29tPgpEYXRl
OiBXZWQsIDI5IEp1biAyMDIyIDEzOjI2OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxLzJdIHRl
c3Qvc3JjL3Byb2Nlc3MtdGVzdHMuZWw6IHRlc3QgbWFrZS1wcm9jZXNzIHN0ZGVycgogcXVlcnkv
Y2xlYW51cAoKKiB0ZXN0L3NyYy9wcm9jZXNzLXRlc3RzLmVsIChtYWtlLXByb2Nlc3MvcXVlcnkt
c3RkZXJyKTogQWRkZWQgdG8KZW5zdXJlIDpxdWVyeS1zdGRlcnIgYmVoYXZlcyBhcyBleHBlY3Rl
ZC4KCiogdGVzdC9zcmMvcHJvY2Vzcy10ZXN0cy5lbCAobWFrZS1wcm9jZXNzL2NsZWFudXAtc3Rk
ZXJycHJvYyk6IEFkZGVkCnRvIGVuc3VyZSB0aGF0IG1ha2UtcHJvY2VzcyBjb3JyZWN0bHkgY2xl
YW5zIHVwL25ldmVyIGNyZWF0ZXMKc3RkZXJycHJvYyBpbiB0aGUgZXZlbnQgb2YgYW4gZWFybHkg
ZXhpdC9lcnJvci4KLS0tCiB0ZXN0L3NyYy9wcm9jZXNzLXRlc3RzLmVsIHwgNjUgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNjUgaW5zZXJ0
aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Rlc3Qvc3JjL3Byb2Nlc3MtdGVzdHMuZWwgYi90ZXN0L3Ny
Yy9wcm9jZXNzLXRlc3RzLmVsCmluZGV4IDgyNGM2ZGExMTkuLjUwMTU5YWI0NmIgMTAwNjQ0Ci0t
LSBhL3Rlc3Qvc3JjL3Byb2Nlc3MtdGVzdHMuZWwKKysrIGIvdGVzdC9zcmMvcHJvY2Vzcy10ZXN0
cy5lbApAQCAtMjMzLDYgKzIzMyw3MSBAQCBtYWtlLXByb2Nlc3Mvbm9xdWVyeS1zdGRlcnIKICAg
ICAgICAgICAgICAgKHNob3VsZC1ub3QgKHByb2Nlc3MtcXVlcnktb24tZXhpdC1mbGFnIHByb2Nl
c3MpKSkpCiAgICAgICAgIChraWxsLXByb2Nlc3MgcHJvY2VzcykpKSkpKQogCisoZXJ0LWRlZnRl
c3QgbWFrZS1wcm9jZXNzL3F1ZXJ5LXN0ZGVyciAoKQorICAoc2tpcC11bmxlc3MgKGV4ZWN1dGFi
bGUtZmluZCAiYmFzaCIpKQorICAobGV0ICgoc3RkZXJyLWJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1
ZmZlciAiIHJjIHN0ZGVyciIpKSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgKGxldCAo
KHByb2Nlc3MKKyAgICAgICAgICAgICAgIChtYWtlLXByb2Nlc3MKKyAgICAgICAgICAgICAgICA6
bmFtZSAicHJvY2VzcyB0aGF0IG5ldmVyIGFjdHVhbGx5IHN0YXJ0cyIKKyAgICAgICAgICAgICAg
ICA6c3RkZXJyIHN0ZGVyci1idWZmZXIKKyAgICAgICAgICAgICAgICA6Y29tbWFuZCAnKCJiYXNo
IiAiLWMiICJlY2hvIHN0ZG91dDsgZWNobyBzdGRlcnIgMT4mMjsiKSkpKQorICAgICAgICAgICh3
aGlsZSAoYWNjZXB0LXByb2Nlc3Mtb3V0cHV0IChnZXQtYnVmZmVyLXByb2Nlc3MgKHByb2Nlc3Mt
YnVmZmVyIHByb2Nlc3MpKSkpKQorICAgICAgKGxldCAoKHN0ZGVycnByb2MgKGdldC1idWZmZXIt
cHJvY2VzcyBzdGRlcnItYnVmZmVyKSkpCisgICAgICAgIChzaG91bGQgc3RkZXJycHJvYykKKyAg
ICAgICAgKHNob3VsZC1ub3QgKHByb2Nlc3MtcXVlcnktb24tZXhpdC1mbGFnIHN0ZGVycnByb2Mp
KSkKKyAgICAgIChzaG91bGQgKGdldC1idWZmZXItcHJvY2VzcyBzdGRlcnItYnVmZmVyKSkKKyAg
ICAgIChraWxsLWJ1ZmZlciBzdGRlcnItYnVmZmVyKSkKKyAgICAoc2hvdWxkLW5vdCAoYnVmZmVy
LWxpdmUtcCBzdGRlcnItYnVmZmVyKSkpCisKKyAgKGxldCAoKHN0ZGVyci1idWZmZXIgKGdlbmVy
YXRlLW5ldy1idWZmZXIgIiByYyBzdGRlcnIiKSkpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAg
ICAgIChsZXQgKChwcm9jZXNzCisgICAgICAgICAgICAgICAobWFrZS1wcm9jZXNzCisgICAgICAg
ICAgICAgICAgOm5hbWUgInByb2Nlc3MgdGhhdCBuZXZlciBhY3R1YWxseSBzdGFydHMiCisgICAg
ICAgICAgICAgICAgOnN0ZGVyciBzdGRlcnItYnVmZmVyCisgICAgICAgICAgICAgICAgOnF1ZXJ5
LXN0ZGVyciB0CisgICAgICAgICAgICAgICAgOmNvbW1hbmQgJygiYmFzaCIgIi1jIiAiZWNobyBz
dGRvdXQ7IGVjaG8gc3RkZXJyIDE+JjI7IikpKSkKKyAgICAgICAgICAod2hpbGUgKGFjY2VwdC1w
cm9jZXNzLW91dHB1dCAoZ2V0LWJ1ZmZlci1wcm9jZXNzIChwcm9jZXNzLWJ1ZmZlciBwcm9jZXNz
KSkpKSkKKyAgICAgIChsZXQgKChzdGRlcnJwcm9jIChnZXQtYnVmZmVyLXByb2Nlc3Mgc3RkZXJy
LWJ1ZmZlcikpKQorICAgICAgICAoc2hvdWxkIHN0ZGVycnByb2MpCisgICAgICAgIChzaG91bGQg
KHByb2Nlc3MtcXVlcnktb24tZXhpdC1mbGFnIHN0ZGVycnByb2MpKSkKKyAgICAgICh3aGlsZSAo
YWNjZXB0LXByb2Nlc3Mtb3V0cHV0IChnZXQtYnVmZmVyLXByb2Nlc3Mgc3RkZXJyLWJ1ZmZlcikp
KQorICAgICAgKHNob3VsZC1ub3QgKGdldC1idWZmZXItcHJvY2VzcyBzdGRlcnItYnVmZmVyKSkK
KyAgICAgIChraWxsLWJ1ZmZlciBzdGRlcnItYnVmZmVyKSkKKyAgICAoc2hvdWxkLW5vdCAoYnVm
ZmVyLWxpdmUtcCBzdGRlcnItYnVmZmVyKSkpKQorCisoZXJ0LWRlZnRlc3QgbWFrZS1wcm9jZXNz
L2NsZWFudXAtc3RkZXJycHJvYyAoKQorICAiZW5zdXJlIHN0ZGVycnByb2MgaXMgY2xlYW5lZCB1
cC9uZXZlciBjcmVhdGVkIGlmIGBtYWtlLXByb2Nlc3MnIGZhaWxzIgorICAoc2hvdWxkLWVycm9y
CisgICAobGV0ICgoc3RkZXJyLWJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiIHJjIHN0ZGVy
ciIpKSkKKyAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAobGV0ICgocHJvY2VzcworICAg
ICAgICAgICAgICAgIChtYWtlLXByb2Nlc3MKKyAgICAgICAgICAgICAgICAgOm5hbWUgInByb2Nl
c3MgdGhhdCBuZXZlciBhY3R1YWxseSBzdGFydHMiCisgICAgICAgICAgICAgICAgIDpzdGRlcnIg
c3RkZXJyLWJ1ZmZlcgorICAgICAgICAgICAgICAgICA6cXVlcnktc3RkZXJyIHQKKyAgICAgICAg
ICAgICAgICAgOmNvbW1hbmQgJygiaV9mYWlsX2JlZm9yZV90aGVyZV9jYW5fYmVfYV9yZXR1cm5f
Y29kZSIpKSkpKQorICAgICAgIChzaG91bGQtbm90IChnZXQtYnVmZmVyLXByb2Nlc3Mgc3RkZXJy
LWJ1ZmZlcikpCisgICAgICAgKGtpbGwtYnVmZmVyIHN0ZGVyci1idWZmZXIpKQorICAgICAoc2hv
dWxkLW5vdCAoYnVmZmVyLWxpdmUtcCBzdGRlcnItYnVmZmVyKSkpKQorCisgIChzaG91bGQtZXJy
b3IKKyAgIChsZXQgKChzdGRlcnItYnVmZmVyIChnZW5lcmF0ZS1uZXctYnVmZmVyICIgcmMgc3Rk
ZXJyIikpKQorICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgIChsZXQgKChwcm9jZXNzCisg
ICAgICAgICAgICAgICAgKG1ha2UtcHJvY2VzcworICAgICAgICAgICAgICAgICA6bmFtZSAicHJv
Y2VzcyB0aGF0IG5ldmVyIGFjdHVhbGx5IHN0YXJ0cyIKKyAgICAgICAgICAgICAgICAgOnN0ZGVy
ciBzdGRlcnItYnVmZmVyCisgICAgICAgICAgICAgICAgIDpxdWVyeS1zdGRlcnIgdAorICAgICAg
ICAgICAgICAgICA6Y29tbWFuZCAnKCJpX2ZhaWxfYmVmb3JlX3RoZXJlX2Nhbl9iZV9hX3JldHVy
bl9jb2RlIikpKSkKKyAgICAgICAgICAgKG1lc3NhZ2UgInRoaXMgd2lsbCBuZXZlciBwcmludCBi
ZWNhdXNlIHdlIG5ldmVyIGdldCBoZXJlIikKKyAgICAgICAgICAgKHdoaWxlIChhY2NlcHQtcHJv
Y2Vzcy1vdXRwdXQgcHJvY2VzcykpKQorICAgICAgIChzaG91bGQtbm90IChnZXQtYnVmZmVyLXBy
b2Nlc3Mgc3RkZXJyLWJ1ZmZlcikpCisgICAgICAgKHdoaWxlIChhY2NlcHQtcHJvY2Vzcy1vdXRw
dXQgKGdldC1idWZmZXItcHJvY2VzcyBzdGRlcnItYnVmZmVyKSkpCisgICAgICAgKGtpbGwtYnVm
ZmVyIHN0ZGVyci1idWZmZXIpKQorICAgICAoc2hvdWxkLW5vdCAoYnVmZmVyLWxpdmUtcCBzdGRl
cnItYnVmZmVyKSkpKSkKKwogOzsgUmV0dXJuIHQgaWYgT1VUUFVUIGNvdWxkIGhhdmUgYmVlbiBn
ZW5lcmF0ZWQgYnkgbWVyZ2luZyB0aGUgSU5QVVRTIHNvbWVob3cuCiAoZGVmdW4gcHJvY2Vzcy10
ZXN0cy0tbWl4YWJsZSAob3V0cHV0ICZyZXN0IGlucHV0cykKICAgKHdoaWxlIChhbmQgb3V0cHV0
IChsZXQgKChpbnMgaW5wdXRzKSkKLS0gCjIuMzUuMQoK
--000000000000ac7b6b05e29cafa9
Content-Type: text/x-patch; charset="US-ASCII"; 
	name="0002-make-process-stderrproc-cleanup-on-failure-decouple-.patch"
Content-Disposition: attachment; 
	filename="0002-make-process-stderrproc-cleanup-on-failure-decouple-.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_l503jb1j1>
X-Attachment-Id: f_l503jb1j1

RnJvbSAwN2ExZmEzNGVkZjA2N2VhYmY3MjZiOWI0NGVmMDhiZjY3NzcxYzYwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gR2lsbGVzcGllIDx0Z2J1Z3NAZ21haWwuY29tPgpEYXRl
OiBXZWQsIDI5IEp1biAyMDIyIDEzOjQ4OjA5IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIG1h
a2UtcHJvY2VzcyBzdGRlcnJwcm9jIGNsZWFudXAgb24gZmFpbHVyZSBkZWNvdXBsZQogc3RkZXJy
IHF1ZXJ5CgoqIHNyYy9wcm9jZXNzLmMgKEZtYWtlX3Byb2Nlc3MpOiBNb3ZlIHRoZSBjYWxsIHRv
IGNyZWF0ZSB0aGUgc3RkZXJyCnByb2Nlc3MgYXMgbGF0ZSBhcyBwb3NzaWJsZSB0byBhdm9pZCBo
YXZpbmcgdG8gY2xlYW4gdXAgc3RkZXJycHJvYyBpbgp0aGUgZXZlbnQgb2YgYW4gZXJyb3IgcHJp
b3IgdG8gdGhlIGNhbGwgdG8gY3JlYXRlX3Byb2Nlc3MuIFRoaXMgY2hhbmdlCmlzIG5lZWRlZCB0
byBlbnN1cmUgdGhhdCB3aGVuIGNhbGxlZCB3aXRoIDpxdWVyeS1zdGRlcnIgdCAoYWthIHRoZQpk
ZWZhdWx0IGJlaGF2aW9yIHByaW9yIHRvIHRoZSBhZGRpdGlvbiBvZiA6cXVlcnktc3RkZXJyKSBt
YWtlLXByb2Nlc3MKd2lsbCBub3QgbGVhayB0aGUgc3RkZXJyIHByb2Nlc3MgaWYgYSBjYWxsIHRv
IG1ha2UtcHJvY2VzcyBmYWlscy4KQWxzbyBhZGRzIGEgbmV3IGtleXdvcmQgYXJndW1lbnQgOnF1
ZXJ5LXN0ZGVyciB0byBjb250cm9sIHdoZXRoZXIgdG8KcXVlcnkgb24gZXhpdCB0aGUgc3RkZXJy
IHByb2Nlc3MgKGlmIG9uZSBpcyBjcmVhdGVkKS4gKGJ1ZyM1NjAwMikKLS0tCiBzcmMvcHJvY2Vz
cy5jIHwgNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t
LS0tCiAxIGZpbGUgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvc3JjL3Byb2Nlc3MuYyBiL3NyYy9wcm9jZXNzLmMKaW5kZXggYWY0MDJjOGVk
Yi4uYzA4ZGQ2OTk1YSAxMDA2NDQKLS0tIGEvc3JjL3Byb2Nlc3MuYworKysgYi9zcmMvcHJvY2Vz
cy5jCkBAIC0xNzMyLDYgKzE3MzIsMTEgQEAgREVGVU4gKCJtYWtlLXByb2Nlc3MiLCBGbWFrZV9w
cm9jZXNzLCBTbWFrZV9wcm9jZXNzLCAwLCBNQU5ZLCAwLAogOm5vcXVlcnkgQk9PTCAtLSBXaGVu
IGV4aXRpbmcgRW1hY3MsIHF1ZXJ5IHRoZSB1c2VyIGlmIEJPT0wgaXMgbmlsIGFuZAogdGhlIHBy
b2Nlc3MgaXMgcnVubmluZy4gIElmIEJPT0wgaXMgbm90IGdpdmVuLCBxdWVyeSBiZWZvcmUgZXhp
dGluZy4KIAorOnF1ZXJ5LXN0ZGVyciBCT09MIC0tIFdoZW4gZXhpdGluZyBFbWFjcywgcXVlcnkg
dGhlIHVzZXIgaWYgQk9PTCBpcworbm9uLW5pbCBhbmQgdGhlIHN0ZGVyciBwcm9jZXNzIGlzIHJ1
bm5pbmcuIElmIEJPT0wgaXMgbm90IGdpdmVuLCBkbworbm90IHF1ZXJ5IGJlZm9yZSBleGl0aW5n
LiBUaGlzIGhhcyBubyBlZmZlY3QgaWYgdGhlIHZhbHVlIHBhc3NlZCB0bworOnN0ZGVyciBpcyBh
IHByb2Nlc3MuCisKIDpzdG9wIEJPT0wgLS0gQk9PTCBtdXN0IGJlIG5pbC4gIFRoZSBgOnN0b3An
IGtleSBpcyBpZ25vcmVkIG90aGVyd2lzZQogYW5kIGlzIHJldGFpbmVkIGZvciBjb21wYXRpYmls
aXR5IHdpdGggb3RoZXIgcHJvY2VzcyB0eXBlcyBzdWNoIGFzCiBwaXBlIHByb2Nlc3Nlcy4gIEFz
eW5jaHJvbm91cyBzdWJwcm9jZXNzZXMgbmV2ZXIgc3RhcnQgaW4gdGhlCkBAIC0xODA0LDggKzE4
MDksNiBAQCBERUZVTiAoIm1ha2UtcHJvY2VzcyIsIEZtYWtlX3Byb2Nlc3MsIFNtYWtlX3Byb2Nl
c3MsIDAsIE1BTlksIDAsCiAgIGlmICghTklMUCAocHJvZ3JhbSkpCiAgICAgQ0hFQ0tfU1RSSU5H
IChwcm9ncmFtKTsKIAotICBib29sIHF1ZXJ5X29uX2V4aXQgPSBOSUxQIChwbGlzdF9nZXQgKGNv
bnRhY3QsIFFDbm9xdWVyeSkpOwotCiAgIHN0ZGVycnByb2MgPSBRbmlsOwogICB4c3RkZXJyID0g
cGxpc3RfZ2V0IChjb250YWN0LCBRQ3N0ZGVycik7CiAgIGlmIChQUk9DRVNTUCAoeHN0ZGVycikp
CkBAIC0xODE1LDE2ICsxODE4LDcgQEAgREVGVU4gKCJtYWtlLXByb2Nlc3MiLCBGbWFrZV9wcm9j
ZXNzLCBTbWFrZV9wcm9jZXNzLCAwLCBNQU5ZLCAwLAogICAgICAgc3RkZXJycHJvYyA9IHhzdGRl
cnI7CiAgICAgfQogICBlbHNlIGlmICghTklMUCAoeHN0ZGVycikpCi0gICAgewotICAgICAgQ0hF
Q0tfU1RSSU5HIChwcm9ncmFtKTsKLSAgICAgIHN0ZGVycnByb2MgPSBDQUxMTiAoRm1ha2VfcGlw
ZV9wcm9jZXNzLAotCQkJICBRQ25hbWUsCi0JCQkgIGNvbmNhdDIgKG5hbWUsIGJ1aWxkX3N0cmlu
ZyAoIiBzdGRlcnIiKSksCi0JCQkgIFFDYnVmZmVyLAotCQkJICBGZ2V0X2J1ZmZlcl9jcmVhdGUg
KHhzdGRlcnIsIFFuaWwpLAotCQkJICBRQ25vcXVlcnksCi0JCQkgIHF1ZXJ5X29uX2V4aXQgPyBR
bmlsIDogUXQpOwotICAgIH0KKyAgICBDSEVDS19TVFJJTkcgKHByb2dyYW0pOwogCiAgIHByb2Mg
PSBtYWtlX3Byb2Nlc3MgKG5hbWUpOwogICByZWNvcmRfdW53aW5kX3Byb3RlY3QgKHN0YXJ0X3By
b2Nlc3NfdW53aW5kLCBwcm9jKTsKQEAgLTE4MzcsNyArMTgzMSw3IEBAIERFRlVOICgibWFrZS1w
cm9jZXNzIiwgRm1ha2VfcHJvY2VzcywgU21ha2VfcHJvY2VzcywgMCwgTUFOWSwgMCwKICAgcHNl
dF9maWx0ZXIgKFhQUk9DRVNTIChwcm9jKSwgcGxpc3RfZ2V0IChjb250YWN0LCBRQ2ZpbHRlcikp
OwogICBwc2V0X2NvbW1hbmQgKFhQUk9DRVNTIChwcm9jKSwgRmNvcHlfc2VxdWVuY2UgKGNvbW1h
bmQpKTsKIAotICBpZiAoIXF1ZXJ5X29uX2V4aXQpCisgIGlmICghTklMUCAocGxpc3RfZ2V0IChj
b250YWN0LCBRQ25vcXVlcnkpKSkKICAgICBYUFJPQ0VTUyAocHJvYyktPmtpbGxfd2l0aG91dF9x
dWVyeSA9IDE7CiAgIHRlbSA9IHBsaXN0X2dldCAoY29udGFjdCwgUUNzdG9wKTsKICAgLyogTm9y
bWFsIHByb2Nlc3NlcyBjYW4ndCBiZSBzdGFydGVkIGluIGEgc3RvcHBlZCBzdGF0ZSwgc2VlCkBA
IC0xODU0LDEzICsxODQ4LDYgQEAgREVGVU4gKCJtYWtlLXByb2Nlc3MiLCBGbWFrZV9wcm9jZXNz
LCBTbWFrZV9wcm9jZXNzLCAwLCBNQU5ZLCAwLAogICBlbHNlCiAgICAgcmVwb3J0X2ZpbGVfZXJy
b3IgKCJVbmtub3duIGNvbm5lY3Rpb24gdHlwZSIsIHRlbSk7CiAKLSAgaWYgKCFOSUxQIChzdGRl
cnJwcm9jKSkKLSAgICB7Ci0gICAgICBwc2V0X3N0ZGVycnByb2MgKFhQUk9DRVNTIChwcm9jKSwg
c3RkZXJycHJvYyk7Ci0KLSAgICAgIFhQUk9DRVNTIChwcm9jKS0+cHR5X2ZsYWcgPSBmYWxzZTsK
LSAgICB9Ci0KICNpZmRlZiBIQVZFX0dOVVRMUwogICAvKiBBS0EgR05VVExTX0lOSVRTVEFHRShw
cm9jKS4gICovCiAgIHZlcmlmeSAoR05VVExTX1NUQUdFX0VNUFRZID09IDApOwpAQCAtMjAyNiwx
MCArMjAxMywzNyBAQCBERUZVTiAoIm1ha2UtcHJvY2VzcyIsIEZtYWtlX3Byb2Nlc3MsIFNtYWtl
X3Byb2Nlc3MsIDAsIE1BTlksIDAsCiAJICB0ZW0gPSBYQ0RSICh0ZW0pOwogCX0KIAorICAgICAg
aWYgKCFQUk9DRVNTUCAoeHN0ZGVycikgJiYgIU5JTFAgKHhzdGRlcnIpKQorCXsKKwkgIHN0ZGVy
cnByb2MgPSBDQUxMTiAoRm1ha2VfcGlwZV9wcm9jZXNzLAorCQkJICAgICAgUUNuYW1lLAorCQkJ
ICAgICAgY29uY2F0MiAobmFtZSwgYnVpbGRfc3RyaW5nICgiIHN0ZGVyciIpKSwKKwkJCSAgICAg
IFFDYnVmZmVyLAorCQkJICAgICAgRmdldF9idWZmZXJfY3JlYXRlICh4c3RkZXJyLCBRbmlsKSwK
KwkJCSAgICAgIFFDbm9xdWVyeSwKKwkJCSAgICAgIE5JTFAgKHBsaXN0X2dldCAoY29udGFjdCwg
UUNxdWVyeV9zdGRlcnIpKSA/IFF0IDogUW5pbCk7CisJfQorCisgICAgICBpZiAoIU5JTFAgKHN0
ZGVycnByb2MpKQorCXsKKwkgIHBzZXRfc3RkZXJycHJvYyAoWFBST0NFU1MgKHByb2MpLCBzdGRl
cnJwcm9jKTsKKworCSAgWFBST0NFU1MgKHByb2MpLT5wdHlfZmxhZyA9IGZhbHNlOworCX0KKwog
ICAgICAgY3JlYXRlX3Byb2Nlc3MgKHByb2MsIG5ld19hcmd2LCBjdXJyZW50X2Rpcik7CiAgICAg
fQogICBlbHNlCi0gICAgY3JlYXRlX3B0eSAocHJvYyk7CisgICAgeworICAgICAgaWYgKCFOSUxQ
IChzdGRlcnJwcm9jKSkKKwl7CisJICBwc2V0X3N0ZGVycnByb2MgKFhQUk9DRVNTIChwcm9jKSwg
c3RkZXJycHJvYyk7CisKKwkgIFhQUk9DRVNTIChwcm9jKS0+cHR5X2ZsYWcgPSBmYWxzZTsKKwl9
CisKKyAgICAgIGNyZWF0ZV9wdHkgKHByb2MpOworICAgIH0KIAogICByZXR1cm4gU0FGRV9GUkVF
X1VOQklORF9UTyAoY291bnQsIHByb2MpOwogfQpAQCAtODU0Myw2ICs4NTU3LDcgQEAgc3ltc19v
Zl9wcm9jZXNzICh2b2lkKQogICBERUZTWU0gKFFuc21fdmVyaWZ5X2Nvbm5lY3Rpb24sICJuc20t
dmVyaWZ5LWNvbm5lY3Rpb24iKTsKICAgREVGU1lNIChRQ2xvZywgIjpsb2ciKTsKICAgREVGU1lN
IChRQ25vcXVlcnksICI6bm9xdWVyeSIpOworICBERUZTWU0gKFFDcXVlcnlfc3RkZXJyLCAiOnF1
ZXJ5LXN0ZGVyciIpOwogICBERUZTWU0gKFFDc3RvcCwgIjpzdG9wIik7CiAgIERFRlNZTSAoUUNw
bGlzdCwgIjpwbGlzdCIpOwogICBERUZTWU0gKFFDY29tbWFuZCwgIjpjb21tYW5kIik7Ci0tIAoy
LjM1LjEKCg==
--000000000000ac7b6b05e29cafa9--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 16 Jun 2022 06:12:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 16 02:12:10 2022
Received: from localhost ([127.0.0.1]:40482 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o1iji-0003LW-Jr
	for submit <at> debbugs.gnu.org; Thu, 16 Jun 2022 02:12:10 -0400
Received: from mail-yw1-f172.google.com ([209.85.128.172]:42722)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tgbugs@HIDDEN>) id 1o1ije-0003L1-TK
 for 56002 <at> debbugs.gnu.org; Thu, 16 Jun 2022 02:12:09 -0400
Received: by mail-yw1-f172.google.com with SMTP id
 00721157ae682-2ef5380669cso4186837b3.9
 for <56002 <at> debbugs.gnu.org>; Wed, 15 Jun 2022 23:12:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=GQIApe45Wocb7A6zQbPNlVOw3tDq2/Y1cR2BbbqBIzk=;
 b=LgDS++ZDuDL7eBr6mWZU07Z6KuY/CysPvePhstJ1MIFESSRW/9XDgnkH4mReNl91Fu
 YWTt+U2xhwRHYVWPILjO3WjIQ18IfmzLvFfCIQN0Ht1D5RM4RnwXkm30fmZAr471Vu/0
 ZtJzYyYicNf63YyPi/dzo7KzOUbGVowfxmEtPxkokNihKxzrsYTIwkrQnnAYOe2OUOS8
 cMaAd/OUo8/78veH/nq3Eu5dF/6QzWAS32AmphwoB2IG/tfim+QKBluLPrpDAzr3qYBt
 8zdjofsBXjzFUwKrzyWRWXcSYyaa4zMDO8irdcBJOnwpKd9k1XZLGdmOYywzI0jyNtsB
 qTng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=GQIApe45Wocb7A6zQbPNlVOw3tDq2/Y1cR2BbbqBIzk=;
 b=PBvyBafgTHvaUKTmuTmRuc+vhPW1q8UiYypmK17bqN+17lo+6raXyvLtBcTPWa7Oe3
 UT1VRtTl1GKtWmWMbv1UvlPpcN4ZWRnm6QDDIwIrROh1iZ3KA6z7KGi9nsqaXb3lsYFi
 IlR5o6JyLj7PIsynvOzD7s3EOW2AfpiTsdXj6DbpR0lggB2/wTE5QsauXgroEJiBlmev
 yvpfeizwvzMJtZw7+Mzatg87oEZMAzp18cS7tEED1UYrcpCedLwnihPj3w1vXrkfvsG1
 fxJ2j3P6PmUh24nEVshgEonltzZGDcFNaL91wcxdEOJJzPZkHN6x4gpN4pw++jC5r/Ug
 B4/g==
X-Gm-Message-State: AJIora851jgrvnZC2k5SVye9Hcmr7VstnEKTDhkMJyTDDbxI8EXGPcgD
 VhfRi0uQT/RrH306owOeJk1s3JEueAX38qqUoluuDPlGyvQ=
X-Google-Smtp-Source: AGRyM1uOwWni4kzS0ln4/0q0Covj/U8+8qxfUztHfbiC8UnY/aePe75Lo/RHDcP7wzqx+ciBsjHv9V/T2SYVrwbMvTg=
X-Received: by 2002:a81:ed4:0:b0:2f1:c8db:ce23 with SMTP id
 203-20020a810ed4000000b002f1c8dbce23mr3754919ywo.95.1655359921262; Wed, 15
 Jun 2022 23:12:01 -0700 (PDT)
MIME-Version: 1.0
References: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
 <83pmj9qjgk.fsf@HIDDEN>
In-Reply-To: <83pmj9qjgk.fsf@HIDDEN>
From: Tom Gillespie <tgbugs@HIDDEN>
Date: Wed, 15 Jun 2022 23:11:50 -0700
Message-ID: <CA+G3_PNnJ2akU9D2i3CGeYg=p56wzuy-gtzEGTk6kzmYrQyd6A@HIDDEN>
Subject: Re: bug#56002: src/process.c; make-process fails to clean up stderr
 process on early exit
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 56002
Cc: 56002 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -1.0 (-)

> Can you elaborate on what do you mean by "clean up the stderr
> process"?  Do you see the code which does that in the "normal" cases?

I'm not entirely sure as I am unfamiliar with the life cycle for processes in
the runtime. I think that the "normal" cleanup happens when the parent
process exits with a return code. The stderr process is a pipe process so
I assume that under normal circumstances the pipe process would receive
a signal from the primary process via the os and exit allowing calls to
accept-process-output to complete and then presumably the gc would
take care of the rest? I have no idea if this is remotely accurate.

It does look like remote_process is called during other failures though.

> Sounds like we lack some unwind-protect call somewhere?

It does look like there are a number of calls to record_unwind_protect
(remove_process, proc); in the code. Maybe there is a missing
record_unwind_protect (remove_process, stderrproc); in make-process?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 16 Jun 2022 05:13:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 16 01:13:48 2022
Received: from localhost ([127.0.0.1]:40424 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o1hpD-0001kR-W9
	for submit <at> debbugs.gnu.org; Thu, 16 Jun 2022 01:13:48 -0400
Received: from eggs.gnu.org ([209.51.188.92]:41906)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o1hpB-0001kB-2E
 for 56002 <at> debbugs.gnu.org; Thu, 16 Jun 2022 01:13:46 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:53626)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o1hp5-0008Kj-P7; Thu, 16 Jun 2022 01:13:39 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Lqe9UaQXsrMypC8zWwn4572/wa2eFuOxk1c6vOrf0+8=; b=dmW1BZ2CXxZq
 1tCHY5dNiOBh6FA/G8jDna5KOL4rZVpg+x5Q/psCM64sZCrEa9m/LHyEC9qMykjBcyeJWZO7JrG+O
 1f4Q/c7kaS4myFfJIM8cx1bK8fQfW0S5rKr1Yr7OdcOBUo80P6B5bOIDAcmiAwqruXgspOPtr8n17
 d7VcUwHdnjutEMzSoGydAnDck3TRNx6LDZFeHH75OLrNEmRq5M+NVCogR7LwBRS3+dzPLs4WWuwJw
 GL+QXqjD+Sw6wmnUyd/WmD0zbcwSHsJgfC/IosqAppSdUPcPsiTgchs0irmtsmE1zjnJvZe1yzH2a
 ISxz0s/61Ofw8rDZzNanMw==;
Received: from [87.69.77.57] (port=1839 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o1hp4-0006nx-Sr; Thu, 16 Jun 2022 01:13:39 -0400
Date: Thu, 16 Jun 2022 08:13:31 +0300
Message-Id: <83pmj9qjgk.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Tom Gillespie <tgbugs@HIDDEN>
In-Reply-To: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
 (message from Tom Gillespie on Wed, 15 Jun 2022 15:38:05 -0700)
Subject: Re: bug#56002: src/process.c;
 make-process fails to clean up stderr process on early exit
References: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 56002
Cc: 56002 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -3.3 (---)

> From: Tom Gillespie <tgbugs@HIDDEN>
> Date: Wed, 15 Jun 2022 15:38:05 -0700
> 
> If the primary subprocess created by make-process fails early then the
> stderr process is not cleaned up and running kill-buffer on any stderr
> buffer attached to the stderr process will prompt the user.

Can you elaborate on what do you mean by "clean up the stderr
process"?  Do you see the code which does that in the "normal" cases?

> Two early exits that can cause the issue are
> 
> 1. in make-process if the command is not found
> report_file_error ("Searching for program", program);
> 
> 2. in create_process if vfork fails
> report_file_errno (CHILD_SETUP_ERROR_DESC, Qnil, vfork_errno);
> 
> I'm sure there are other failure modes that would trigger the issue.

Sounds like we lack some unwind-protect call somewhere?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at 56002 <at> debbugs.gnu.org:


Received: (at 56002) by debbugs.gnu.org; 16 Jun 2022 02:28:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 15 22:28:41 2022
Received: from localhost ([127.0.0.1]:40213 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o1fFR-0005e1-1Y
	for submit <at> debbugs.gnu.org; Wed, 15 Jun 2022 22:28:41 -0400
Received: from mail-yw1-f176.google.com ([209.85.128.176]:44578)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tgbugs@HIDDEN>) id 1o1fFO-0005do-0Y
 for 56002 <at> debbugs.gnu.org; Wed, 15 Jun 2022 22:28:39 -0400
Received: by mail-yw1-f176.google.com with SMTP id
 00721157ae682-3176b6ed923so959437b3.11
 for <56002 <at> debbugs.gnu.org>; Wed, 15 Jun 2022 19:28:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:from:date:message-id:subject:to;
 bh=JgrM2pPHF45F37BhnvfsdYa+QXf408TiPRZyu0yo6zU=;
 b=icM5mBclhk9vnzEnXY9L76XXAkZPWPd4f/xjfo6Zq9dIC+0fXy6WDxB/N1ulQaDjvt
 bSi1thfxAxnhXbkC0L+hksHgxITNuCVO9+LJIDqSjFltxwsdlDnqzu88Y0kag8y0qtpu
 OPWMW4o08zK/fJ+xAsUJH/5mYNXZ9T7NTuSupccg3IirE/sA7CS46P4/0nKra/RyVYgo
 rPsCUNx8Mu2ua6RQ9+Xm9u8IX2ToGC9BVd8PZiFWiK2/mB5ROFQLsrn1WMCWXemREplv
 +KKY0hRH8oP/5HUTneIelCIRz4I7XhEvR3jJA9BQKdWdinK8W92Uhr2QCK3dINioNWpY
 RdXA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=JgrM2pPHF45F37BhnvfsdYa+QXf408TiPRZyu0yo6zU=;
 b=7pGrqWXmELNf2BRg4FsdSIGkujqvfQSpzvHHB0sp4xokCBP9sT0BBv91/IAqiB5Zmy
 uxMSIwmhA3ojFHxKEs+iIWuHLroPJrXKpY/bz29N0t+JnOiHMVfvb5i9NdiLB9Vu5+Mq
 Zif0M5Ihvf1pBgUdhfJ0AuC+ZkkLJtulDsNtemo2s81EV0ktQgp8hNW3mHI3t+In5Ges
 Kul2R07wJyY7tgEf7cybstxnpaV1oiQkOWwH12sGvoMzBg09HfvQZh7haeLVr8ho5QyJ
 fu5+bXsv2GoqWsLGqDIVC2IV1NKRF3YGXJJCy05vTBEmCVn/aq9lg6XE6Kby86tcTcEv
 V2ZQ==
X-Gm-Message-State: AJIora/gP+vTj1CPTdYUDZCpRMr/9sjiTb2I9hXrlJt7b6S3F46sy+y+
 Yz4kBWcIm1GTbO5yotnM2B195SafzPPpIsKmY0yuwN8UV/o=
X-Google-Smtp-Source: AGRyM1saKzHY0mP80S9iUcQUzZI/YkbuR/V0q4AOOg3vEjqZTI4i0KKGMUYMtsH5ygN/YogudkW/EJnzKyZ0tHKDErY=
X-Received: by 2002:a81:ed4:0:b0:2f1:c8db:ce23 with SMTP id
 203-20020a810ed4000000b002f1c8dbce23mr3107922ywo.95.1655346512262; Wed, 15
 Jun 2022 19:28:32 -0700 (PDT)
MIME-Version: 1.0
From: Tom Gillespie <tgbugs@HIDDEN>
Date: Wed, 15 Jun 2022 19:28:21 -0700
Message-ID: <CA+G3_PM=Q--zhVj2Y_oqDmOiWnrpeCPHnwXc5VzMdphROKzLfw@HIDDEN>
Subject: update with an additional example
To: 56002 <at> debbugs.gnu.org
Content-Type: text/plain; charset="UTF-8"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 56002
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -1.0 (-)

I have been reading the docs on accepting output again,
and I see that there might be some subtlety here, but in
fact following the examples in the docs should reveal
another way the bug can express itself.

Specifically, in the original example I did not call
accept-process-output on the stderr process as is
suggested by the docs. Unfortunately, the docs are
misleading in this case because I am doing things
inside an unwind-protect cleanup clause and
accepting output from the stderr process causes
the example (below) to hang forever.

I think this happens because the stderr process is not
cleaned up correctly, OR possibly because of some
unexpected interaction due to the use of unwind-protect.

Example:
#+begin_src bash
read -r -d '' example <<'EOF'
(let ((stderr-buffer (generate-new-buffer " rc stderr")))
  (unwind-protect
      (let ((process
             (make-process
              :name "process that never actually starts"
              :stderr stderr-buffer
              :command '("i_fail_before_there_can_be_a_return_code"))))
        (message "this will never print because we never get here")
        (while (accept-process-output process)))
    (while (accept-process-output (get-buffer-process stderr-buffer)))
    (kill-buffer stderr-buffer)))
EOF
emacs -Q -batch -eval "${example}"
#+end_src

Docs in question:
https://www.gnu.org/software/emacs/manual/html_node/elisp/Accepting-Output.html




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 15 Jun 2022 22:38:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jun 15 18:38:42 2022
Received: from localhost ([127.0.0.1]:40068 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o1beq-00064t-0i
	for submit <at> debbugs.gnu.org; Wed, 15 Jun 2022 18:38:42 -0400
Received: from lists.gnu.org ([209.51.188.17]:45682)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tgbugs@HIDDEN>) id 1o1beZ-00064S-GJ
 for submit <at> debbugs.gnu.org; Wed, 15 Jun 2022 18:38:38 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:47674)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <tgbugs@HIDDEN>) id 1o1beZ-0003As-1h
 for bug-gnu-emacs@HIDDEN; Wed, 15 Jun 2022 18:38:23 -0400
Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]:35401)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <tgbugs@HIDDEN>) id 1o1beV-0006Qf-Vi
 for bug-gnu-emacs@HIDDEN; Wed, 15 Jun 2022 18:38:22 -0400
Received: by mail-yw1-x112b.google.com with SMTP id
 00721157ae682-31336535373so75670937b3.2
 for <bug-gnu-emacs@HIDDEN>; Wed, 15 Jun 2022 15:38:17 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:from:date:message-id:subject:to;
 bh=PnuR3Uk9Jd+MPo2eakgZ+JVK1fx1B1xlXN9L8g6bGa4=;
 b=HoNp8wnIb6OsZbTUwcI7xoi5FQmLg93mN8vdgNPtWvOuEGQ7wQu2DF3dzttYYZQbqn
 fS7DVpj0zvwnZ5xAnWebcJPl/XM1BX+5Y+sbn0iXHaJGkyLV5YuD3FodC3H8YEwnYeI0
 Bn5B93c9ug3jvdANzU1w58/tc9Dc73ND5cjz0/gwqgxrRfBf6Iqb/Xb+Znkfgn+0nRcE
 YQXV1aplnSA+lhEFZUb9GOqHhCWG+KDWzWshukmigO7foKvaVyQN7ajJ/1n9Gxz7PPfn
 WI8OmL7QnGuE9DCFfpki7evJCVhDHPyA2gLcexP+Q3PU+tezKqRT5ftrc5AvH8Y9Xq1I
 SBMg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=PnuR3Uk9Jd+MPo2eakgZ+JVK1fx1B1xlXN9L8g6bGa4=;
 b=0qnb1SSxE7A5f/T6AJ6gJY2AXwKBPk/o87l5iIC6nsnxFOe/wx7RKm7YZM/X8/v444
 kqecjjrqTQ776D8MpcqiLGBJ8PxvUmx5nQ0B17sVI93HE6ZwwohTkiBQcoL4EaBGdr9S
 hl4N85XZdHoaktE7FQNmByJyURW9hkSGeAJ3AnlUKZ6+FU36Xv78LCzE+I6F6OPV3G9U
 NBm1pz8rhq2n+g7CeO/j7mMTRVer9tXAzZX2hmXCn3qo5R6XqrJF4iF5jR0q24AhiiY4
 o3SQ2e2bocGAZz6AsT5NZODNlPHOsKJHY5Gw8CNR8M6CHeRkfDSsHMsM9E4caQOzsW8b
 uGSw==
X-Gm-Message-State: AJIora/UVi7e0UgfaF5dj/fBYyryaX+N9ektXGisrBkdiUrUI4f2jy0c
 aerh2UQxixAOTBKkQ50OfYhVflVUTFtmGVUOQFXwG9pkaiI=
X-Google-Smtp-Source: AGRyM1vjoSLFn3/M5DiVwedCZca8j2YsOxIiTVvhZ5IXc76JDHG/3/RPr1kPR2zM/fBxNfRvG0lXUU3wTUQPc5v88pE=
X-Received: by 2002:a0d:e691:0:b0:314:34e7:c562 with SMTP id
 p139-20020a0de691000000b0031434e7c562mr2210317ywe.237.1655332695710; Wed, 15
 Jun 2022 15:38:15 -0700 (PDT)
MIME-Version: 1.0
From: Tom Gillespie <tgbugs@HIDDEN>
Date: Wed, 15 Jun 2022 15:38:05 -0700
Message-ID: <CA+G3_PNbd+ENNcCRn-kD_kQhiTjhwqU4EKFCk=MN66gxfR_W=g@HIDDEN>
Subject: src/process.c;
 make-process fails to clean up stderr process on early exit
To: Emacs Bug Report <bug-gnu-emacs@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
Received-SPF: pass client-ip=2607:f8b0:4864:20::112b;
 envelope-from=tgbugs@HIDDEN; helo=mail-yw1-x112b.google.com
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001,
 T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://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: <https://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: -2.3 (--)

If the primary subprocess created by make-process fails early then the
stderr process is not cleaned up and running kill-buffer on any stderr
buffer attached to the stderr process will prompt the user.

Two early exits that can cause the issue are

1. in make-process if the command is not found
report_file_error ("Searching for program", program);

2. in create_process if vfork fails
report_file_errno (CHILD_SETUP_ERROR_DESC, Qnil, vfork_errno);

I'm sure there are other failure modes that would trigger the issue.

I know of at least two ways to trigger the behavior that correspond to
those two lines. One is to provide a :command that does not exist, the
other is to call an executable file with a format that Emacs does not
understand (e.g. a valid sh file that is missing a shebang line).

The following example shows the behavior for a non-existent command on
master at 556c304007fbea1a552c65529fa86c0a5637b27b. When running it
the program will stop at a prompt to kill the " rc stderr" buffer.
#+begin_src bash
read -r -d '' example <<'EOF'
(let ((stderr-buffer (generate-new-buffer " rc stderr")))
  (unwind-protect
      (let ((process
             (make-process
              :name "process that never actually starts"
              :stderr stderr-buffer
              :command '("i_fail_before_there_can_be_a_return_code")))))
    (kill-buffer stderr-buffer)))
EOF
src/emacs -Q -batch -eval "${example}"
#+end_src

One potential fix for the issue would be to decouple :noquery for the
primary process from the stderr process and make the stderr process
query_on_exit always false. The user has no knowledge that the stderr
process exists and also has no way to reference it from their code. If
they want :noquery nil behavior an advanced user could always
construct the stderr process themselves.

If that is done then it seems that the stderr process will
automatically clean itself up once the stderr buffer is killed. This
seems easier than trying to catch all early exit cases that would
leave the stderr process alive during an early exit.




Acknowledgement sent to Tom Gillespie <tgbugs@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#56002; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Tue, 9 Aug 2022 19:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.