From: WATANABE Tetsuya Date: 2007-06-06T13:38:21+09:00 Subject: [ruby-dev:30900] ruby 1.9 trunk core ($global_var and 250mb over file) 渡辺哲也です。 ruby 1.9 trunk で core したのでお知らせします。 ruby 1.9.0 (2007-06-06 patchlevel 0) [i686-linux] rev 12449 Vine Linux 3.2 glibc-2.3.3-3vl1.3 再現方法 再現スクリプトです。条件をしぼり込んだところグローバル変数($ 付きの変数)で発生するようです。最初に気が付いたときは、$_ で 起きました。 ------------------------------ while $a = gets end ------------------------------ ファイルサイズは 250MB 程度必要のようです。テキストファイル系 で元ファイルを用意して、次のように倍に(ファイルの数を増やせば さらに)して 250MB 程度のファイルを用意してください。 ------------------------------ cat j.txt j.txt >| jj.txt cat jj.txt jj.txt >| j.txt ------------------------------ バックトレースです。 ------------------------------ #0 0x40134a6f in mallopt () from /lib/i686/libc.so.6 #1 0x40133d23 in malloc () from /lib/i686/libc.so.6 #2 0x0805ec91 in ruby_xmalloc (size=1075819392) at gc.c:239 #3 0x0805ed23 in ruby_xmalloc2 (n=1075819392, size=1) at gc.c:259 #4 0x080a38ab in rb_str_buf_new (capa=128) at string.c:286 #5 0x08062aaa in appendline (fptr=0x816a320, delim=10, strp=0xbf800138, lp=0xbf800158) at io.c:1560 #6 0x08062c56 in rb_io_getline_fast (fptr=0x816a320, delim=10 '\n', limit=0) at io.c:1642 #7 0x080630de in rb_io_gets (io=1076507540) at io.c:1784 #8 0x08066181 in argf_getline (argc=0, argv=0x401ff020) at io.c:4451 #9 0x08066280 in rb_f_gets (argc=0, argv=0x401ff020) at io.c:4511 #10 0x080bdf0e in call_cfunc (func=0x80661e6 , recv=1076549840, len=1075819392, argc=0, argv=0x401fb390) at call_cfunc.ci:32 #11 0x080bbfc3 in th_eval (th=0x8130fd8, initial=0) at insns.def:1279 #12 0x080bd85f in th_eval_body (th=0x8130fd8) at vm.c:1658 #13 0x080bdd48 in rb_thread_eval (th=0x8130fd8, iseqval=1076507960) at vm.c:1864 #14 0x080bf115 in yarvcore_eval_iseq (iseq=1076507960) at yarvcore.c:98 #15 0x080bf1b2 in yarvcore_eval_parsed (node=0x402a35b0, file=1076508060) at yarvcore.c:130 #16 0x080593ea in ruby_exec_internal () at eval.c:212 #17 0x08059425 in ruby_exec () at eval.c:227 #18 0x0805945b in ruby_run () at eval.c:246 #19 0x08056df9 in main () at main.c:47 #20 0x400d9c1f in __libc_start_main () from /lib/i686/libc.so.6 ------------------------------