|
From: | Jim Porter |
Subject: | bug#56025: 29.0.50; em-extpipe-test-2 times out on EMBA and Cygwin |
Date: | Thu, 30 Jun 2022 20:52:59 -0700 |
On 6/27/2022 2:19 PM, Ken Brown wrote:
On 6/27/2022 3:18 PM, Jim Porter wrote:I'd be very hesitant to do this, since as you mention above, this seems like a timing issue, and it's entirely possible that there are other, more widespread issues on Cygwin here. We'd also want to check the system that the process is actually running on; otherwise, remoting into a Cygwin system (via Tramp) would still exhibit the problem. I'll see if I can get a Cygwin environment up to test things out in the next week-ish.OK, thanks. Let me know if you need any help with that.
Ok, I've got Cygwin set up (though I'm just using the prebuilt Cygwin Emacs for now). I can confirm that the following hangs until I send another EOF via `C-c C-d':
echo hi | revHowever, if I evaluate the following first, the above command works just fine:
(add-to-list 'eshell-needs-pipe "rev")Normally, Eshell starts each process using ptys to control them. However, the above Elisp code tells Eshell to use a pipe for "rev"[1]. I'm not totally clear on all the subtleties here, but it seems to me that it would make more sense for rev to use a pipe for its stdin and a pty for its stdout. That's not possible with subprocesses in Emacs though (as far as I know).
However, I don't think this fully answers things, since I also see inconsistent results if I run "echo hi | rev" a bunch of times. Sometimes it prints "ih" and then I need to hit `C-c C-d` once to stop it. Other times it doesn't print anything and I need to hit `C-c C-d' twice. There must be some kind of race condition, maybe in Emacs's src/process.c?
Hopefully this helps get us closer to a proper answer here though... [1] Only when rev is being piped *to* in an Eshell pipeline.
[Prev in Thread] | Current Thread | [Next in Thread] |