In article [email protected],
Yukihiro M. [email protected] writes:
- [ruby-dev:29049] 1.8.5-preview1e$B$Ge(Bsegv
e$B$h$/$o$+$i$J$$!#e(B
e$B<j85$G:F8=$7$?$N$G=L$a$F$_$^$7$?!#e(B
e$B=L$a$?$N$Oe(B boron e$B$G$b:F8=$7$^$9!#e(B
boron% ./ruby -e ’
class C
“”.sub(//, “”)
define_method(“m”) {
30000.times {
“a” + “b”
}
require “rexml/document”
raise
}
end
o = C.new
100.times {|i|
p i
begin
o.m(nil)
rescue
end
}
’
0
1
2
-e:6: [BUG] Segmentation fault
ruby 1.8.5 (2006-07-30) [i686-linux]
zsh: abort (core dumped) ./ruby -e
boron% gdb ruby core
GNU gdb 6.3-debian
Copyright 2004 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-linux”…Using host libthread_db
library “/lib/tls/libthread_db.so.1”.
Core was generated by `./ruby -e
class C
“”.sub(//, “”)
define_method(“m”) {
30000.times {
'.
Program terminated with signal 6, Aborted.
warning: current_sos: Can’t read pathname for load map: Input/output
error
Reading symbols from /lib/tls/libdl.so.2…Reading symbols from
/usr/lib/debug/lib/tls/libdl-2.3.2.so…done.
done.
Loaded symbols for /lib/tls/libdl.so.2
Reading symbols from /lib/tls/libcrypt.so.1…Reading symbols from
/usr/lib/debug/lib/tls/libcrypt-2.3.2.so…done.
done.
Loaded symbols for /lib/tls/libcrypt.so.1
Reading symbols from /lib/tls/libm.so.6…Reading symbols from
/usr/lib/debug/lib/tls/libm-2.3.2.so…done.
done.
Loaded symbols for /lib/tls/libm.so.6
Reading symbols from /lib/tls/libc.so.6…Reading symbols from
/usr/lib/debug/lib/tls/libc-2.3.2.so…done.
done.
Loaded symbols for /lib/tls/libc.so.6
Reading symbols from /lib/ld-linux.so.2…Reading symbols from
/usr/lib/debug/lib/ld-2.3.2.so…done.
done.
Loaded symbols for /lib/ld-linux.so.2
#0 0x4009983b in raise () from /lib/tls/libc.so.6
(gdb) bt
#0 0x4009983b in raise () from /lib/tls/libc.so.6
#1 0x4009afa2 in abort () from /lib/tls/libc.so.6
#2 0x080cf5a6 in rb_bug (fmt=0x0) at …/…/ruby/error.c:214
#3 0x080ae7e2 in sigsegv (sig=11) at …/…/ruby/signal.c:537
#4
#5 gc_mark (ptr=1851880052, lev=1) at …/…/ruby/gc.c:731
#6 0x0806f162 in gc_mark_children (ptr=135653907, lev=1) at
…/…/ruby/gc.c:990
#7 0x0806eee7 in rb_gc_mark (ptr=1851880052) at …/…/ruby/gc.c:754
#8 0x08061386 in blk_mark (data=0x812eaa8) at …/…/ruby/eval.c:8121
#9 0x0806f070 in gc_mark_children (ptr=1075603340, lev=11) at
…/…/ruby/gc.c:958
#10 0x0806eca8 in mark_entry (key=10433, value=1851880052,
lev=1851880052) at …/…/ruby/gc.c:664
#11 0x080b1187 in st_foreach (table=0x812e7f0, func=0x806ec90
<mark_entry>, arg=9) at …/…/ruby/st.c:487
#12 0x0806ecd5 in mark_tbl (tbl=0x0, lev=1851880052) at
…/…/ruby/gc.c:674
#13 0x0806ef6e in gc_mark_children (ptr=1075603560, lev=9) at
…/…/ruby/gc.c:924
#14 0x0806eca8 in mark_entry (key=10413, value=1851880052,
lev=1851880052) at …/…/ruby/gc.c:664
#15 0x080b1187 in st_foreach (table=0x80ffbc8, func=0x806ec90
<mark_entry>, arg=8) at …/…/ruby/st.c:487
#16 0x0806ecd5 in mark_tbl (tbl=0x0, lev=1851880052) at
…/…/ruby/gc.c:674
#17 0x0806ef7d in gc_mark_children (ptr=1075674420, lev=8) at
…/…/ruby/gc.c:925
#18 0x0806eca8 in mark_entry (key=2937, value=1851880052,
lev=1851880052) at …/…/ruby/gc.c:664
#19 0x080b1187 in st_foreach (table=0x80ffed0, func=0x806ec90
<mark_entry>, arg=7) at …/…/ruby/st.c:487
#20 0x0806ecd5 in mark_tbl (tbl=0x0, lev=1851880052) at
…/…/ruby/gc.c:674
#21 0x0806ef7d in gc_mark_children (ptr=1075674360, lev=7) at
…/…/ruby/gc.c:925
#22 0x0806ef4a in gc_mark_children (ptr=1075674400, lev=6) at
…/…/ruby/gc.c:919
#23 0x0806eca8 in mark_entry (key=2937, value=1851880052,
lev=1851880052) at …/…/ruby/gc.c:664
#24 0x080b1187 in st_foreach (table=0x8100068, func=0x806ec90
<mark_entry>, arg=5) at …/…/ruby/st.c:487
#25 0x0806ecd5 in mark_tbl (tbl=0x0, lev=1851880052) at
…/…/ruby/gc.c:674
#26 0x0806ef7d in gc_mark_children (ptr=1075674320, lev=5) at
…/…/ruby/gc.c:925
#27 0x0806ef4a in gc_mark_children (ptr=1075664940, lev=4) at
…/…/ruby/gc.c:919
#28 0x0806ef4a in gc_mark_children (ptr=1075664960, lev=3) at
…/…/ruby/gc.c:919
#29 0x0806ef4a in gc_mark_children (ptr=1075604940, lev=2) at
…/…/ruby/gc.c:919
#30 0x0806f11f in gc_mark_children (ptr=1075604860, lev=1) at
…/…/ruby/gc.c:980
#31 0x0806fb86 in garbage_collect () at …/…/ruby/gc.c:1357
#32 0x0806e875 in rb_newobj () at …/…/ruby/gc.c:407
#33 0x080b12ab in str_alloc (klass=1851880052) at …/…/ruby/string.c:67
#34 0x080b1324 in str_new (klass=1851880052, ptr=0x0, len=2) at
…/…/ruby/string.c:89
#35 0x080b13a1 in rb_str_new (ptr=0x6e617274 <Address 0x6e617274 out of
bounds>, len=1851880052) at …/…/ruby/string.c:105
#36 0x080b1b31 in rb_str_plus (str1=1075474480, str2=1075474440) at
…/…/ruby/string.c:389
#37 0x08068f52 in call_cfunc (func=0x80b1b00 <rb_str_plus>,
recv=1075474480, len=0, argc=0, argv=0xbfffbf68)
at …/…/ruby/eval.c:5653
#38 0x0805c8ba in rb_call0 (klass=1075664960, recv=1075474480, id=43,
oid=1851880052, argc=1, argv=0xbfffbf68,
—Type to continue, or q to quit—
body=0x401d56b0, flags=0) at …/…/ruby/eval.c:5812
#39 0x0805d396 in rb_call (klass=1075664960, recv=1075474480, mid=43,
argc=1, argv=0xbfffbf68, scope=0)
at …/…/ruby/eval.c:6050
#40 0x08057fb2 in rb_eval (self=1075603240, n=0x6e617274) at ruby.h:654
#41 0x0805ad4c in rb_yield_0 (val=40727, self=1075603240, klass=0,
flags=0, avalue=0) at …/…/ruby/eval.c:4989
#42 0x0805b319 in rb_yield (val=1851880052) at …/…/ruby/eval.c:5071
#43 0x08083a7f in int_dotimes (num=60001) at …/…/ruby/numeric.c:2741
#44 0x08068f81 in call_cfunc (func=0x8083a30 <int_dotimes>, recv=60001,
len=0, argc=0, argv=0x0) at …/…/ruby/eval.c:5659
#45 0x0805c8ba in rb_call0 (klass=1075655620, recv=60001, id=5433,
oid=1851880052, argc=0, argv=0x0, body=0x401d32fc,
flags=0) at …/…/ruby/eval.c:5812
#46 0x0805d396 in rb_call (klass=1075655620, recv=60001, mid=5433,
argc=0, argv=0x0, scope=0) at …/…/ruby/eval.c:6050
#47 0x08057fb2 in rb_eval (self=1075603240, n=0x6e617274) at ruby.h:654
#48 0x080573ce in rb_eval (self=1075603240, n=0x6e617274) at
…/…/ruby/eval.c:3175
#49 0x0805ad4c in rb_yield_0 (val=1076429900, self=1075603240,
klass=1075603560, flags=1, avalue=2)
at …/…/ruby/eval.c:4989
#50 0x08062090 in proc_invoke (proc=1075603340, args=1076429900,
self=1075603240, klass=1075603560) at ruby.h:654
#51 0x0805cff0 in rb_call0 (klass=1075603560, recv=1075603240, id=10433,
oid=1851880052, argc=1, argv=0xbfffdb28,
body=0x401c6778, flags=0) at …/…/ruby/eval.c:5846
#52 0x0805d396 in rb_call (klass=1075603560, recv=1075603240, mid=10433,
argc=1, argv=0xbfffdb28, scope=0)
at …/…/ruby/eval.c:6050
#53 0x08057fb2 in rb_eval (self=1075669500, n=0x6e617274) at ruby.h:654
#54 0x08057644 in rb_eval (self=1075669500, n=0x6e617274) at
…/…/ruby/eval.c:3261
#55 0x0805ad4c in rb_yield_0 (val=5, self=1075669500, klass=0, flags=0,
avalue=0) at …/…/ruby/eval.c:4989
#56 0x0805b319 in rb_yield (val=1851880052) at …/…/ruby/eval.c:5071
#57 0x08083a7f in int_dotimes (num=201) at …/…/ruby/numeric.c:2741
#58 0x08068f81 in call_cfunc (func=0x8083a30 <int_dotimes>, recv=201,
len=0, argc=0, argv=0x0) at …/…/ruby/eval.c:5659
#59 0x0805c8ba in rb_call0 (klass=1075655620, recv=201, id=5433,
oid=1851880052, argc=0, argv=0x0, body=0x401d32fc, flags=0)
at …/…/ruby/eval.c:5812
#60 0x0805d396 in rb_call (klass=1075655620, recv=201, mid=5433, argc=0,
argv=0x0, scope=0) at …/…/ruby/eval.c:6050
#61 0x08057fb2 in rb_eval (self=1075669500, n=0x6e617274) at ruby.h:654
#62 0x080573ce in rb_eval (self=1075669500, n=0x6e617274) at
…/…/ruby/eval.c:3175
#63 0x0805441d in ruby_exec_internal () at …/…/ruby/eval.c:1606
#64 0x08054456 in ruby_exec () at …/…/ruby/eval.c:1626
#65 0x08054480 in ruby_run () at …/…/ruby/eval.c:1636
#66 0x08052595 in main (argc=1851880052, argv=0x6e617274,
envp=0xbffffa14) at …/…/ruby/main.c:46
(gdb)