Hi, Mathieu Othacehe skribis: > Those two finalizer threads share the same pipe. When we try to > stop the finalizer thread in Shepherd, right before forking a new > process, we send a '\1' byte to the finalizer pipe. > > 1 write(6, "\1", 1 > > > which is received by (line 183597): > > 253 <... read resumed>"\1", 1) = 1 > > the marionette finalizer thread. Then, we pthread_join the Shepherd > finalizer thread, which never stops! Quite unfortunate. And here’s the patch for this pipe: it closes the finalizer pipe pre-fork, and it gets reopened lazily. Together with the ‘sleep_pipe’ patch, it appears to fix the problems described here. Ludo’.