GNU bug report logs - #55356
join-thread unusable if timeout was hit

Previous Next

Package: guile;

Reported by: angry rectangle <angryrectangle <at> cock.li>

Date: Wed, 11 May 2022 02:30:01 UTC

Severity: normal

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: angry rectangle <angryrectangle <at> cock.li>
Subject: bug#55356: closed (Re: bug#61058: [PATCH v2] Fix asymetric mutex
 locking when joining thread.)
Date: Thu, 25 Jan 2024 22:15:02 +0000
[Message part 1 (text/plain, inline)]
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 55356 <at> debbugs.gnu.org.

-- 
55356: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55356
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Ludovic Courtès <ludo <at> gnu.org>
To: Olivier Dion <olivier.dion <at> polymtl.ca>
Cc: 55356-done <at> debbugs.gnu.org, 61058-done <at> debbugs.gnu.org
Subject: Re: bug#61058: [PATCH v2] Fix asymetric mutex locking when joining
 thread.
Date: Thu, 25 Jan 2024 23:14:26 +0100
Hello,

Olivier Dion <olivier.dion <at> 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’.

[Message part 3 (message/rfc822, inline)]
From: angry rectangle <angryrectangle <at> cock.li>
To: bug-guile <at> gnu.org
Subject: join-thread unusable if timeout was hit
Date: Tue, 10 May 2022 20:42:03 -0400
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



This bug report was last modified 1 year and 118 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.