From: matz@... (Yukihiro Matsumoto) Date: 1997-08-16T00:59:22+09:00 Subject: [ruby-dev:138] Re: tracer まつもと ゆきひろです In message "[ruby-dev:129] Re: tracer" on 97/08/15, Yukihiro Matsumoto writes: |まつもと ゆきひろです ||1. set_trace_funcで呼ばれるprocのthreadがおかしい || ||ある行を実行する前にset_trace_funcで設定されたprocが呼ばれるのですが, ||1つ前のthreadで呼ばれています. | |バグでしょうねえ.ちょっと見てみます. ソースを見た限りそういうことは起きないように見えるのですが, trace_funcの中でスレッドが切り替わることを禁止して見ましたが, 以下のパッチでどうでしょう. --- eval.c~ Thu Aug 14 20:22:42 1997 +++ eval.c Fri Aug 15 16:16:24 1997 @@ -1115,2 +1115,3 @@ trace_func = 0; + DEFER_INTS; @@ -1134,2 +1135,3 @@ + ENABLE_INTS; if (!trace_func) trace_func = trace; @@ -1911,2 +1913,3 @@ } + rb_clear_cache(); Warning("extending class %s", rb_id2name(node->nd_cname)); @@ -1966,2 +1969,5 @@ TypeError("No virtual class for special constants"); + } + if (FL_TEST(CLASS_OF(class), FL_SINGLETON)) { + rb_clear_cache(); }