From: "charliesome (Charlie Somerville)" Date: 2013-11-06T07:27:53+09:00 Subject: [ruby-core:58184] [ruby-trunk - Bug #9082] popen3 hangs when stderr gets lots of output Issue #9082 has been updated by charliesome (Charlie Somerville). If you call e.read then test.rb is able to write the entire message to STDERR then exit. When it exits, both stderr and stdout are closed so e.read returns. ---------------------------------------- Bug #9082: popen3 hangs when stderr gets lots of output https://bugs.ruby-lang.org/issues/9082#change-42769 Author: rosenfeld (Rodrigo Rosenfeld Rosas) Status: Rejected Priority: Normal Assignee: Category: lib Target version: ruby -v: ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] Backport: Create this program test.rb: STDERR.puts "some error line\n" * 10_000 Then, try this: ruby -r open3 -e "Open3.popen3('ruby test.rb'){|i,o,e,t|i.close;o.read}" For this particular case, if I do "e.read" before "o.read" it works. But for my real case involving the "tidy" command with lots of warnings in the stderr it will freeze even if I call "e.read". Since I don't really need this output, I'm using popen2 and redirecting stderr to /dev/null, so this is not urgent, but I thought you'd like to know about this. Also, if you replace 10_000 with 1_000 above it also works here. -- http://bugs.ruby-lang.org/