[#3747] constants (or class vriable?) — Wakou Aoyama <wakou@...>
青山です。
原です。
青山です。
まつもと ゆきひろです
In message <199812080034.JAA05946@picachu.netlab.co.jp>
立石です。
まつもと ゆきひろです
[#3773] pack("M")/unpack("M") — shugo@... (MAEDA Shugo)
前田です。
[#3794] port NetBSD/ alpha 1.3I — SHIROYAMA Takayuki <psi@...>
[#3826] ruby 1.1d0 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
渡辺哲也です。
ふなばです。
笠原です。
前田です。
[#3851] tkutil patch (for 1.1d0) — ttate@...
立石です。
[#3859] missing/setenv.c in 1.1d0 — Inaba Hiroto <inaba@...>
稲葉です。こんなにパッチがあると、みのがされてしまうかも。
[#3862] 1.1d0 new here document — Wakou Aoyama <wakou@...>
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
[#3873] (?: ) does not work? — shugo@... (MAEDA Shugo)
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
白山@Stellarです。
[#3881] I want to catch all jump — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
[#3894] ruby 1.1d1 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
わたなべです.
[#3899] interpreter reinitialization — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
[#3962] ruby 1.3(!) released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#3966] [BUG] exception in safe level 4 — shugo@... (Shugo Maeda)
前田です。
[#3997] [BUG] "#{}" while 1 — gotoken@... (GOTO Kentaro)
ごとけんです
まつもと ゆきひろです
[#4002] config.guess — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
笠原です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
[#4005] [BUG] ruby 1.3(98/12/24) [i686-linux] at rb_gc_mark() — Ryo HAYASAKA <hayasaka@...>
早坂@会津大学といいます。
In message "[ruby-dev:4005] [BUG] ruby 1.3(98/12/24) [i686-linux] at rb_gc_mark()"
早坂@会津大学です。
[#4015] Integer proper methods — gotoken@... (GOTO Kentaro)
ごとけんです
[#4030] module Precision — gotoken@... (GOTO Kentaro)
ごとけんです
ごとけんです
まつもと ゆきひろです
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
ごとけんです
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
ごとけんです
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
けいじゅ@日本ラショナルソフトウェアです.
最近あんまり建設的でないわたし.
けいじゅ@日本ラショナルソフトウェアです.
ごとけんです
原です。
[#4032] [Req] make-symbol? — shugo@... (Shugo Maeda)
前田です。
[ruby-dev:3876] Re: ruby-1.1c9 install 中に SEGV
新井です。
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は、まだインストールもしてません。
どなたか以上の現象から原因が分かる人いません?