[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] GNU Guile branch, stable-2.0, updated. v2.0.1-145-gb8441

From: Ludovic Courtès
Subject: [Guile-commits] GNU Guile branch, stable-2.0, updated. v2.0.1-145-gb844157
Date: Thu, 30 Jun 2011 20:58:26 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

The branch, stable-2.0 has been updated
       via  b8441577f9954053a90981a5c134aa43f341f712 (commit)
      from  ea5c9ddcebe1d798fccfe9bbb1f4504e77fa2908 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit b8441577f9954053a90981a5c134aa43f341f712
Author: Ludovic Courtès <address@hidden>
Date:   Thu Jun 30 22:58:07 2011 +0200

    Fix `on_thread_exit' for canceled threads.
    * libguile/threads.c (on_thread_exit): Clear `t->guile_mode' upon
      entry.  This fixes a bug whereby `t->base' would be incorrect for
      canceled threads, leading to a misdiagnosed VM stack overflow.
      See <>
      for details.
      (scm_leave_guile_cleanup): Remove because it's unused.


Summary of changes:
 libguile/threads.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/libguile/threads.c b/libguile/threads.c
index c07c853..0c6b8b4 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -696,6 +696,10 @@ on_thread_exit (void *v)
   /* This handler is executed in non-guile mode.  */
   scm_i_thread *t = (scm_i_thread *) v, **tp;
+  /* If we were canceled, we were unable to clear `t->guile_mode', so do
+     it here.  */
+  t->guile_mode = 0;
   /* If this thread was cancelled while doing a cond wait, it will
      still have a mutex locked, so we unlock it here. */
   if (t->held_mutex)
@@ -835,12 +839,6 @@ scm_init_guile ()
-SCM_UNUSED static void
-scm_leave_guile_cleanup (void *x)
-  on_thread_exit (SCM_I_CURRENT_THREAD);
 struct with_guile_args
   GC_fn_type func;

GNU Guile

reply via email to

[Prev in Thread] Current Thread [Next in Thread]