Hi there! I have some good news! Time has passed but we didn’t remain idle :-) and the scary bug at <https://issues.guix.gnu.org/55441> is finding a happy end!
First, Josselin introduced bindings to ‘posix_spawn’¹ in Guile, to use as the foundation of a new ‘spawn’ procedure, but also for ‘system*’, ‘open-pipe*’, & co.: https://issues.guix.gnu.org/52835 That’s big deal because ‘posix_spawn’ is usable in a multi-threaded context (POSIX doesn’t explicitly say so, but it stems from the fact that what happens in the child process before ‘exec’ is “safe”, and in particular Guile code doesn’t get a chance to run). Guile 3.0.9 released yesterday includes those changes. Then we have this commit, where I changed ‘open-bidirectional-pipe’ in (guix inferior) to use ‘spawn’ where available: fed3953d70 inferior: Use 'spawn' on Guile 3.0.9+. That solves the problem that led to this bug. Last, we have this update: 230de2e94b gnu: guix: Update to d5fece6. It gives us a ‘guix’ package that contains the ‘spawn’ fix and removes ‘guix-for-cuirass’, which is now longer necessary. Thanks everyone for the team work, very nice when working on touch issues like this one! Ludo’. ¹ https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html