Subject: bug#55356: closed (Re: bug#61058: [PATCH v2] Fix asymetric mutex locking when joining thread.)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 25 Jan 2024 22:15:02 +0000

Your bug report

#55356: join-thread unusable if timeout was hit

which was filed against the guile package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
55356: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55356
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#61058: [PATCH v2] Fix asymetric mutex locking when joining thread.
From: Ludovic Courtès <[email-masked]>
To: Olivier Dion <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Thu, 25 Jan 2024 23:14:26 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

Olivier Dion <[email-masked]> skribis:

> If `join-thread' timeout, the thread mutex is not unlocked, resulting in
> deadlock to the next call to it or deadlock of the thread itself when it
> terminates.
>
> Thus, always unlock the mutex.
>
> Fix: #55356
>
> * module/ice-9/threads.scm (join-thread): Always unlock thread mutex.
> * test-suite/tests/threads.test (join-thread): New test to ensure the
> mutex is released

Pushed as 455ee49f5573baa1bc5237a8d49083ce588a13ee with a ‘NEWS’ entry
and an additional comment in the test.

Thanks!

Ludo’.

Subject: join-thread unusable if timeout was hit
From: angry rectangle <[email-masked]>
To: [email-masked]
Date: Tue, 10 May 2022 20:42:03 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

If join-thread is called after a previous call to join-thread hits the timeout, a "mutex already locked by thread" error is thrown.

Working example:

(use-modules (ice-9 threads))
(define t (call-with-new-thread
           (lambda _
             (let r ()
               (sleep 1)
               (r)))))
(join-thread t (current-time))
(join-thread t (current-time)) ;; exception here

my guile version: latest git. cc455976813ab94de121395982435430874cbf58
my OS: guix on amd64