Issue #7798 has been reported by clicube (Cubing Cube). ---------------------------------------- Bug #7798: 子スレッドを Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない https://bugs.ruby-lang.org/issues/7798 Author: clicube (Cubing Cube) Status: Open Priority: Normal Assignee: Category: Target version: 1.9.3 ruby -v: ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 再現コード Thread.new{ sleep } Process.daemon ■ ruby -v の結果 ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 実際に起きた結果 プロセスが終了せずに残ります. kill -TERM では終了できず, kill -KILL する必要があります. ■ 期待した結果 メインスレッドが終了し,プロセスが終了すると期待しました. ■ 解決方法 ・rb_f_fork() を参考に,下記のように2回目の rb_fork() 後に rb_thread_atfork() を実行するようにしたところ,期待した動作になりました. (期待した動作をしているように思いますが,1回目の rb_fork() の後にするべきなのか,両方でするべきなのかはわかりません.) *** ruby-1.9.3-p385/process.c 2012-04-15 06:47:27.000000000 +0900 --- ruby-1.9.3-p385_/process.c 2013-02-07 21:21:12.000000000 +0900 *************** *** 4928,4933 **** --- 4928,4934 ---- default: _exit(EXIT_SUCCESS); } + rb_thread_atfork(); if (!nochdir) err = chdir("/");
on 2013-02-07 14:35
on 2013-02-07 14:37
Issue #7798 has been updated by clicube (Cubing Cube). タイトルを誤りました. 「子スレッドを実行しているとき Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない」 です. ---------------------------------------- Bug #7798: 子スレッドを Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない https://bugs.ruby-lang.org/issues/7798#change-35983 Author: clicube (Cubing Cube) Status: Open Priority: Normal Assignee: Category: Target version: 1.9.3 ruby -v: ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 再現コード Thread.new{ sleep } Process.daemon ■ ruby -v の結果 ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 実際に起きた結果 プロセスが終了せずに残ります. kill -TERM では終了できず, kill -KILL する必要があります. ■ 期待した結果 メインスレッドが終了し,プロセスが終了すると期待しました. ■ 解決方法 ・rb_f_fork() を参考に,下記のように2回目の rb_fork() 後に rb_thread_atfork() を実行するようにしたところ,期待した動作になりました. (期待した動作をしているように思いますが,1回目の rb_fork() の後にするべきなのか,両方でするべきなのかはわかりません.) *** ruby-1.9.3-p385/process.c 2012-04-15 06:47:27.000000000 +0900 --- ruby-1.9.3-p385_/process.c 2013-02-07 21:21:12.000000000 +0900 *************** *** 4928,4933 **** --- 4928,4934 ---- default: _exit(EXIT_SUCCESS); } + rb_thread_atfork(); if (!nochdir) err = chdir("/");
on 2013-02-07 15:37
Issue #7798 has been updated by znz (Kazuhiro NISHIYAMA). Subject changed from 子スレッドを Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない to 子スレッドを実行しているとき Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない ---------------------------------------- Bug #7798: 子スレッドを実行しているとき Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない https://bugs.ruby-lang.org/issues/7798#change-35991 Author: clicube (Cubing Cube) Status: Open Priority: Normal Assignee: Category: Target version: 1.9.3 ruby -v: ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 再現コード Thread.new{ sleep } Process.daemon ■ ruby -v の結果 ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 実際に起きた結果 プロセスが終了せずに残ります. kill -TERM では終了できず, kill -KILL する必要があります. ■ 期待した結果 メインスレッドが終了し,プロセスが終了すると期待しました. ■ 解決方法 ・rb_f_fork() を参考に,下記のように2回目の rb_fork() 後に rb_thread_atfork() を実行するようにしたところ,期待した動作になりました. (期待した動作をしているように思いますが,1回目の rb_fork() の後にするべきなのか,両方でするべきなのかはわかりません.) *** ruby-1.9.3-p385/process.c 2012-04-15 06:47:27.000000000 +0900 --- ruby-1.9.3-p385_/process.c 2013-02-07 21:21:12.000000000 +0900 *************** *** 4928,4933 **** --- 4928,4934 ---- default: _exit(EXIT_SUCCESS); } + rb_thread_atfork(); if (!nochdir) err = chdir("/");
on 2013-02-08 05:09
Issue #7798 has been updated by kosaki (Motohiro KOSAKI). Status changed from Open to Closed ---------------------------------------- Bug #7798: 子スレッドを実行しているとき Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない https://bugs.ruby-lang.org/issues/7798#change-36032 Author: clicube (Cubing Cube) Status: Closed Priority: Normal Assignee: Category: Target version: 1.9.3 ruby -v: ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 再現コード Thread.new{ sleep } Process.daemon ■ ruby -v の結果 ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 実際に起きた結果 プロセスが終了せずに残ります. kill -TERM では終了できず, kill -KILL する必要があります. ■ 期待した結果 メインスレッドが終了し,プロセスが終了すると期待しました. ■ 解決方法 ・rb_f_fork() を参考に,下記のように2回目の rb_fork() 後に rb_thread_atfork() を実行するようにしたところ,期待した動作になりました. (期待した動作をしているように思いますが,1回目の rb_fork() の後にするべきなのか,両方でするべきなのかはわかりません.) *** ruby-1.9.3-p385/process.c 2012-04-15 06:47:27.000000000 +0900 --- ruby-1.9.3-p385_/process.c 2013-02-07 21:21:12.000000000 +0900 *************** *** 4928,4933 **** --- 4928,4934 ---- default: _exit(EXIT_SUCCESS); } + rb_thread_atfork(); if (!nochdir) err = chdir("/");
on 2013-02-08 05:48
Issue #7798 has been updated by kosaki (Motohiro KOSAKI). Closed because duplicated with #7720. ---------------------------------------- Bug #7798: 子スレッドを実行しているとき Process.daemon すると,その後メインスレッドが終了してもプロセスが終了しない https://bugs.ruby-lang.org/issues/7798#change-36037 Author: clicube (Cubing Cube) Status: Closed Priority: Normal Assignee: Category: Target version: 1.9.3 ruby -v: ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 再現コード Thread.new{ sleep } Process.daemon ■ ruby -v の結果 ruby 1.9.3p385 (2013-02-06 revision 39114) [i686-linux] ■ 実際に起きた結果 プロセスが終了せずに残ります. kill -TERM では終了できず, kill -KILL する必要があります. ■ 期待した結果 メインスレッドが終了し,プロセスが終了すると期待しました. ■ 解決方法 ・rb_f_fork() を参考に,下記のように2回目の rb_fork() 後に rb_thread_atfork() を実行するようにしたところ,期待した動作になりました. (期待した動作をしているように思いますが,1回目の rb_fork() の後にするべきなのか,両方でするべきなのかはわかりません.) *** ruby-1.9.3-p385/process.c 2012-04-15 06:47:27.000000000 +0900 --- ruby-1.9.3-p385_/process.c 2013-02-07 21:21:12.000000000 +0900 *************** *** 4928,4933 **** --- 4928,4934 ---- default: _exit(EXIT_SUCCESS); } + rb_thread_atfork(); if (!nochdir) err = chdir("/");
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.