bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#56025: 29.0.50; em-extpipe-test-2 times out on EMBA and Cygwin


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 | rev

However, 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.





reply via email to

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