[ruby-dev:50188] [Ruby trunk Bug#13768] SIGCHLD and Thread dead-lock problem
From:
ko1@...
Date:
2017-07-27 04:19:59 UTC
List:
ruby-dev #50188
Issue #13768 has been updated by ko1 (Koichi Sasada).
これ、dead-lock の定義の問題なので、ちょっと議論が要るような気がしています。
> Signal.trapを設定していたら常にデッドロックではない、とすべきというところでしょうか。
いいんかな、これで。例えば、webrick 使ってたらデッドロック検出出来ないとか。
----------------------------------------
Bug #13768: SIGCHLD and Thread dead-lock problem
https://bugs.ruby-lang.org/issues/13768#change-65956
* Author: keiju (Keiju Ishitsuka)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v:
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
けいじゅ@いしつかです.
下記のプログラムを実行するとThreadがデッドロックしたと例外が発生します.
# コメント部分をはずせば, デッドロックはしません
シグナルのtrapが絡むときのデッドロックの検知に問題があるのではないかと
思いますがいかがでしょう?
```
% ruby -v
ruby 2.5.0dev (2017-07-25 trunk 59417) [i686-linux]
```
```ruby
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 <<---
--
https://bugs.ruby-lang.org/