From 5136031055433d1eba6a77353fa842f5adfc3dc4 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 13 Nov 2008 02:31:16 +0000 Subject: * thread.c (rb_barrier_wait): gets rid of recursive deadlock. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- thread.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'thread.c') diff --git a/thread.c b/thread.c index 55f749ed18..f49e2e2e4d 100644 --- a/thread.c +++ b/thread.c @@ -3050,8 +3050,11 @@ VALUE rb_barrier_wait(VALUE self) { VALUE mutex = (VALUE)DATA_PTR(self); + mutex_t *m; if (!mutex) return Qfalse; + GetMutexPtr(mutex, m); + if (m->th == GET_THREAD()) return Qfalse; rb_mutex_lock(mutex); if (DATA_PTR(self)) return Qtrue; rb_mutex_unlock(mutex); -- cgit v1.2.3