Hello, When forking, the finalization pipe file descriptors are inherited. If the child process spawns a finalization thread, it will use a copy of its parent finalization pipe file descriptors. Hence, if the parent tries to stop its finalization thread, by forking another process for instance, it may stop the child finalization thread and hang forever waiting for its own finalization thread to stop. Here's a small reproducer attached. On my machine, the program hangs around iteration 100. Note that this has previously been discussed here[1]. The attached patch should fix this by closing the finalization pipe file descriptor copies in the child right after forking and opening a new pipe by calling scm_init_finalizer_thread. Thanks, Mathieu [1]: https://issues.guix.gnu.org/41948