From: "K.Kosako" Date: 2000-12-11T16:32:21+09:00 Subject: [ruby-dev:11742] Re: cgi.rb で InsecureOperation ruby-listに入っていないので、 こちらに書かせていただきます。 [ruby-list:26496] >|1.6.1 (2000-09-27) で起こると書いてあるので, >|最新で試しても起きないってことじゃないかな? >|と思って ruby-1.6.1.tar.gz を拾ってきて Linux で試したら SEGV に. > >ぴんぽん。うちでも再現しました。どうしよう。 >早く1.6.2を出せってことか。 module_setup()で、TMP_ALLOC()した領域を、 parse.yのtop_local_setup()の中でrealloc()しているのが原因のように 思います。 TMP_ALLOC()をALLOC_N()に変更すれば、起きなくなりました。 完全な修正案は、私の能力では示せません。 static VALUE module_setup(module, n) VALUE module; NODE *n; { NODE * volatile node = n; int state; struct FRAME frame; VALUE result; /* OK */ char *file = ruby_sourcefile; int line = ruby_sourceline; TMP_PROTECT; frame = *ruby_frame; frame.tmp = ruby_frame; ruby_frame = &frame; /* fill c-ref */ node->nd_clss = module; node = node->nd_body; PUSH_CLASS(); ruby_class = module; PUSH_SCOPE(); PUSH_VARS(); if (node->nd_rval) ruby_frame->cbase = node->nd_rval; if (node->nd_tbl) { VALUE *vars = ALLOC_N(VALUE, node->nd_tbl[0]+1); ................ ................ --- 小迫@ソフネック 渋谷区恵比寿1-15-1