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

ruby-changes:61388

From: Yusuke <ko1@a...>
Date: Wed, 27 May 2020 00:34:20 +0900 (JST)
Subject: [ruby-changes:61388] 5429deb075 (master): lib/open3.rb: make sure that pipes are closed

https://git.ruby-lang.org/ruby.git/commit/?id=5429deb075

From 5429deb075beb9a2b67adae269bbac16325876d1 Mon Sep 17 00:00:00 2001
From: Yusuke Endoh <mame@r...>
Date: Wed, 27 May 2020 00:20:14 +0900
Subject: lib/open3.rb: make sure that pipes are closed

Attempting to invoke a non-existent command led to the leak of fds.

http://rubyci.s3.amazonaws.com/graviton2/ruby-master/log/20200526T140004Z.log.html.gz
```
[ 9101/20195] TestGemExtCmakeBuilder#test_self_build = 0.01 sLeaked file descriptor: TestGemExtCmakeBuilder#test_self_build: 7 : #<IO:fd 7>
Leaked file descriptor: TestGemExtCmakeBuilder#test_self_build: 10 : #<IO:fd 10>
Leaked file descriptor: TestGemExtCmakeBuilder#test_self_build: 11 : #<IO:fd 11>
Leaked file descriptor: TestGemExtCmakeBuilder#test_self_build: 12 : #<IO:fd 12>
```

diff --git a/lib/open3.rb b/lib/open3.rb
index 5e72531..ada451c 100644
--- a/lib/open3.rb
+++ b/lib/open3.rb
@@ -206,6 +206,11 @@ module Open3 https://github.com/ruby/ruby/blob/trunk/lib/open3.rb#L206
     opts[[:out, :err]] = out_w
 
     popen_run(cmd, opts, [in_r, out_w], [in_w, out_r], &block)
+  ensure
+    in_r.close
+    in_w.close
+    out_r.close
+    out_w.close
   end
   module_function :popen2e
 
-- 
cgit v0.10.2


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

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