Subject: bug#65463: Herd `fport_write: Broken pipe` error when running `guix home reconfigure`

From: Ludovic Courtès <[email-masked]>
Date: Wed, 20 Mar 2024 19:07:56 +0100

Hi Richard and all,

Richard Sent <[email-masked]> skribis:

> However, when fish is in charge of executing on-first-login, stdout and 
> stderr for the user shepherd get directed to a pipe instead of 
> /dev/null.
>
> fish fds, both stdout and stderr point to a pipe:
>
> $ ls -l /proc/<HERD_PID>/fd)
> lr-x------   1 richard        users    64 2023-11-16 14:47 0 -> 
> /dev/null
> l-wx------   1 richard        users    64 2023-11-16 14:47 1 -> 
> pipe:[41039]
> l-wx------   1 richard        users    64 2023-11-16 14:47 2 -> 
> pipe:[41039]
> l-wx------   1 richard        users    64 2023-11-16 14:47 6 -> 
> /home/richard/.local/state/log/shepherd.log
> // ...
>
>
> fish login shell strace of herd:
>
> 21:46:43 write(1, "Spawning systemd-style service 
> /gnu/store/2zgdxhbnkz8fgsb1l4xydm3nbvj66mih-gnupg-2.2.39/bin/gpg-agent.\n", 
> 103) = -1 EPIPE (Broken pipe)

(I assume this is the strace of shepherd, not herd.)

Maybe we should unconditionally run shepherd with stdout/stderr
redirected to /dev/null?

That would sidestep the problem and it’s probably a good idea anyway.

WDYT?

Ludo’.