[前][次][番号順一覧][スレッド一覧]

ruby-changes:5992

From: usa <ko1@a...>
Date: Sat, 21 Jun 2008 16:48:46 +0900 (JST)
Subject: [ruby-changes:5992] Ruby:r17500 (trunk): * thread_win32.c (native_sleep): must block reentrance when accessing

usa	2008-06-21 16:48:29 +0900 (Sat, 21 Jun 2008)

  New Revision: 17500

  Modified files:
    trunk/ChangeLog
    trunk/thread_win32.c

  Log:
    * thread_win32.c (native_sleep): must block reentrance when accessing
      th->unblock.
      fixed [ruby-core:17341], reported by Bill Kelly <billk at cts.com>
    


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=17500&r2=17499&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/thread_win32.c?r1=17500&r2=17499&diff_format=u

Index: thread_win32.c
===================================================================
--- thread_win32.c	(revision 17499)
+++ thread_win32.c	(revision 17500)
@@ -229,8 +229,10 @@
     {
 	DWORD ret;
 
+	native_mutex_lock(&th->interrupt_lock);
 	th->unblock.func = ubf_handle;
 	th->unblock.arg = th;
+	native_mutex_unlock(&th->interrupt_lock);
 
 	if (RUBY_VM_INTERRUPTED(th)) {
 	    /* interrupted.  return immediate */
@@ -241,8 +243,10 @@
 	    thread_debug("native_sleep done (%lu)\n", ret);
 	}
 
+	native_mutex_lock(&th->interrupt_lock);
 	th->unblock.func = 0;
 	th->unblock.arg = 0;
+	native_mutex_unlock(&th->interrupt_lock);
     }
     GVL_UNLOCK_END();
     th->status = prev_status;
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 17499)
+++ ChangeLog	(revision 17500)
@@ -1,3 +1,9 @@
+Sat Jun 21 16:46:09 2008  NAKAMURA Usaku  <usa@r...>
+
+	* thread_win32.c (native_sleep): must block reentrance when accessing
+	  th->unblock.
+	  fixed [ruby-core:17341], reported by Bill Kelly <billk at cts.com>
+
 Sat Jun 21 16:29:02 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* parse.y (call_args2, open_args): removed.

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]