summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-18 06:57:08 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-18 06:57:08 +0000
commit3a4bfbad0976c60dd557dcdb64b390d055e6446b (patch)
tree8b3c67f1abe3bd3563c89bfd05b5b20d484aa0db
parentb66eb536507d4837948d615ef61b25c01a2e07ff (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--ChangeLog7
-rw-r--r--thread.c1
-rw-r--r--thread_pthread.c2
-rw-r--r--thread_win32.c1
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 <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
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);