emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: emacs | Pipeline #8399 has failed for master | ee0e259e


From: Robert Pluim
Subject: Re: emacs | Pipeline #8399 has failed for master | ee0e259e
Date: Tue, 05 Jan 2021 10:42:53 +0100

Philipp Stephani <p.stephani2@gmail.com> writes:

>> The process-test-stderr-buffer timeout I can't explain: nothing there
>> can wait longer than 2 seconds (unless itʼs 'make-process' thatʼs
>> timing out?)
>
> make-process can in theory deadlock on BSD-like systems due to a race
> between setting the close-on-exec flag and other fork+exec
> combinations. That's rather unlikely though.
> But maybe there's a race between accept-process-output and calling the
> sentinel so that the sentinel is called too early, and then
> accept-process-output blocks? AFAIK, when splitting stderr and stdout,
> one has to wait separately for the two involved processes:
> (while (accept-process-output process))
> (while (accept-process-output stderr-process))

The code is this:

    (while (not (or sentinel-called
                    (> (- (float-time) start-time)
                       process-test-sentinel-wait-timeout)))
      (accept-process-output))

You mean between checking 'sentinel-called' and
'accept-process-output', the sentinel is called, the process exit's and
then 'accept-process-output' hangs? I guess thatʼs possible. We could
add a timeout to accept-process-output to verify.

To your other point: thereʼs only one process involved here, stderr is
being sent to a separate buffer (although using a separate process is
possible as well).

Robert



reply via email to

[Prev in Thread] Current Thread [Next in Thread]