GNU bug report logs -
#76338
shepherd restarts service during shutdown and then waits forever
Previous Next
Reported by: Dariqq <dariqq <at> posteo.net>
Date: Sun, 16 Feb 2025 14:40:03 UTC
Severity: grave
Tags: patch
Merged with 76368
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Hi Ludo,
On 16.02.25 18:23, Ludovic Courtès wrote:
> Hi,
>
> Dariqq <dariqq <at> posteo.net> skribis:
>
>> The issue is that thermald (and possibly other services) don't depend
>> on user-processes service. Don't know why I had no problems until now.
>
> This should be fixed: they should all depend on ‘user-processes’.
>
For the record I will not be verifying every daemon service manually in
the guix codebase whether it correctly depends on user-processes. Many
do directly however also a lot only do transitively. The problematic
cases most likely are where a service sets no requirement field at all
The two services that I know of are thermald and virtlogd.
Also the purpose of the user-processes service (and maybe also the
filesystems) service as synchronization targets are documented only in
their definition and implicitly with the shepherd graph image.
System-shepherd services that dont depend on anything are probably a bad
idea and seems like a very common mistake for (new) users implementing
their own services.
Maybe this should be a a more explicit note in the documentation for
shepherd-service-requirement and/or a small paragraph in the shepherd
services intro?
> Probably the bug you’re seeing here was revealed by
> <https://issues.guix.gnu.org/75829>.
>
Is there a reason for user-processes to block on waiting for every
process execpt PID1 to exit or why during the (sleep 1) calls other
services (that falsely dont depend on user-processes) are not being
stopped in the meantime which would help resolve the deadlock?
This causes every daemon indirectly to depend on user-processes but
shepherd may not know about it.
> But perhaps shepherd should also just disable all services when shutting
> down so that respawning doesn’t happen.
I guess shepherd is just doing its duty as a service manager. Something
else send SIGTERM/SIGKILL and shepherd kindly respawns it as instructed.
But insisting on restarting a service seems a bit pointless to me during
shutdown/reboot where everything will be terminated anyway.
>
> Ludo’.
This bug report was last modified 81 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.