From 209e7137e3fb778949c938ea2d90eed5c50976a3 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Sun, 28 Sep 2014 01:37:02 -0500 Subject: [PATCH] Rearrange build process cleanup to avoid spawning a reader thread This is a follow-up to bbf9f7460fc8e6e4c63f5bbe8630b11ca53f3710. If we read from the pipe before calling Process.wait, we can avoid spawning a thread to do the read while continuing to avoid the deadlock that the thread was introduced to solve. --- Library/Homebrew/formula_installer.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index d457da4303..c5914484ca 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -505,10 +505,9 @@ class FormulaInstaller ignore_interrupts(:quietly) do # the child will receive the interrupt and marshal it back write.close - thr = Thread.new { read.read } - Process.wait(pid) - data = thr.value + data = read.read read.close + Process.wait(pid) raise Marshal.load(data) unless data.nil? or data.empty? raise Interrupt if $?.exitstatus == 130 raise "Suspicious installation failure" unless $?.success?