Mark H Weaver <m...@netris.org> skribis: > I haven't yet investigated, but my strong suspicion is that this is due > to the fact that Guile's module system is not thread safe. More > specifically, when a new module is created, it mutates the global > directory of modules in a way that is not thread safe. > > New modules are created by 'compile-file', both for the module being > compiled and for any imported modules that haven't been previously > loaded. Unfortunately, this means that this approach of compiling files > in multiple threads within a single guile process is not safe. There > are likely to be random crashes and corruptions.
Right. This is one of the concerns I raised before I forgot again. ;-) https://lists.gnu.org/archive/html/guix-devel/2015-11/msg00359.html Taylan writes: > The latest version of the patch loads all needed modules first, in the > main thread, and then compiles the files corresponding to the modules in > parallel. Does that still lead to mutation in the directory of modules > in the parallelized segment of the code? It seems to be safe, but we’re treading in a risky zone. We’re pushing ‘compile-file’ and related code to its limits. It would be great to address these issues in Guile itself. Ludo’.