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

ruby-changes:20177

From: nagachika <ko1@a...>
Date: Sat, 25 Jun 2011 23:21:27 +0900 (JST)
Subject: [ruby-changes:20177] nagachika:r32225 (trunk): * thread.c (rb_threadptr_check_signal): remove unnecessary th->status

nagachika	2011-06-25 23:21:16 +0900 (Sat, 25 Jun 2011)

  New Revision: 32225

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32225

  Log:
    * thread.c (rb_threadptr_check_signal): remove unnecessary th->status
      backup. fix race condition which may results unexpected main thread's
      status transition. see #4072

  Modified files:
    trunk/ChangeLog
    trunk/thread.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32224)
+++ ChangeLog	(revision 32225)
@@ -1,3 +1,9 @@
+Sat Jun 25 23:14:47 2011  CHIKANAGA Tomoyuki  <nagachika00@g...>
+
+	* thread.c (rb_threadptr_check_signal): remove unnecessary th->status
+	  backup. fix race condition which may results unexpected main thread's
+	  status transition. see #4072
+
 Fri Jun 24 19:57:30 2011  Hiroshi Nakamura  <nahi@r...>
 
 	* lib/webrick/httprequest.rb (setup_forwarded_info): Parsing request
Index: thread.c
===================================================================
--- thread.c	(revision 32224)
+++ thread.c	(revision 32225)
@@ -2953,13 +2953,10 @@
     /* mth must be main_thread */
 
     if (!mth->exec_signal && (sig = rb_get_next_signal()) > 0) {
-	enum rb_thread_status prev_status = mth->status;
 	thread_debug("main_thread: %s, sig: %d\n",
-		     thread_status_name(prev_status), sig);
+		     thread_status_name(mth->status), sig);
 	mth->exec_signal = sig;
-	if (mth->status != THREAD_KILLED) mth->status = THREAD_RUNNABLE;
 	rb_threadptr_interrupt(mth);
-	mth->status = prev_status;
     }
 }
 

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

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