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’.


Reply via email to