summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-25 10:22:48 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-25 10:22:48 +0000
commitc9958d6ab46bb5562dbb67fad116b176a0fba9fc (patch)
treef041ff21d4ad07e0e221995d933ee7ab12bf1e64 /io.c
parent1b40391d3d41ed361bae41896315e18fc77ba759 (diff)
* io.c (pipe_open): Added rb_thread_atfork(). We must reinitialize
GVL at new process creation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/io.c b/io.c
index 5e38ce7db2..943d124988 100644
--- a/io.c
+++ b/io.c
@@ -5072,6 +5072,7 @@ pipe_open(struct rb_exec_arg *eargp, VALUE prog, const char *modestr, int fmode,
fflush(stdin); /* is it really needed? */
pid = rb_fork(&status, 0, 0, Qnil);
if (pid == 0) { /* child */
+ rb_thread_atfork();
popen_redirect(&arg);
rb_io_synchronized(RFILE(orig_stdout)->fptr);
rb_io_synchronized(RFILE(orig_stderr)->fptr);