[#3747] constants (or class vriable?) — Wakou Aoyama <wakou@...>

青山です。

20 messages 1998/12/06
[#3751] Re: constants (or class vriable?) — Shin-ichro Hara <sinara@...> 1998/12/07

原です。

[#3763] Re: constants (or class vriable?) — Wakou Aoyama <wakou@...> 1998/12/07

青山です。

[#3764] Re: constants (or class vriable?) — matz@... (Yukihiro Matsumoto) 1998/12/08

まつもと ゆきひろです

[#3767] Re: constants (or class vriable?) — kjana@... (YANAGAWA Kazuhisa) 1998/12/08

In message <199812080034.JAA05946@picachu.netlab.co.jp>

[#3826] ruby 1.1d0 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

35 messages 1998/12/16

[#3873] (?: ) does not work? — shugo@... (MAEDA Shugo)

前田です。

15 messages 1998/12/19

[#3881] I want to catch all jump — shugo@... (Shugo Maeda)

前田です。

17 messages 1998/12/21
[#3895] Re: I want to catch all jump — matz@... (Yukihiro Matsumoto) 1998/12/22

まつもと ゆきひろです

[#3894] ruby 1.1d1 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

25 messages 1998/12/22

[#3899] interpreter reinitialization — shugo@... (Shugo Maeda)

前田です。

22 messages 1998/12/22
[#3923] Re: interpreter reinitialization — matz@... (Yukihiro Matsumoto) 1998/12/23

まつもと ゆきひろです

[#3926] Re: interpreter reinitialization — shugo@... (Shugo Maeda) 1998/12/23

前田です。

[#3931] Re: interpreter reinitialization — matz@... (Yukihiro Matsumoto) 1998/12/24

まつもと ゆきひろです

[#3956] Re: interpreter reinitialization — shugo@... (Shugo Maeda) 1998/12/24

前田です。

[#3960] Re: interpreter reinitialization — matz@... (Yukihiro Matsumoto) 1998/12/24

まつもと ゆきひろです

[#4002] config.guess — Koji Arai <JCA02266@...>

新井です。

24 messages 1998/12/26
[#4039] Re: config.guess — matz@... (Yukihiro Matsumoto) 1998/12/29

まつもと ゆきひろです

[#4045] Re: config.guess — Koji Arai <JCA02266@...> 1998/12/31

新井です。

[#4047] Re: config.guess — matz@... (Yukihiro Matsumoto) 1999/01/01

まつもと ゆきひろです

[#4048] Re: config.guess — Koji Arai <JCA02266@...> 1999/01/01

新井です。

[#4049] Re: config.guess — matz@... (Yukihiro Matsumoto) 1999/01/02

まつもと ゆきひろです

[#4050] Re: config.guess — Motoyuki Kasahara <m-kasahr@...> 1999/01/04

笠原です。

[#4030] module Precision — gotoken@... (GOTO Kentaro)

ごとけんです

78 messages 1998/12/28
[#4310] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/01/21

ごとけんです

[#4311] Re: module Precision — matz@... (Yukihiro Matsumoto) 1999/01/21

まつもと ゆきひろです

[#4312] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/01/21

ごとけんです

[#4317] Re: module Precision — keiju@... (石塚圭樹 ) 1999/01/21

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

[#4364] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/01/25

ごとけんです

[#4478] Re: module Precision — matz@... (Yukihiro Matsumoto) 1999/01/28

まつもと ゆきひろです

[#4506] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/01/30

ごとけんです

[#4552] Re: module Precision — matz@... (Yukihiro Matsumoto) 1999/02/01

まつもと ゆきひろです

[#4557] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/01

ごとけんです

[#4632] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/03

ごとけんです

[#4647] Re: module Precision — keiju@... (石塚圭樹 ) 1999/02/03

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

[#4648] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/03

ごとけんです

[#4633] Re: module Precision — matz@... (Yukihiro Matsumoto) 1999/02/03

まつもと ゆきひろです

[#4636] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/03

ごとけんです

[#4836] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/08

ごとけんです

[#4843] Re: module Precision — keiju@... (石塚圭樹 ) 1999/02/08

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

[#4849] Re: module Precision — gotoken@... (GOTO Kentaro) 1999/02/08

ごとけんです

[#4924] Re: module Precision — keiju@... (石塚圭樹 ) 1999/02/09

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

[#4976] a genericity — gotoken@... (GOTO Kentaro) 1999/02/10

ごとけんです

[#5008] Re: a genericity — keiju@... (石塚圭樹 ) 1999/02/11

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

[#5018] Re: a genericity — gotoken@... (GOTO Kentaro) 1999/02/11

ごとけんです

[#5171] Re: a genericity — keiju@... (石塚圭樹 ) 1999/02/16

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

[ruby-dev:3876] Re: ruby-1.1c9 install 中に SEGV

From: Koji Arai <JCA02266@...>
Date: 1998-12-20 15:48:59 UTC
List: ruby-dev #3876
新井です。

ruby-1.1c9 をEWS48にインストールしている最中に
Segmentation Faultする件です。調査に進展があったの
で報告します。

まず、以下の再現スクリプトで再現します。

while gets
        from = $_.chomp
        if FileTest.readable?(from)
                $stderr.print from, " -> ", "/tmp/hoge", "\n"
        end
end

このスクリプト(hoge.rb)で、
        locate / | ruby hoge.rb
などと大量にファイルパスを与えると再現しました。

ただし、再現するのはEWS4800 R9.1のみで、R11.2やLinuxでは
このスクリプトでは再現しませんでした。

これをデバッガ(dbx)で追いかけたところ
st.c:st_lookup()の133行目の

    124 int
    125 st_lookup(table, key, value)
    126     st_table *table;
    127     register char *key;
    128     char **value;
    129 {
    130     int hash_val;
    131     register st_table_entry *ptr;
    132
    133     hash_val = do_hash(key, table);
    134
    135     FIND_ENTRY(table, ptr, hash_val);

do_hash()で、tableが指す領域が

(/usr/bin/dbx) 0x598890/10c
00598890:  '/' 'h' 'o' 'm' 'e' '/' 'a' 'r' 'a' 'i'

などとただの文字列になっているのが原因でした。
さらに、この領域が渡される原因を追いかけたところ、

eval.cのrb_eval()の1983行目で

   1975       case NODE_CALL:
   1976         {
   1977             VALUE recv;
   1978             int argc; VALUE *argv; /* used in SETUP_ARGS */
   1979             TMP_PROTECT;
   1980
   1981             BEGIN_CALLARGS;
   1982             recv = rb_eval(self, node->nd_recv);
   1983             SETUP_ARGS(node->nd_args);
   1984             END_CALLARGS;

SETUP_ARGS()で

argv[1]  -> "->"
argv[2]  -> "/tmp/hoge"
argv[3]  -> "\n"

となっているところで、argv[1] の値が

(dbx) argv[1]/4X
00504180:  00000007 0053cca0 00000004 00567ac0
(dbx) 0x567ac0/10x
00567ac0:  202d 3e20 0000 0000 0000 0009 0000 0000
00567ad0:  0a00 7ad8
(dbx) 0x567ac0/10c
00567ac0:  ' ' '-' '>' ' ' ' ' ' ' ' '

から、

(dbx) 0x00504180/4X
00504180:  00000000 00504168 00000004 00567ac0
           ^^^^^^^^ ^^^^^^^^

と値が壊されているためです。このようになるのは、
SETUP_ARGS()の中でargv[3]にstr_new3()で"\n" が割り
当てられるときです。

もう少し追いかけたところ、str_new3()の中でgc_gc()が呼ばれ

    844     gc_mark_trap_list();
    845
    846     gc_sweep();
    847     dont_gc--;
    848 }
    849

846行目 gc_sweep()で、

    585 gc_sweep()
    586 {

    609
    610         while (p < pend) {
    611             if (!(p->as.basic.flags & FL_MARK)) {
    612                 if (p->as.basic.flags) obj_free((VALUE)p);
    613                 p->as.free.flag = 0;
    614                 p->as.free.next = nfreelist;
    615                 nfreelist = p;
    616                 n++;
    617             }

   614                  p->as.free.next = nfreelist;

613行目が実行されたときに
0x504810 (argv[1]の指す先)が、00000007から00000000
に書き変わってました。

(dbx) n; 0x00504180/4X
  [.block207:613 ,0x4310fc]     p->as.free.flag = 0;
00504180:  00000007 0053cca0 00000004 00567ac0
(dbx) n; 0x00504180/4X
  [.block207:614 ,0x431108]     p->as.free.next = nfreelist;
00504180:  00000000 0053cca0 00000004 00567ac0

つまり、

(dbx) p p
0x504180 

となってしまったためです。(というか、FL_MARK が付
いていなかったためかも)

1.1c9には、
[ruby-dev:3688] Re: ruby 1.1c9 released
[ruby-dev:3712] Re: [BUG?] fork(2) and read(2)
[ruby-dev:3721] Re: new delegator
[ruby-dev:3733] Re: about ext/{tk,tcltklib}/Makefile
[ruby-dev:3749] Error message in dln.c(Win32)
[ruby-dev:3765] Re: new delegator 
[ruby-list:11125] [BUG] exec
[ruby-list:11131] Re: tk.rb: font name
[ruby-list:11154] Re: tk.rb: font name
[ruby-list:11172] sample/cal.rb 
[ruby-list:11197] Re: ruby-pcap
[ruby-list:11251] Re: variable $0
[ruby-list:11287] Re: require error?
[ruby-list:11329] Re: How to use GTK::timeout?
[ruby-list:11331] Re: How to use GTK::timeout?

の修正をいれてます。(いれなくても、同現象が再現します)

1.1d0は、まだインストールもしてません。

どなたか以上の現象から原因が分かる人いません?

In This Thread