Project

General

Profile

Actions

Bug #1872

closed

[ruby_1_8] Kernel#system doesn't work in forked process

Added by nagai (Hidetoshi Nagai) over 12 years ago. Updated over 10 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 1.8.8dev (2009-08-03 revision 24370) [i686-linux]
[ruby-dev:38996]

Description

=begin
OS 環境に依存している気もしないではないですが,
例えば次のような例が hang-up します.

$ ruby -e 'Process.fork{p system("ls")}'

Linux 2.6.15, glibc 2.3.3 における
ruby 1.8.8dev (2009-08-03 revision 24370) です.
configure オプションは --enable-pthread だけを与えています.

rb_f_system() 中の fork までは完了しており,
子プロセスは生成されてはいるものの,
生成直後に固まってしまっているようです.
親プロセスについては,子プロセスの ID を受け取り,
素直に動作して rb_syswait() に入っているように見受けられます.

なお,上記の例で system の代りに exec とした場合には
問題なく動作します.
=end


Related issues

Related to Ruby master - Bug #270: lazy timer thraed creationClosedko1 (Koichi Sasada)Actions
Has duplicate Backport187 - Backport #2663: Hard hang (needs -9 to kill) in 1.8.7 build 248Closed01/27/2010Actions
Actions

Also available in: Atom PDF