Subject: bug#31785: Multiple client 'build-paths' RPCs can lead to daemon deadlock

From: Ludovic Courtès <[email-masked]>
Date: Mon, 30 Dec 2024 00:57:54 +0100

Hey Reepca,

Reepca Russelstein <[email-masked]> skribis:

> Here is the reproducer:

Brilliant!  It works wonderfully well.

I moved it to its own file to limit interference with others—plus it’s
one of our oldest bugs so it deserves it. ;-)

> P.S: If in attempting to turn this into a proper test, you try using the
> timeout argument to join-thread, be aware that a second attempt at
> calling join-thread on the same thread will fail with "In procedure
> lock-mutex: mutex already locked by thread".  This is because
> join-thread in (ice-9 threads) has a bug in it: unlock-mutex is not
> called in the "else" case of the cond.  I am mentioning this here in
> case I forget to make a proper report of it.

Heh, how many bugs did you find while chasing this one?

I pushed your patch together with the reproducer as
78da6951787f07e9460091885d7a9eb3e667b512.

Now we have to update the ‘guix’ package, though perhaps that’ll have to
wait until next year, we’ll see.

Thanks a lot for your work and for your support!  You’re my hero.  :-)

Ludo’.