Project

General

Profile

Bug #13768

SIGCHLD and Thread dead-lock problem

Added by keiju (Keiju Ishitsuka) about 3 years ago. Updated about 3 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-dev:50186]
Tags:

Description

けいじゅ@いしつかです.

下記のプログラムを実行するとThreadがデッドロックしたと例外が発生します.
# コメント部分をはずせば, デッドロックはしません

シグナルのtrapが絡むときのデッドロックの検知に問題があるのではないかと
思いますがいかがでしょう?

 % ruby -v
 ruby 2.5.0dev (2017-07-25 trunk 59417) [i686-linux]
 q = Queue.new
 p = Queue.new

 trap(:SIGCHLD) do
   puts "SIGCHLD"
   q.push 1
 end

 Thread.start do
   Process.spawn("/bin/sleep 1")
 end

 #Thread.start do
 #  loop do
 #    sleep 100
 #  end
 #end

 th = Thread.start{
   p.push q.pop
 }

 p.pop

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---

Also available in: Atom PDF