From 3a4bfbad0976c60dd557dcdb64b390d055e6446b Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 18 Jan 2008 06:57:08 +0000 Subject: [PATCH] * thread.c (thread_cleanup_func): ignore errors from destroying mutex of dead thread. [ruby-core:15069] * thread_pthread.c, thread_win32.c (native_thread_destroy): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ thread.c | 1 - thread_pthread.c | 2 +- thread_win32.c | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 15d4f2c39c..e8d3a0919e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Jan 18 15:57:05 2008 Nobuyoshi Nakada + + * thread.c (thread_cleanup_func): ignore errors from destroying mutex + of dead thread. [ruby-core:15069] + + * thread_pthread.c, thread_win32.c (native_thread_destroy): ditto. + Fri Jan 18 15:56:04 2008 Nobuyoshi Nakada * encoding.c (rb_enc_name_list_i, rb_enc_aliases_enc_i): freeze diff --git a/thread.c b/thread.c index 7326c59347..e45062c206 100644 --- a/thread.c +++ b/thread.c @@ -281,7 +281,6 @@ thread_cleanup_func(void *th_ptr) #ifdef __ia64 th->machine_register_stack_start = th->machine_register_stack_end = 0; #endif - native_mutex_destroy(&th->interrupt_lock); native_thread_destroy(th); } diff --git a/thread_pthread.c b/thread_pthread.c index 202dc54feb..62bddb722f 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -13,7 +13,6 @@ static void native_mutex_lock(pthread_mutex_t *lock); static void native_mutex_unlock(pthread_mutex_t *lock); -static void native_mutex_destroy(pthread_mutex_t *lock); static int native_mutex_trylock(pthread_mutex_t *lock); static void native_mutex_initialize(pthread_mutex_t *lock); static void native_mutex_destroy(pthread_mutex_t *lock); @@ -156,6 +155,7 @@ Init_native_thread(void) static void native_thread_destroy(rb_thread_t *th) { + pthread_mutex_destroy(&th->interrupt_lock); pthread_cond_destroy(&th->native_thread_data.sleep_cond); } diff --git a/thread_win32.c b/thread_win32.c index 7c4f402d14..7680a226e3 100644 --- a/thread_win32.c +++ b/thread_win32.c @@ -418,6 +418,7 @@ static void native_thread_destroy(rb_thread_t *th) { HANDLE intr = th->native_thread_data.interrupt_event; + native_mutex_destroy(&th->interrupt_lock); thread_debug("close handle - intr: %p, thid: %p\n", intr, th->thread_id); th->native_thread_data.interrupt_event = 0; w32_close_handle(intr);