Hi,
Andy Wingo <[email protected]> skribis:
> + if (scm_ilength (scm_all_threads ()) != 1)
> + /* Other threads may be holding on to resources that Guile needs --
> + it is not safe to permit one thread to fork while others are
> + running.
> +
> + In addition, POSIX clearly specifies that if a multi-threaded
> + program forks, the child must only call functions that are
> + async-signal-safe. We can't guarantee that in general. The best
> + we can do is to allow forking only very early, before any call to
> + sigaction spawns the signal-handling thread. */
> + SCM_MISC_ERROR ("attempt to fork while multiple threads are running",
> + SCM_EOL);
Just like fork(2) lets one shoot themself in the foot, I think this is
beyond libguile’s scope. After all, libguile just wraps the OS
features, however crippled they may be.
Ludo’.