From: matz@... (Yukihiro Matsumoto) Date: 1999-08-21T11:26:49+09:00 Subject: [ruby-dev:7745] Re: [BUG] Segmentation fault (again...) まつもと ゆきひろです In message "[ruby-dev:7742] [BUG] Segmentation fault (again...)" on 99/08/21, Yasuhiro Fukuma writes: |以下が落ちます。 | | % cat bug.rb | eval "Thread.new { GC.start }", binding このように再現性のあるスクリプトがあると助かります。Frameが ヒープ上にある時にもスタック上にあるものとしてアドレス演算し てました。 パッチです。 --- /tmp/eval.c Wed Aug 18 23:14:34 1999 +++ eval.c Sat Aug 21 11:16:00 1999 @@ -5984,4 +6018,4 @@ -#define ADJ(addr) (void*)(((VALUE*)(addr)-th->stk_pos)+th->stk_ptr) -#define STACK(addr) (th->stk_pos<(addr) && (addr)stk_pos+th->stk_len) +#define STACK(addr) (th->stk_pos<(VALUE*)(addr) && (VALUE*)(addr)stk_pos+th->stk_len) +#define ADJ(addr) (void*)(STACK(addr)?(((VALUE*)(addr)-th->stk_pos)+th->stk_ptr):(VALUE*)(addr))