Brian Cully <b...@spork.org> skribis: > Ludovic Courtès <l...@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.
That’s not the case in 0.9: it can process several requests concurrently. However, as I wrote in a followup message, the client socket created by (gnu services herd) lacks SOCK_NONBLOCK, which can thus block the process on reads and writes. Ludo’.