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)
The following one-liner fixes the case where "exit" is called.
However, when "exit"/"exit!" is omitted entirely, it still hangs.
I am out of time for today...