From f1b7eaaa1a78f2a0b1be1f35ec583349322db02e Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 5 Nov 2016 00:26:29 +0100 Subject: [PATCH] Remove fat mutex abandoned mutex error * libguile/threads.c (fat_mutex_lock): Remove abandoned mutex error, as SRFI-18 is responsible for this. * test-suite/tests/threads.test: Update test. --- libguile/threads.c | 11 ----------- test-suite/tests/threads.test | 13 ++++--------- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/libguile/threads.c b/libguile/threads.c index d15c4e76e..6263519a0 100644 --- a/libguile/threads.c +++ b/libguile/threads.c @@ -1131,8 +1131,6 @@ SCM_DEFINE (scm_make_recursive_mutex, "make-recursive-mutex", 0, 0, 0, } #undef FUNC_NAME -SCM_SYMBOL (scm_abandoned_mutex_error_key, "abandoned-mutex-error"); - static SCM fat_mutex_lock (SCM mutex, scm_t_timespec *timeout, int *ret) { @@ -1154,15 +1152,6 @@ fat_mutex_lock (SCM mutex, scm_t_timespec *timeout, int *ret) *ret = 1; break; } - else if (SCM_I_IS_THREAD (m->owner) && scm_c_thread_exited_p (m->owner)) - { - m->owner = new_owner; - err = scm_cons (scm_abandoned_mutex_error_key, - scm_from_locale_string ("lock obtained on abandoned " - "mutex")); - *ret = 1; - break; - } else if (scm_is_eq (m->owner, new_owner)) { if (m->recursive) diff --git a/test-suite/tests/threads.test b/test-suite/tests/threads.test index ee6a505f9..2156f61fc 100644 --- a/test-suite/tests/threads.test +++ b/test-suite/tests/threads.test @@ -436,15 +436,10 @@ (lock-mutex m) (lock-mutex m))) - (pass-if "locking abandoned mutex throws exception" - (let* ((m (make-mutex)) - (t (begin-thread (lock-mutex m))) - (success #f)) - (join-thread t) - (catch 'abandoned-mutex-error - (lambda () (lock-mutex m)) - (lambda key (set! success #t))) - success))))) + (pass-if "abandoned mutexes are dead" + (let* ((m (make-mutex))) + (join-thread (begin-thread (lock-mutex m))) + (not (lock-mutex m (+ (current-time) 0.1)))))))) ;;