Re: Porting skalibs to GNU Hurd

From: Laurent Bercot <ska-skaware_at_skarnet.org>
Date: Thu, 17 Oct 2019 19:51:55 +0000

>The errno I got on Hurd is `EIEIO 1073741928 Computer bought the
>farm`... Seems a Hurd specific errno...

That is really non-conformant, and deserves to be reported to the Hurd
team.

What is happening is that "control" is a named pipe, and the attempted
operation is open(control, O_WRONLY | O_NONBLOCK). If the service isn't
running (which is the normal case here because it's a check performed at
start, to avoid duplicating a service that is already running), there is
no reader on the "control" fifo. And POSIX is very clear on what must
happen in that case:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html
says:

[ENXIO]
O_NONBLOCK is set, the named file is a FIFO, O_WRONLY is set, and no
process has the file open for reading.

which is *exactly* what's happening here. Hurd should return -1 ENXIO,
unless there is a real problem with the underlying file system - and the
test your patch comments exists to catch such problems.

I think your patch is the correct workaround (although you could
specifically catch ENXIO *and* EIEIO instead, and still die on other
error
codes), but I'm not upstreaming it because the problem isn't in s6.
I would suggest keeping the patch in your tree until Hurd is fixed.

--
Laurent
Received on Thu Oct 17 2019 - 19:51:55 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:38:49 UTC