summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-11-05 00:26:29 +0100
committerAndy Wingo <wingo@pobox.com>2016-11-05 10:30:49 +0100
commitf1b7eaaa1a78f2a0b1be1f35ec583349322db02e (patch)
treec7ce5e0973324f8fa5c58a2f7e3757f519739ebf
parenta3d0a7da4d2a78a7bddbac7a93648835d8419e8f (diff)
downloadguile-f1b7eaaa1a78f2a0b1be1f35ec583349322db02e.tar.gz
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.
-rw-r--r--libguile/threads.c11
-rw-r--r--test-suite/tests/threads.test13
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))))))))
;;