久しぶりにpoor man's rubyのデバッグ

ここ1週間全然プログラムが出来なかったけど、ようやく時間が取れたのでpoor man's rubyデバッグをやってみました。
make testでコアを吐いてしまう件について追ってみました。プログラムは次のようなものです。

x = Proc.new {
       binding
    }.call
eval("i4 = 1", x)
p eval("i4", x)

もちろん、普通のrubyでは動きます。
追ってみると、vm.cのvm_make_env_each関数中の

    if (!RUBY_VM_NORMAL_ISEQ_P(cfp->iseq)) {
	/* TODO */
	env->block.iseq = 0;
    }

というチェックが引っかかっている模様です。そのため、その後でiseqを参照してコアを吐いてしまうようです。
何でチェックに引っかかるのかは、追ってるとyarvの深みにはまってしまいそうなので、一時中断することにします。