From 5429deb075beb9a2b67adae269bbac16325876d1 Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Wed, 27 May 2020 00:20:14 +0900 Subject: [PATCH] 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 : # Leaked file descriptor: TestGemExtCmakeBuilder#test_self_build: 10 : # Leaked file descriptor: TestGemExtCmakeBuilder#test_self_build: 11 : # Leaked file descriptor: TestGemExtCmakeBuilder#test_self_build: 12 : # ``` --- lib/open3.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/open3.rb b/lib/open3.rb index 5e725317a4..ada451c249 100644 --- a/lib/open3.rb +++ b/lib/open3.rb @@ -206,6 +206,11 @@ module Open3 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