Hi, raid5atemyhomework <raid5atemyhomew...@protonmail.com> skribis:
> Now, let us combine this with the second feature (really a bug): GNU > shepherd is a simple, single-threaded Scheme program. That means that > if the single thread enters an infinite loop (because of a Shepherd > service description that entered an infinite loop), then Shepherd > itself hangs. You’re right that it’s an issue; in practice, it’s okay because we pay attention to the code we run there, but obviously, mistakes could lead to the situation you describe. It’s a known problem and there are plans to address it, discussed on this list a few times before. The Shepherd “recently” switched to ‘signalfd’ for signal handling in the main loop, with an eye on making the whole loop event-driven: https://issues.guix.gnu.org/41507 This will address this issue and unlock things like “socket activation”. That said, let’s not lie to ourselves: the Shepherd’s design is simplistic. I think that’s okay though because there’s a way to address the main issues while keeping it simple. Thanks, Ludo’.