diff options
author | Neil Jerram <neil@ossau.uklinux.net> | 2008-02-07 01:24:31 +0000 |
---|---|---|
committer | Neil Jerram <neil@ossau.uklinux.net> | 2008-02-07 01:24:31 +0000 |
commit | 86a597f8b38ecc9de563977aa150ddff3771cadc (patch) | |
tree | f9bf7c8dc3fb7559f26c6221f448620b8e3934e3 /libguile/throw.c | |
parent | 0ea659f3ba4067425c4779da03e2e76e9b0651ca (diff) | |
download | guile-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.c | 12 |
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; } |