Hello, "W. Kosior" via Bug reports for GNU Guix <[email protected]> skribis:
> The `unshare' system call with `CLONE_NEWUSER' cannot be used in multithreaded > programs. Guile VM's automatic GC thread creation used to lead to > nondeterministic failures in container creation, which uses this system call. > > * gnu/build/linux-container.scm (run-container): Disable GC in child after > `(clone)' and re-enable after `(unshare)'. > > Change-Id: I9df5412102509c13f74ab9911f6f06c0152d0a4f Excellent! This was discussed in <https://codeberg.org/guix/guix/issues/1169> and we suspected something like this but didn’t get this far (BTW, perhaps we can follow up there if that’s fine with you). The thing is that ‘GC_disable’ does not terminate marker threads AFAICS, so perhaps it should actually be called before ‘clone’ to ensure no marker thread is created in the child process? WDYT? Thank you for what must have been long debugging sessions! Ludo’.
