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

ruby-changes:54603

From: nagachika <ko1@a...>
Date: Mon, 14 Jan 2019 18:23:50 +0900 (JST)
Subject: [ruby-changes:54603] nagachika:r66818 (ruby_2_5): merge revision(s) 64589, 64593: [Backport #15041]

nagachika	2019-01-14 18:23:45 +0900 (Mon, 14 Jan 2019)

  New Revision: 66818

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=66818

  Log:
    merge revision(s) 64589,64593: [Backport #15041]
    
    cont.c: set th->root_fiber to current fiber at fork
    
    Otherwise, th->root_fiber can point to an invalid Fiber,
    because Fibers do not live across fork.  So consider
    whatever Fiber is running the root fiber.
    
    [ruby-core:88723] [Bug #15041]
    
    cont.c (rb_fiber_atfork): th->root_fiber may not exist
    
    Otherwise, bootstraptest/test_fork.rb fails with -DVM_CHECK_MODE=2
    
    [Bug #15041]
    
    Fixes: r64589 "cont.c: set th->root_fiber to current fiber at fork"

  Modified directories:
    branches/ruby_2_5/
  Modified files:
    branches/ruby_2_5/cont.c
    branches/ruby_2_5/test/ruby/test_fiber.rb
    branches/ruby_2_5/thread.c
    branches/ruby_2_5/version.h
Index: ruby_2_5/test/ruby/test_fiber.rb
===================================================================
--- ruby_2_5/test/ruby/test_fiber.rb	(revision 66817)
+++ ruby_2_5/test/ruby/test_fiber.rb	(revision 66818)
@@ -269,7 +269,11 @@ class TestFiber < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/ruby_2_5/test/ruby/test_fiber.rb#L269
     end
     bug5700 = '[ruby-core:41456]'
     assert_nothing_raised(bug5700) do
-      Fiber.new{ pid = fork {} }.resume
+      Fiber.new do
+        pid = fork do
+          Fiber.new {}.transfer
+        end
+      end.resume
     end
     pid, status = Process.waitpid2(pid)
     assert_equal(0, status.exitstatus, bug5700)
Index: ruby_2_5/cont.c
===================================================================
--- ruby_2_5/cont.c	(revision 66817)
+++ ruby_2_5/cont.c	(revision 66818)
@@ -1932,6 +1932,20 @@ fiber_to_s(VALUE fibval) https://github.com/ruby/ruby/blob/trunk/ruby_2_5/cont.c#L1932
     return rb_block_to_s(fibval, &proc->block, status_info);
 }
 
+#ifdef HAVE_WORKING_FORK
+void
+rb_fiber_atfork(rb_thread_t *th)
+{
+    if (th->root_fiber) {
+        if (&th->root_fiber->cont.saved_ec != th->ec) {
+            th->root_fiber = th->ec->fiber_ptr;
+            th->root_fiber->cont.type = ROOT_FIBER_CONTEXT;
+        }
+        th->root_fiber->prev = 0;
+    }
+}
+#endif
+
 /*
  *  Document-class: FiberError
  *
Index: ruby_2_5/thread.c
===================================================================
--- ruby_2_5/thread.c	(revision 66817)
+++ ruby_2_5/thread.c	(revision 66818)
@@ -4231,6 +4231,7 @@ terminate_atfork_i(rb_thread_t *th, cons https://github.com/ruby/ruby/blob/trunk/ruby_2_5/thread.c#L4231
     }
 }
 
+void rb_fiber_atfork(rb_thread_t *);
 void
 rb_thread_atfork(void)
 {
@@ -4238,6 +4239,7 @@ rb_thread_atfork(void) https://github.com/ruby/ruby/blob/trunk/ruby_2_5/thread.c#L4239
     rb_thread_atfork_internal(th, terminate_atfork_i);
     th->join_list = NULL;
     rb_mutex_cleanup_keeping_mutexes(th);
+    rb_fiber_atfork(th);
 
     /* We don't want reproduce CVE-2003-0900. */
     rb_reset_random_seed();
Index: ruby_2_5/version.h
===================================================================
--- ruby_2_5/version.h	(revision 66817)
+++ ruby_2_5/version.h	(revision 66818)
@@ -1,10 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_5/version.h#L1
 #define RUBY_VERSION "2.5.4"
-#define RUBY_RELEASE_DATE "2019-01-11"
-#define RUBY_PATCHLEVEL 128
+#define RUBY_RELEASE_DATE "2019-01-14"
+#define RUBY_PATCHLEVEL 129
 
 #define RUBY_RELEASE_YEAR 2019
 #define RUBY_RELEASE_MONTH 1
-#define RUBY_RELEASE_DAY 11
+#define RUBY_RELEASE_DAY 14
 
 #include "ruby/version.h"
 
Index: ruby_2_5
===================================================================
--- ruby_2_5	(revision 66817)
+++ ruby_2_5	(revision 66818)

Property changes on: ruby_2_5
___________________________________________________________________
Modified: svn:mergeinfo
## -0,0 +0,1 ##
   Merged /trunk:r64589,64593

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

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