Subject: bug#27476: libguile/memoize.c is not thread safe, so syntax parameter expansion is not thread-safe

From: Andy Wingo <[email-masked]>
Date: Wed, 09 May 2018 12:18:01 +0200

On Wed 09 May 2018 11:23, [email-masked] (Ludovic Courtès) writes:

>> Is the memoization you are referring to the "set!" in the "lazy" form in
>> ice-9/eval.scm ?  Or something else?  FWIW I would not think the "set!"
>> could be the issue, at least on x86, but who knows.
>
> Actually I’m not sure exactly.  ‘memoize-expression’ itself is
> side-effect-free, right?

As far as I know (and I had a look this morning), yes.  It takes a
Tree-IL input and returns a memoized output.  The internal mutation that
exists in the evaluator is just the lazy "compilation" (see the
invocations of the "lazy" form).

Of course the function being evaluated could mutate shared state as
well!

Andy