From: "nagai (Hidetoshi Nagai)" Date: 2013-06-17T14:19:48+09:00 Subject: [ruby-dev:47447] [ruby-trunk - Bug #7884][Rejected] Tkで,コマンドにforkを入れると,イベント実行時にクラッシュする Issue #7884 has been updated by nagai (Hidetoshi Nagai). Status changed from Open to Rejected 少なくとも現状では,callback 中の fork は非サポートです. 通常,callback は eventloop が走っている thread で実行されます. しかも,callback が実行される際には Tcl 側と Ruby 側との処理が絡み合っています. この状況でウィンドウシステムのイベント処理を行う thread が複製された時に生じることについて, 私には保証しきれません. ---------------------------------------- Bug #7884: Tkで,コマンドにforkを入れると,イベント実行時にクラッシュする https://bugs.ruby-lang.org/issues/7884#change-39987 Author: hirura (Hiroyuki URANISHI) Status: Rejected Priority: Normal Assignee: nagai (Hidetoshi Nagai) Category: ext Target version: current: 2.1.0 ruby -v: ruby 1.9.3p385 (2013-02-06 revision 39114) [universal.x86_64-darwin10] Backport: 題名の通りです. 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 -- http://bugs.ruby-lang.org/