[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#49496: 28.0.50; process-tests/fd-setsize-no-crash/make-network-proce
From: |
Eli Zaretskii |
Subject: |
bug#49496: 28.0.50; process-tests/fd-setsize-no-crash/make-network-process hangs on Cygwin |
Date: |
Fri, 09 Jul 2021 21:18:43 +0300 |
> From: Ken Brown <kbrown@cornell.edu>
> Date: Fri, 9 Jul 2021 14:01:33 -0400
>
> It is possible to work around this problem by disabling the credential
> exchange
> as in the following patch:
>
> diff --git a/src/process.c b/src/process.c
> index b8c3e4ecfb..01548c8ab5 100644
> --- a/src/process.c
> +++ b/src/process.c
> @@ -3355,6 +3355,12 @@ connect_network_socket (Lisp_Object proc, Lisp_Object
> addrinfos,
> xerrno = EMFILE;
> continue;
> }
> +#ifdef CYGWIN
> + /* Avoid possible hang in connect/accept. */
> + if (family == AF_LOCAL && p->socktype == SOCK_STREAM
> + && setsockopt (s, SOL_SOCKET, SO_PEERCRED, 0, 0) < 0)
> + report_file_error ("Cannot disable credential exchange", Qnil);
> +#endif
> }
> if (p->is_non_blocking_client && ! (SOCK_NONBLOCK && socket_to_use <
> 0))
>
> But this seems too drastic just to fix a potential problem that doesn't seem
> to
> occur in practice, but only in the contrived situation of
> process-tests/fd-setsize-no-crash/make-network-process. So my preference is
> to
> simply skip that test on Cygwin.
>
> OK?
Yes, OK. But please explain there in a comment why we skip that, with
a reference to this bug.
(FWIW, I consider the process-tests suite to be not useful enough, in
that it many times tests behavior that is only guaranteed to happen on
GNU/Linux, and is not really required, nor should be expected, in
portable Lisp programs. So it doesn't surprise me that some of the
tests fail on some systems.)