Subject: bug#61024: 29.0.60; [PATCH] Eshell errors out when trying to redirect output of a remote process

From: Michael Albinus <[email-masked]>
Date: Mon, 23 Jan 2023 16:50:14 +0100

Eli Zaretskii <[email-masked]> writes:

Hi,

>>    ~ $ cd /sudo::
>>    /sudo:root@host:~ # *echo hi there > #<foo>
>>    Wrong type argument: "bufferp echo-stderr"
>>
>> (Any other Tramp method should reproduce this issue.) That's because the
>> echo command is being redirected to two places: stdout is going to the
>> buffer "foo", and stderr is going to the Eshell buffer (via a pipe
>> process). However, that doesn't work for Tramp processes.
>>
>> Attached is a fix with a test. I think this should definitely go in
>> Emacs 29, since it's a pretty bad regression.
>
> Fine by me, unless Michael objects or has better ideas.

Pipe processes are always tricky for Tramp. I *believe* redirecting
stdout and stderr to different buffers shall work, see "test6" of
tramp-test30-make-process. But I remember also that this was painful to
implement and test.

>> I'm actually surprised no one has filed a bug on this already.
>
> Maybe it tells us how many people use this combination?

So do we want to reopen this can of worms, and see what happens with
Tramp? But perhaps it is a problem in Eshell, which tries to create its
own pipe process?

Best regards, Michael.