From: TANAKA Shin-ichi Date: 1998-07-17T18:56:48+09:00 Subject: [ruby-list:8775] Re: ruby 1.1c0 released 東芝の田中です。 On Fri, 17 Jul 1998, Yukihiro Matsumoto wrote: > ftp://ftp.netlab.co.jp/pub/lang/ruby/ruby-1.1c.tar.gz を早速コンパイルして使ってみています。 が、/usr/share/dict/web2 (英単語のリスト、とっても長いです) を 読み込む fname = "/usr/share/dict/web2" fp = open(fname) ln = 0 foo = {} while (line = fp.gets) foo[line] = ln #print line end というスクリプトを実行させると aho.rb:6: [BUG] Segmentation fault zsh: 5598 abort ruby aho.rb といってお亡くなりになってしまいます。 環境はFreeBSD 2.2.6で、 ./configure make make install としてインストールしました。 print lineを生かしておくと、71500行程度読み込んだところあたりです。 gdbで見た結果を以下に添付します。 (gdb) run aho.rb Starting program: /usr/local/bin/ruby aho.rb Program received signal SIGSEGV, Segmentation fault. gc_mark (ptr=0x90900000) at gc.c:385 385 if (obj->as.basic.flags == 0) return; /* free cell */ (gdb) bt #0 gc_mark (ptr=0x90900000) at gc.c:385 #1 0xfd43 in mark_hashentry (key=2425356288, value=2702423567) at gc.c:354 #2 0x3d850 in st_foreach (table=0xa7f20, func=0xfd34 , arg=0x0) at st.c:388 #3 0xfd67 in mark_hash (tbl=0xa7f20) at gc.c:364 #4 0x101a8 in gc_mark (ptr=0x830d0) at gc.c:513 #5 0xfd86 in gc_mark_maybe (obj=0x830d0) at gc.c:372 #6 0x10223 in gc_mark (ptr=0x8ed2c) at gc.c:556 #7 0xa425 in blk_mark (data=0x93180) at eval.c:4832 #8 0x101c8 in gc_mark (ptr=0x83508) at gc.c:524 #9 0xfd13 in mark_entry (key=7957, value=537864) at gc.c:337 #10 0x3d850 in st_foreach (table=0x8f0d0, func=0xfd08 , arg=0x0) at st.c:388 #11 0xfd2f in mark_tbl (tbl=0x8f0d0) at gc.c:346 #12 0x10154 in gc_mark (ptr=0x85f88) at gc.c:491 #13 0x1014c in gc_mark (ptr=0x85f9c) at gc.c:490 #14 0x1014c in gc_mark (ptr=0x85fb0) at gc.c:490 #15 0x1016c in gc_mark (ptr=0x85fc4) at gc.c:497 #16 0x10098 in gc_mark (ptr=0x85fec) at gc.c:487 #17 0x10098 in gc_mark (ptr=0x83468) at gc.c:487 #18 0xfd13 in mark_entry (key=8085, value=537704) at gc.c:337 #19 0x3d850 in st_foreach (table=0x8f0d0, func=0xfd08 , arg=0x0) at st.c:388 #20 0xfd2f in mark_tbl (tbl=0x8f0d0) at gc.c:346 #21 0x101d8 in gc_mark (ptr=0x8ed18) at gc.c:528 #22 0xfd13 in mark_entry (key=2809, value=584984) at gc.c:337 #23 0x3d850 in st_foreach (table=0x8f1f0, func=0xfd08 , arg=0x0) at st.c:388 #24 0xfd2f in mark_tbl (tbl=0x8f1f0) at gc.c:346 #25 0x101d8 in gc_mark (ptr=0x8ecdc) at gc.c:528 #26 0x1016c in gc_mark (ptr=0x8ecc8) at gc.c:497 #27 0x1016c in gc_mark (ptr=0x8ecb4) at gc.c:497 #28 0x10098 in gc_mark (ptr=0x8ecf0) at gc.c:487 #29 0x10098 in gc_mark (ptr=0x8d42c) at gc.c:487 #30 0x10098 in gc_mark (ptr=0x8d440) at gc.c:487 #31 0x10098 in gc_mark (ptr=0x4071b0) at gc.c:487 #32 0xfd86 in gc_mark_maybe (obj=0x4071b0) at gc.c:372 #33 0x10677 in gc_mark_frame (frame=0xefbfd338) at gc.c:757 #34 0x106ce in gc_gc () at gc.c:816 #35 0xf995 in xmalloc (size=85372) at gc.c:62 #36 0xf9da in xcalloc (n=21343, size=4) at gc.c:81 #37 0x3d582 in rehash (table=0xa7f20) at st.c:234 #38 0x3d383 in st_insert (table=0xa7f20, key=0x40719c "\a\030", value=0x1 ) at st.c:176 #39 0x116f5 in hash_aset (hash=536784, key=4223408, val=1) at hash.c:486 #40 0x7aab in rb_call0 (klass=559624, recv=536784, id=333, argc=2, argv=0xefbfd3c4, body=0x88788, nosuper=1) at eval.c:3382 #41 0x82f0 in rb_call (klass=559624, recv=536784, mid=333, argc=2, argv=0xefbfd3c4, scope=0) at eval.c:3649 #42 0x4ce8 in rb_eval (self=581864, node=0x83198) at eval.c:1999 #43 0x4026 in rb_eval (self=581864, node=0x83148) at eval.c:1717 #44 0x3d46 in rb_eval (self=581864, node=0x83120) at eval.c:1608 #45 0x251a in eval_node (self=581864) at eval.c:925 #46 0x264d in ruby_run () at eval.c:955 #47 0x1611 in main (argc=2, argv=0xefbfd9dc, envp=0xefbfd9e8) at main.c:32 (gdb)