Subject: bug#77634: [shepherd] Test failures on GNU/Hurd

From: Ludovic Courtès <[email-masked]>
Date: Sun, 13 Apr 2025 23:09:07 +0200

Hello,

Thanks for the bug report!

yelninei--- via Bug reports for GNU Guix <[email-masked]> skribis:

> Also I had to cheat a bit to get past automakes "t/output-order.sh" test where the guile build driver is leaking "GC Warning: Repeated allocation of very large block" onto stderr confusing the test (similar problem to https://issues.guix.gnu.org/73181). I added env["GC_LARGE_ALLOC_WARN_INTERVAL"] = "100" to DerivationGoal::startBuilder() and used the slightly patched daemon to build automake without changing the derivation.

Uh, sounds terrible.

> + herd -s t-socket-8783 start log-directory-not-writable
> ++ cat t-log-8783
> 2025-04-08 07:53:13 GNU Shepherd 1.0.3 (Guile 3.0.9, i586-unknown-gnu)
> 2025-04-08 07:53:13 Starting service root...
> 2025-04-08 07:53:13 Service root started.
> 2025-04-08 07:53:13 Service root running with value #<<process> id: 8788 command: #f>.
> 2025-04-08 07:53:13 Service root has been started.
> 2025-04-08 07:53:13 Configuration successfully loaded from 't-conf-8783'.
> 2025-04-08 07:53:13 Starting service log-directory-does-not-exist...
> 2025-04-08 07:53:13 Service log-directory-does-not-exist has been started.
> 2025-04-08 07:53:13 Service log-directory-does-not-exist started.
> 2025-04-08 07:53:13 Service log-directory-does-not-exist running with value #<<process> id: 8792 command: ("/gnu/store/45ssyl3mps6yvh0k0zsgxs8wjqk9jd6r-bash-minimal-5.1.16/bin/bash" "-c" "while true; do echo logging; sleep 0.2; done")>.
> 2025-04-08 07:53:13 Starting service log-directory-not-writable...
> Terminated
> ++ rm -f t-log-8783 t-socket-8783 t-conf-8783 t-pid-8783
> ++ rm -rf /tmp/guix-build-shepherd-1.0.3.drv-0/shepherd-1.0.3/t-log-directory-8783
> ++ kill 8788
> FAIL tests/logging-failure.sh (exit status: 124)

Apparently the ‘shepherd’ process was terminated by the ‘timeout’
command, meaning that the test hanged for more than 3 minutes.

I failed to reproduce it on Linux (without ‘signalfd’ and without
‘PR_SET_CHILD_SUBREAPER’), and I have yet to build dependencies in my
childhurd to try it natively…

> 2025-04-08 07:56:27 PID #<<process> id: 10610 command: ("/gnu/store/45ssyl3mps6yvh0k0zsgxs8wjqk9jd6r-bash-minimal-5.1.16/bin/bash" "-c" "ulimit -n >/tmp/guix-build-shepherd-1.0.3.drv-0/shepherd-1.0.3/t-service-nofiles-10595; sleep 600 & echo $! > /tmp/guix-build-shepherd-1.0.3.drv-0/shepherd-1.0.3/t-service-pid-10595")> (test) is dead!

[...]

> FAIL tests/forking-service.sh (exit status: 1)

This one is a bug fixed in Shepherd commit
82a333f8e83b4abbd19dbc6c9bab1b7d62cced0c.

> + herd -s t-socket-12440 start logger
> Starting service system-log...
> Service system-log has been started.
> Service system-log started.
>
> ;;; (message-destination-> ("/tmp/guix-build-shepherd-1.0.3.drv-0/shepherd-1.0.3/t-syslog-12440"))
> Service system-log running with value #<system-log 39f82c0>.
> Starting service logger...
> Service logger has been started.
> + herd -s t-socket-12440 status logger
> + grep stopped
> ++ zcat 't-log-12440.*'
> gzip: t-log-12440.*.gz: No such file or directory
> Terminated

[...]

> FAIL tests/services/system-log.sh (exit status: 124)

This one also hanged more than 3m it seems.

To be continued…

Ludo’.