wingo pushed a commit to branch wip-whippet
in repository guile.

commit b585ccfa8fec1cc3bf1c8dfba87c83367d68e1ef
Author: Andy Wingo <wi...@pobox.com>
AuthorDate: Tue Jul 15 11:20:22 2025 +0200

    Deactivate mutator while stopping signal thread
    
    * libguile/scmsigs.c (stop_signal_delivery_thread): Deactivate mutator,
    so that we don't deadlock.
---
 libguile/scmsigs.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libguile/scmsigs.c b/libguile/scmsigs.c
index 88fbd760c..3a9d6dc4a 100644
--- a/libguile/scmsigs.c
+++ b/libguile/scmsigs.c
@@ -252,6 +252,8 @@ scm_i_ensure_signal_delivery_thread ()
 static void
 stop_signal_delivery_thread ()
 {
+  scm_thread *thr = SCM_I_CURRENT_THREAD;
+  gc_deactivate (thr->mutator);
   scm_i_pthread_mutex_lock (&signal_delivery_thread_mutex);
   if (signal_delivery_thread_state != RUNNING)
     goto done;
@@ -272,6 +274,7 @@ stop_signal_delivery_thread ()
 
  done:
   scm_i_pthread_mutex_unlock (&signal_delivery_thread_mutex);
+  gc_reactivate (thr->mutator);
 }
 
 static int

Reply via email to