Project

General

Profile

Actions

Bug #9751

closed

Process.wait does not work correctly in a thread

Added by sam.saffron (Sam Saffron) about 10 years ago. Updated almost 10 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
1.9, 2.0, 2.1, 2.2
[ruby-core:62070]

Description

The following code fails under Ruby 1.9+, used to work on 1.8 with green threads

def test
  if pid = fork
    puts "child pid is #{pid} waiting ..."
    begin
      Process.wait(pid)
      puts "child exited"
    rescue => e
      p e
    end
  else
    sleep 3
    puts "exiting child"
    exit 0
  end
end
 
# this works as expected
test
 
puts "testing in thread"
 
# this will hang
Thread.new do
  test
end.join

Additionally on SIGINT I am seeing a zombie + [BUG] pthread_mutex_lock: Invalid argument (EINVAL)

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0