GNU bug report logs -
#63190
[Shepherd] Nested calls lead to a hang
Previous Next
Reported by: Bruno Victal <mirai <at> makinata.eu>
Date: Sun, 30 Apr 2023 15:22:01 UTC
Severity: normal
Tags: notabug
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
Ludovic Courtès <ludo <at> gnu.org> writes:
> (Whether that leads to a deadlock depends; at first sight, I’d
> say
> there’s no reason for this to deadlock in general, but you can
> of course
> end up with a logic bug like A starts B, which spawns a client
> to start
> A, which doesn’t start because it’s waiting for B.)
It's been a while since I looked at this, but my rough
recollection is the deadlock occurs because shepherd can only
process one request over its socket at a time. If that request
happens to *also* try to talk over the same socket, it'll hang
indefinitely waiting for its turn to come off the accept queue.
I'm not sure there's much to be done in the 0.9 version of
shepherd about it. I'm hoping that 0.10 and up will be able to
cope with situations like this without completely deadlocking the
shepherd itself. It's obviously pretty bad if pid 1 hangs for any
reason at all, even user error.
-bjc
This bug report was last modified 2 years and 71 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.