From dcde80f0969d7aad0036e0dbb03e74966476a45e Mon Sep 17 00:00:00 2001 From: Neil Jerram Date: Thu, 7 Feb 2008 01:02:33 +0000 Subject: [PATCH] *** empty log message *** --- NEWS | 1 + THANKS | 1 + libguile/ChangeLog | 6 ++++++ libguile/throw.c | 10 +++------- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index c82310351..c8221df40 100644 --- a/NEWS +++ b/NEWS @@ -23,6 +23,7 @@ system and library calls. ** Fixed compilation of `numbers.c' with Sun Studio (Solaris 9) ** Fixed wrong-type-arg errors when creating zero length SRFI-4 uniform vectors on AIX. +** Fixed a deadlock that occurs upon GC with multiple threads. * New modules (see the manual for details) diff --git a/THANKS b/THANKS index 035d3ace2..9d6f4b19d 100644 --- a/THANKS +++ b/THANKS @@ -2,6 +2,7 @@ Contributors since the last release: Rob Browning Ludovic Courtès + Julian Graham Stefan Jahn Neil Jerram Antoine Mathys diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 18e473b79..4aef98c2e 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,9 @@ +2008-02-07 Julian Graham + + * throw.c (make_jmpbuf): Don't enter critical section during thread + spawn -- there is a possibility of deadlock if other threads are + exiting. + 2008-02-06 Neil Jerram * gc-malloc.c (scm_gc_malloc): Return NULL if requested size is 0. diff --git a/libguile/throw.c b/libguile/throw.c index 115bb0c03..49a48e245 100644 --- a/libguile/throw.c +++ b/libguile/throw.c @@ -71,13 +71,9 @@ static SCM make_jmpbuf (void) { SCM answer; - SCM_CRITICAL_SECTION_START; - { - SCM_NEWSMOB2 (answer, tc16_jmpbuffer, 0, 0); - SETJBJMPBUF(answer, (jmp_buf *)0); - DEACTIVATEJB(answer); - } - SCM_CRITICAL_SECTION_END; + SCM_NEWSMOB2 (answer, tc16_jmpbuffer, 0, 0); + SETJBJMPBUF(answer, (jmp_buf *)0); + DEACTIVATEJB(answer); return answer; }