bug-hurd
[Top][All Lists]
Advanced

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

Re: vim testsuite: Test_keep_pty_open V2


From: Samuel Thibault
Subject: Re: vim testsuite: Test_keep_pty_open V2
Date: Fri, 7 Feb 2025 13:57:01 +0100

Zhaoming Luo, le ven. 07 févr. 2025 18:44:50 +0800, a ecrit:
> This is V2 of figuring out the issue. V1 is abandoned due to my mistake,
> but this time I can confirm the source of issue. This time I ran
> rpctrace directly on vim, and used two printfs to locate the isatty().
> 
> ```
> printf ("Start isatty!\n");
> if (mch_isatty(in))
>     channel->ch_to_be_closed |= (1U << PART_IN);
> printf ("Finish isatty!\n");
> ```
> 
> rpctrace output:
> ```
> ...
> 30<--44(pid920)->io_write_request ("Start isatty!\n" -1) = 0 14
> 56<--24(pid920)->term_getctty () = 0x4000002d (Operation not supported)
> 30<--44(pid920)->io_write_request ("Finish isatty!\n" -1) = 0 15
> ...
> ```
> 
> The error seems to be from [2].

Indeed, if it was plugged to another translator you'd get a mig bad id
error.

My guess is that it's cred->pi.class != tty_class that fails, indeed:

        int ret = openpty(&master, &slave, s, &term, &win);
        printf("%d\n", isatty(master));
        printf("%d\n", isatty(slave));

says 0 for master on the Hurd while it says 1 on Linux

The pi.class != tty_class condition was previously because of a lookup,
but nowadays with the protected payloads we didn't need a lookup any
more and it was replaced with a check that we find cred in the proper
place. I'd say we should also accept the class being pty_class, it
does not seem it would harm: in the uses of term_getctty that I can see,
it matches the obtained cttyid with the one of the process, or it's an
explicit request.

> [0]: https://mail.gnu.org/archive/html/bug-hurd/2025-02/msg00009.html
> [1]: https://github.com/vim/vim/blob/master/src/channel.c#L1394
> [2]: https://git.savannah.gnu.org/cgit/hurd/hurd.git/tree/term/users.c#n362

Samuel



reply via email to

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