[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 preview2 をリリースしました。

20 messages 2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Hidetoshi NAGAI <nagai@...> 2007/02/25

永井@知能.九工大です.

[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Nobuyoshi Nakada <nobu@...> 2007/02/25

なかだです。

[ruby-dev:30436] Re: ruby-1.8 で SEGV

From: Chikanaga Tomoyuki <chikanag@...>
Date: 2007-02-27 03:47:32 UTC
List: ruby-dev #30436
日本コントロールシステム(株)の近永と申します。
よろしくおねがいします。

書き忘れていましたが、[ruby-dev:30433]の差分は 1.8.6-preview2 に
対するものです。

それで、試しに eval.c を修正したバージョンで走らせていたのですが、
どうも見当外れだったようで、また 
*** glibc detected *** : double free or corruption (fasttop): 0x09fc9108 ***
というメッセージを出してしまいました。

それに make test-all で コアダンプしてしまったので、どうやらかえって
バグを入れてしまったみたいです。
やっぱり的外れだったようです。
確認不足のまま投稿してしまい申し訳ありませんでした。

昨日の修正は差し戻して引き続き調査していきます。

-- 
日本コントロールシステム(株)
近永 智之 <chikanag@nippon-control-system.co.jp>

On Mon, 26 Feb 2007 18:12:48 +0900
Chikanaga Tomoyuki <chikanag@nippon-control-system.co.jp> wrote:

> 日本コントロールシステム(株)の近永と申します。
> よろしくおねがいします。
> 
> [ruby-dev:30404] の件の続報です。
> まだ思うように再現させられず四苦八苦していますが、struct SCOPE のあたりが
> 怪しいと考えて eval.c を読んでいてすこしひっかかるところを発見しました。
> 
> proc_invoke でスコープのコピーをしている所で、flags をコピーしていない点が
> 気になりました。
> 全体を把握していないので、0クリアのままでいいのか、コピーすべきか
> はっきり分らないのですが、SCOPE_DONT_RECYCLE 等が消えてしまうと
> よくないような気がします。
> どうでしょうか。
> 
> 的外れな指摘でしたら申し訳ありません。
> 
> もしここだったら、特異クラスに対する module_eval 内でブロック渡しの
> define_method を使っているところがあるので、そこが問題なのだろうと
> 推測してこれから再現スクリプトを探索してみようと思いますが、取り急ぎ
> 報告させて頂きました。
> 
> --- eval.c.orig 2007-02-19 18:28:43.000000000 +0900
> +++ eval.c      2007-02-26 17:28:49.000000000 +0900
> @@ -8547,11 +8547,12 @@
>      if (klass) _block.frame.last_class = klass;
>      _block.frame.argc = RARRAY(tmp)->len;
>      _block.frame.flags = ruby_frame->flags;
> -    if (_block.frame.argc && (ruby_frame->flags & FRAME_DMETH)) {
> +    if (_block.frame.argc && DMETHOD_P()) {
>          NEWOBJ(scope, struct SCOPE);
>          OBJSETUP(scope, tmp, T_SCOPE);
>          scope->local_tbl = _block.scope->local_tbl;
>          scope->local_vars = _block.scope->local_vars;
> +        scope->flags = _block.scope->flags;
>          _block.scope = scope;
>      }
>      /* modify current frame */
> 
> -- 
> 日本コントロールシステム(株)
> 近永 智之 <chikanag@nippon-control-system.co.jp>
> 
> 


In This Thread