Project

General

Profile

Bug #14505

Updated by lionel_perrin (Lionel PERRIN) over 2 years ago

The following ruby code never returns 

 ~~~ ruby 
 `ruby -r oci8 -e puts 'hello'` 
 IO.popen(%w(ruby -r oci8 -e)+["puts 'hello'"]) { |o| puts o.read } # this never returns too 
 Open3.capture2(*%w(ruby -r oci8 -e)+["puts 'hello'"]) # and this is blocked too 
 ~~~ 

 while its python equivalent runs successfully 

 ~~~ python 
 import subprocess 
 subprocess.call(['ruby', '-r', 'oci8', '-e', 'puts "hello"']) 
 ~~~ 

 The issue seems to require some 'unusual' context to be triggered. The ruby-oci8 (https://github.com/kubo/ruby-oci8) gem used by the subprocess    loads an oracle dll which seems to open some file descriptors. Anyway, I wouldn't expect the caller to be affected by the libraries loaded by the subprocesses. 

 I've reproduced the problem with ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux] (gemset 2.7.6) 

 Thanks for your help, 

 Lionel

Back