>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