[#12387] reducing logical operation — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

17 messages 2001/03/07
[#12388] Re: reducing logical operation — EGUCHI Osamu <eguchi@...> 2001/03/07

えぐち@エスアンドイー です。

[#12389] Re: reducing logical operation — nobu.nakada@... 2001/03/07

なかだです。

[#12391] Re: reducing logical operation — EGUCHI Osamu <eguchi@...> 2001/03/07

えぐち@エスアンドイー です。

[#12404] fork in threads — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

14 messages 2001/03/09

[#12405] at_exit — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 2001/03/09
[#12409] Re: at_exit — matz@... (Yukihiro Matsumoto) 2001/03/10

まつもと ゆきひろです

[#12411] Re: at_exit — keiju@... (石塚圭樹) 2001/03/10

けいじゅ@日本ラショナルソフトウェアです.

[#12425] bignum % の結果が負数になることがある — Hisayasu Nakao <h-nakao@...>

最近、ruby-1.6.2を使い出したばかりの中尾です。

39 messages 2001/03/12
[#12427] Re: bignum % の結果が負数になることがある — WATANABE Hirofumi <eban@...> 2001/03/12

わたなべです。

[#12463] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/13

In message <4518-Mon12Mar2001145434+0900-eban@os.rim.or.jp>

[#12464] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/13

まつもと ゆきひろです

[#12466] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/13

In message <984469222.234203.1007.nullmailer@ev.netlab.zetabits.com>

[#12475] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12476] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984550885.417146.3670.nullmailer@ev.netlab.zetabits.com>

[#12480] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12481] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984553493.009507.3747.nullmailer@ev.netlab.zetabits.com>

[#12488] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12493] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984579430.080967.5569.nullmailer@ev.netlab.zetabits.com>

[#12578] require 'win32api' — Kazuhiro NISHIYAMA <zn@...>

require 'win32api'のエラーメッセージがわかりにくいと

21 messages 2001/03/20
[#12579] Re: require 'win32api' — nobu.nakada@... 2001/03/20

なかだです。

[#12598] Re: require 'win32api' — nobu.nakada@... 2001/03/21

なかだです。

[#12582] finalizer problem — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

20 messages 2001/03/20
[#12583] Re: finalizer problem — matz@... (Yukihiro Matsumoto) 2001/03/20

まつもと ゆきひろです

[#12585] Re: finalizer problem — keiju@... (石塚圭樹) 2001/03/20

けいじゅ@日本ラショナルソフトウェアです.

[#12591] Re: finalizer problem — matz@... (Yukihiro Matsumoto) 2001/03/20

まつもと ゆきひろです

[#12619] Re: finalizer problem — keiju@... (石塚圭樹) 2001/03/22

けいじゅ@日本ラショナルソフトウェアです.

[#12605] extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...>

渡辺哲也です。

17 messages 2001/03/22
[#12606] Re: extern inline (ruby.h) ruby-1.6.3 — matz@... (Yukihiro Matsumoto) 2001/03/22

まつもと ゆきひろです

[#12607] Re: extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...> 2001/03/22

渡辺哲也です。

[#12608] Re: extern inline (ruby.h) ruby-1.6.3 — matz@... (Yukihiro Matsumoto) 2001/03/22

まつもと ゆきひろです

[#12674] Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp>

21 messages 2001/03/25
[#12675] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/26

まつもと ゆきひろです

[#12678] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/26

[#12681] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/26

まつもと ゆきひろです

[#12687] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/27

[#12688] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/28

まつもと ゆきひろです

[#12710] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/31

[ruby-dev:12672] segv on Continuation#call on C_ALLOCA system

From: Koji Arai <JCA02266@...>
Date: 2001-03-25 13:50:43 UTC
List: ruby-dev #12672
新井です。

先週 rubicon-0.1.4 を ews48 で試してたのですが TestKernel.rb 
の test_s_callcc で segv します。

segv する原因は私には難しすぎたのですが、出来る限り追ってみ
たところ Continuation#call でコンテキストを復帰したときに

  4232  rb_call0(klass, recv, id, argc, argv, body, nosuper)

  4347              if ((state = EXEC_TAG()) == 0) {

ここで、tmp__protect_tmp の値が復活し、TMP_PROTECT_END 
の rb_gc_force_recycle を呼ぶことで同じアドレスを指す 
freelist ができる、のが原因なのではないかと思います。

再現させたときは、
    void
    rb_gc_force_recycle(p)
	VALUE p;
    {
	RANY(p)->as.free.flags = 0;
	RANY(p)->as.free.next = freelist;
	freelist = RANY(p);
    }

で、p と freelist の値(復帰した tmp__protect_tmp の値)が同じでした

その結果 rb_newobj() で同じアドレスを指す2つのオブジェクトが
でき、片方の変更が、もう片方に影響して最終的に GC で落ちてい
ました。暫定的に

  4232  rb_call0(klass, recv, id, argc, argv, body, nosuper)
  4233      VALUE klass, recv;

  4327              if (body->nd_rval) ruby_frame->cbase = body->nd_rval;
  4328              if (body->nd_tbl) {
  4329  #if 1
  4330                  local_vars = TMP_ALLOC(body->nd_tbl[0]+1);
  4331  #else
  4332                  local_vars = ALLOCA_N(VALUE, body->nd_tbl[0]+1);
  4333  #endif
  4334                  *local_vars++ = (VALUE)body;
  4335                  rb_mem_clear(local_vars, body->nd_tbl[0]);
  4336                  ruby_scope->local_tbl = body->nd_tbl;
  4337                  ruby_scope->local_vars = local_vars;

の #if 1 を 0 にする修正で落ちなくなったことまでを確認しまし
た。#if 1 のときは 4337行目で ruby_scope->local_vars の代入
のときにtmp__protect_tmp.u2 の値が local_vars に書き代わってました。
(つまり、ruby_scope と tmp__protect_tmp が同じ値になってた)

まあ、私の怪しく、拙い説明を読むよりは再現させた方が早いので
Linux で config.h に
  #define C_ALLOCA 1
を定義して再コンパイルして

  ruby -C rubicon/builtin TestKernel.rb test_s_callcc

を実行してみてくださいませ。うちでは

  ./miniruby  -C rubicon/builtin TestKernel.rb test_s_callcc
  #<Rubicon::TestRunner:0x40201ae8 @wait=false, @io=#<IO:0x4019cf3c>>

  TestKernel#test_s_callcc TestKernel.rb:629: [BUG] Segmentation fault
  ruby 1.7.0 (2001-03-22) [i586-linux]
  Aborted (core dumped)

と、再現するようです(上記の解析はこの環境で追った結果です)

スタックトレースは大きいので付けませんが、もし再現しないよう
でしたら言ってくださればあらためて報告します。

--
新井康司 (Koji Arai)

In This Thread

Prev Next