summaryrefslogtreecommitdiff
path: root/libguile/throw.c
diff options
context:
space:
mode:
authorNeil Jerram <neil@ossau.uklinux.net>2008-02-07 01:24:31 +0000
committerNeil Jerram <neil@ossau.uklinux.net>2008-02-07 01:24:31 +0000
commit86a597f8b38ecc9de563977aa150ddff3771cadc (patch)
treef9bf7c8dc3fb7559f26c6221f448620b8e3934e3 /libguile/throw.c
parent0ea659f3ba4067425c4779da03e2e76e9b0651ca (diff)
downloadguile-86a597f8b38ecc9de563977aa150ddff3771cadc.tar.gz
* threads.c (do_thread_exit, scm_cancel_thread,
scm_set_thread_cleanup_x, scm_thread_cleanup): Lock on thread-specific admin mutex instead of `thread_admin_mutex'. * threads.h (scm_i_thread)[admin_mutex]: New field. * throw.c (make_jmpbuf): Don't enter critical section during thread spawn -- there is a possibility of deadlock if other threads are exiting.
Diffstat (limited to 'libguile/throw.c')
-rw-r--r--libguile/throw.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/libguile/throw.c b/libguile/throw.c
index 02503c36a..55d83d41a 100644
--- a/libguile/throw.c
+++ b/libguile/throw.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2003, 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2003, 2004, 2006, 2008 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -75,13 +75,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;
}