From: "shugo (Shugo Maeda)" <redmine@...> Date: 2012-08-22T11:46:33+09:00 Subject: [ruby-dev:46068] [ruby-trunk - Bug #6901] SEGV with tail call optimization Issue #6901 has been updated by shugo (Shugo Maeda). shugo (Shugo Maeda) wrote: > * vm_insnhelper.c (vm_setup_method): should not enable tail call > optimization for frames with VM_FRAME_FLAG_FINISH. > [ruby-dev:46065] [Bug #6901] とりあえず、現在のフレームにVM_FRAME_FLAG_FINISHフラグが立っていたら VM_CALL_TAILCALL_BITが立っている時でもpopしないようにしたところ、 SEGVが発生しなくなりましたが、問題ないでしょうか? > ささださん ---------------------------------------- Bug #6901: SEGV with tail call optimization https://bugs.ruby-lang.org/issues/6901#change-28967 Author: shugo (Shugo Maeda) Status: Closed Priority: Normal Assignee: ko1 (Koichi Sasada) Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-08-21 trunk 36751) [i686-linux] r36099のfinishフレームをなくす変更以降で、添付のpromise.rbのようなコードで 末尾呼出の最適化を有効にするとSEGVが発生するようになっています。 単純な末尾再帰版factなどでは再現しませんでしたが、再現条件はよくわかっていません。 # 末尾再帰とブロック呼出しの組合せで発生するのかなと想像しています。 何か思い当たるフシはあるでしょうか? > ささださん -- http://bugs.ruby-lang.org/