GNU bug report logs -
#77373
[shepherd] Deadlock between service-controller and service-builtin-logger
Previous Next
Reported by: nathan <nathan_mail <at> nborghese.com>
Date: Sat, 29 Mar 2025 23:42:02 UTC
Severity: normal
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
Hey,
nathan <nathan_mail <at> nborghese.com> skribis:
> happy sunday
>
>> Yes, but only if ‘pid’ hasn’t been cached before, which I think would
>> mean that not a single line was logged before stopping the service.
>
> doesn't get cached if no output is read while service is 'running.
> fork+exec-command: if the pid-file doesnt show up immediately, there is an entire 1 second sleep. The logger can easily read the output while the service is still in 'starting
> also: if the service doesn't flush stdout, we dont get its output until it dies. ('stopping)
>
>> Could you explain exactly how that happens (sequence of actions leading
>> to the deadlock) and share the relevant /var/log/messages excerpt?
>
> ./shepherd --socket /tmp/s2/mysocket --config <path>
Yup, I see.
I believe a5d9a41aa0bfadea9617df4411b86c6ea0c525bd fixes it. I added a
test case that’s similar to what you have: the service only starts
logging when being stopped, which makes it very likely that the logger
will receive lines of log after the service has terminated. It would
trigger the deadlock 100% of the time.
Let me know what you think.
Thanks a lot!
Ludo’.
This bug report was last modified 101 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.