e$B$3$s$K$A$O!"e(Bsheepman e$B$G$9!#e(B
e$B0J2<$N$h$&$Ke(B csv e$B%i%$%V%i%j$r;H$&$He(B core e$B$rEG$-$^$9!#e(B
$ cat t.rb
require ‘csv’
a = “7777777,4444,1\r\n”
s = a * 20000
CSV.parse(s)
$ ruby-1.9 -v t.rb
ruby 1.9.0 (2007-02-15 patchlevel 0) [i686-linux]
zsh: segmentation fault ruby-1.9 -v t.rb
$ gdb ~/ruby/src/ruby-build/ruby-1.9
GNU gdb 5.2.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for
details.
This GDB was configured as “i386-vine-linux”…
(gdb) run t.rb
Starting program: /home/sheepman/ruby/src/ruby-build/ruby-1.9 t.rb
Program received signal SIG32, Real-time event 32.
0x4002c1d4 in pthread_getconcurrency () from /lib/i686/libpthread.so.0
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x080a37b9 in str_new (klass=1076542560,
ptr=0x4022d7b2
“44,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n77”…,
len=1) at …/ruby/string.c:142
142 str = str_alloc(klass);
(gdb) bt
#0 0x080a37b9 in str_new (klass=1076542560,
ptr=0x4022d7b2
“44,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n7777777,4444,1\r\n77”…,
len=1) at …/ruby/string.c:142
#1 0x080a4d41 in rb_str_substr (str=1076758380, beg=182186, len=1) at
…/ruby/string.c:646
#2 0x080a70ee in rb_str_aref (str=1076758380, indx=364373) at
…/ruby/string.c:1630
#3 0x080bf6b3 in call_cfunc (func=0x80a7194 <rb_str_aref_m>,
recv=1076758380, len=1076542560,
argc=1, argv=0x3) at call_cfunc.ci:21
#4 0x080bed65 in th_eval (th=0x8150bd0, initial=0) at insns.def:1289
#5 0x080bf2b3 in th_eval_body (th=0x8150bd0) at …/ruby/vm.c:1600
#6 0x080ba666 in th_call0 (th=0x8150bd0, klass=1076762940,
recv=1076758360, id=3920,
oid=1076542560, argc=0, argv=0x0, body=0x81890b8, nosuper=0) at
…/ruby/vm.c:534
#7 0x0805a6bb in rb_call (klass=1076762940, recv=1076758360, mid=3920,
argc=0, argv=0x0, scope=2)
at …/ruby/eval.c:1640
#8 0x08059f52 in iterate_method (obj=1076542560) at ruby.h:752
#9 0x08059ed4 in rb_iterate (it_proc=0x8059f24 <iterate_method>,
data1=3221219056,
bl_proc=0x80d0570 <collect_i>, data2=1076758300) at
…/ruby/eval.c:1246
#10 0x08059fc6 in rb_block_call (obj=1076542560, mid=1076542560,
argc=1076542560,
argv=0x402abc60, bl_proc=0x80d0570 <collect_i>, data2=1076758300) at
…/ruby/eval.c:1315
#11 0x080d05fc in enum_collect (obj=1076758360) at …/ruby/enum.c:312
#12 0x080bf6b3 in call_cfunc (func=0x80d05a8 <enum_collect>,
recv=1076758360, len=1076542560,
argc=0, argv=0x3) at call_cfunc.ci:21
#13 0x080bed65 in th_eval (th=0x8150bd0, initial=0) at insns.def:1289
#14 0x080bf2b3 in th_eval_body (th=0x8150bd0) at …/ruby/vm.c:1600
#15 0x080bf643 in rb_thread_eval (th=0x8150bd0, iseqval=1076875640) at
…/ruby/vm.c:1806
#16 0x080c08a8 in yarvcore_eval_iseq (iseq=1076875640) at
…/ruby/yarvcore.c:96
#17 0x08058f3c in ruby_exec_internal () at …/ruby/eval.c:228
#18 0x08058f58 in ruby_exec () at …/ruby/eval.c:241
#19 0x08058f93 in ruby_run () at …/ruby/eval.c:260
#20 0x0805689c in th_get_ruby_level_cfp (th=0x402abc60, cfp=0x3) at
…/ruby/main.c:47
#21 0x400dbc1f in __libc_start_main () from /lib/i686/libc.so.6