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

ruby-changes:25829

From: kosaki <ko1@a...>
Date: Tue, 27 Nov 2012 11:00:57 +0900 (JST)
Subject: [ruby-changes:25829] kosaki:r37886 (trunk): * eval.c (ruby_cleanup): set thread status to THREAD_KILLED

kosaki	2012-11-27 11:00:40 +0900 (Tue, 27 Nov 2012)

  New Revision: 37886

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

  Log:
    * eval.c (ruby_cleanup): set thread status to THREAD_KILLED
      for preventing thr.raise.
    * test/ruby/test_thread.rb (test_main_thread_status_at_exit):
      test for the above.

  Modified files:
    trunk/ChangeLog
    trunk/eval.c
    trunk/test/ruby/test_thread.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37885)
+++ ChangeLog	(revision 37886)
@@ -1,3 +1,10 @@
+Tue Nov 27 10:55:09 2012  KOSAKI Motohiro  <kosaki.motohiro@g...>
+
+	* eval.c (ruby_cleanup): set thread status to THREAD_KILLED
+	  for preventing thr.raise.
+	* test/ruby/test_thread.rb (test_main_thread_status_at_exit):
+	  test for the above.
+
 Tue Nov 27 10:31:29 2012  KOSAKI Motohiro  <kosaki.motohiro@g...>
 
 	* thread.c (rb_thread_terminate_all): suppress a warning.
Index: eval.c
===================================================================
--- eval.c	(revision 37885)
+++ eval.c	(revision 37886)
@@ -159,6 +159,9 @@
     rb_thread_t *th = GET_THREAD();
     int nerr;
 
+    /* protect from thread.raise */
+    th->status = THREAD_KILLED;
+
     rb_threadptr_interrupt(th);
     rb_threadptr_check_signal(th);
     PUSH_TAG();
Index: test/ruby/test_thread.rb
===================================================================
--- test/ruby/test_thread.rb	(revision 37885)
+++ test/ruby/test_thread.rb	(revision 37886)
@@ -889,4 +889,16 @@
       }.join
     end
   end
+
+  def test_main_thread_status_at_exit
+    assert_in_out_err([], <<-INPUT, %w(false), [])
+Thread.new(Thread.current) {|mth|
+  begin
+    sleep 0.1
+  ensure
+    p mth.alive?
+  end
+}
+    INPUT
+  end
 end

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

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