diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-18 06:57:08 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-18 06:57:08 +0000 |
commit | 3a4bfbad0976c60dd557dcdb64b390d055e6446b (patch) | |
tree | 8b3c67f1abe3bd3563c89bfd05b5b20d484aa0db | |
parent | b66eb536507d4837948d615ef61b25c01a2e07ff (diff) |
* 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
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | thread.c | 1 | ||||
-rw-r--r-- | thread_pthread.c | 2 | ||||
-rw-r--r-- | thread_win32.c | 1 |
4 files changed, 9 insertions, 2 deletions
@@ -1,3 +1,10 @@ +Fri Jan 18 15:57:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * 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 <nobu@ruby-lang.org> * encoding.c (rb_enc_name_list_i, rb_enc_aliases_enc_i): freeze @@ -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); |