Bug #7884

Tkで,コマンドにforkを入れると,イベント実行時にクラッシュする

Added by Hiroyuki URANISHI about 1 year ago. Updated 10 months ago.

[ruby-dev:47049]
Status:Rejected
Priority:Normal
Assignee:Hidetoshi Nagai
Category:ext
Target version:2.1.0
ruby -v:ruby 1.9.3p385 (2013-02-06 revision 39114) [universal.x86_64-darwin10] Backport:

Description

題名の通りです.

MacPortsからインストールした
1.9.3-p327+mactk
1.9.3-p385+mactk
で同じ症状でした.

以下,ソースです.forkブロック中の,p 'forked process'は表示されます.ウィンドウ終了しませんでした.

require 'tk'
tkroot = TkRoot.new
content = Tk::Tile::Frame.new( tkroot ).grid
Tk::Tile::Button.new( content ){
text 'OK'
command{
pid = fork{ p 'forked process' }
th = Process.detach( pid )
p th.value
}
}.grid
Tk.mainloop

ruby1.9_2013-02-19-223306_mu.crash - ~/Library/Logs/CrashReporter/ruby1.9_2013-02-19-223306_mu.crash (34.7 KB) Hiroyuki URANISHI, 02/19/2013 11:07 PM

terminal_log.txt Magnifier (6.27 KB) Hiroyuki URANISHI, 02/19/2013 11:07 PM

History

#1 Updated by Koichi Sasada about 1 year ago

  • Category set to ext
  • Assignee set to Hidetoshi Nagai
  • Target version set to 2.1.0

#2 Updated by Hidetoshi Nagai 10 months ago

  • Status changed from Open to Rejected

少なくとも現状では,callback 中の fork は非サポートです.
通常,callback は eventloop が走っている thread で実行されます.
しかも,callback が実行される際には Tcl 側と Ruby 側との処理が絡み合っています.
この状況でウィンドウシステムのイベント処理を行う thread が複製された時に生じることについて,
私には保証しきれません.

Also available in: Atom PDF