summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Jerram <neil@ossau.uklinux.net>2008-02-07 01:02:33 +0000
committerNeil Jerram <neil@ossau.uklinux.net>2008-02-07 01:02:33 +0000
commitdcde80f0969d7aad0036e0dbb03e74966476a45e (patch)
tree865fca74327e8dd4b2188b0e118363a093966a36
parent595f4ed74bb93e9523f023813c2795165d82bf93 (diff)
downloadguile-dcde80f0969d7aad0036e0dbb03e74966476a45e.tar.gz
*** empty log message ***
-rw-r--r--NEWS1
-rw-r--r--THANKS1
-rw-r--r--libguile/ChangeLog6
-rw-r--r--libguile/throw.c10
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 <joolean@gmail.com>
+
+ * 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 <neil@ossau.uklinux.net>
* 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;
}