--- Begin Message ---
Subject: |
[PATCH] Fix asymetric mutex locking when joining thread. |
Date: |
Wed, 25 Jan 2023 10:24:03 -0500 |
From: Olivier Dion <olivier-dion@proton.me>
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.
---
module/ice-9/threads.scm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/module/ice-9/threads.scm b/module/ice-9/threads.scm
index c42bd266f..962caee70 100644
--- a/module/ice-9/threads.scm
+++ b/module/ice-9/threads.scm
@@ -197,7 +197,9 @@ terminates, unless the target @var{thread} has already
terminated."
(wait-condition-variable cv mutex timeout)
(wait-condition-variable cv mutex))
(lp))
- (else timeoutval))))))
+ (else
+ (unlock-mutex mutex)
+ timeoutval))))))
(define* (try-mutex mutex)
"Try to lock @var{mutex}. If the mutex is already locked, return
--
2.39.1
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#61058: [PATCH v2] Fix asymetric mutex locking when joining thread. |
Date: |
Thu, 25 Jan 2024 23:14:26 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hello,
Olivier Dion <olivier.dion@polymtl.ca> 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’.
--- End Message ---