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

From: [email-masked] (Ludovic Courtès)
Date: Wed, 09 May 2018 11:23:59 +0200

Hello Andy!

Andy Wingo <[email-masked]> skribis:

> On Mon 30 Apr 2018 23:39, [email-masked] (Ludovic Courtès) writes:
>
>> So the problem, AIUI, is that psyntax evaluates syntax parameters using
>> ‘primitive-eval’ (via ‘eval-local-transformer’), but memoization in
>> (ice-9 eval) is not thread-safe, hence the random crashes.
>
> Sorry I've been a bit AWOL here... if this diagnosis is correct, then
> the problem is ultimately the memoization that needs to be thread-safe,
> right?

It looks like it, yes.

> 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?

Thanks for your feedback,
Ludo’.