Make rdoc cause segv on OpenBSD

e$B!!$5$5$@$G$9!#e(B

e$B!!e(BOpenBSD e$B$Ge(B make rdoc e$B$,$3$1$^$9!#e(B

e$B!!e(Brb_enc_get e$B$NCf$J$N$G!“e(Bm17n
e$B$+$J$!!”$J$s$F;W$$$^$9$,$I$&$G$7$g$&$+!#e(B

$ make rdoc

resolv.rb:
c…ccc…c…ccccccccccccmmc
Program received signal SIGSEGV, Segmentation fault.
[Switching to process 6671, thread 0x82ebb000]
rb_enc_get (obj=2357052220) at …/trunk/encoding.c:500
500 return rb_enc_from_index(rb_enc_get_index(obj));
(gdb) bt
#0 rb_enc_get (obj=2357052220) at …/trunk/encoding.c:500
#1 0x1c069e7b in rb_str_substr (str=2357052220, beg=24864, len=1)
at …/trunk/string.c:806
#2 0x1c08ab5f in call_cfunc (func=0x1c06c900 <rb_str_aref_m>,
recv=2357052220, len=49729, argc=2, argv=0x7e0d12bc) at
vm_insnhelper.c:278
#3 0x1c08babb in vm_call_cfunc (th=0x80f5a400, reg_cfp=0x7e1508c8,
num=2,
id=336, recv=2357052220, klass=2095899080, flag=97, mn=0x7cecde80,
blockptr=0x0) at vm_insnhelper.c:371
#4 0x1c08aed4 in vm_call_method (th=0x80f5a400, cfp=0x7e1508c8, num=2,
blockptr=0x0, flag=0, id=336, mn=0x7cecde6c, recv=2357052220,
klass=2095899080) at vm_insnhelper.c:503
#5 0x1c086e78 in vm_eval (th=0x80f5a400, initial=0) at insns.def:1050
#6 0x1c089bae in vm_eval_body (th=0x80f5a400) at …/trunk/vm.c:1148
#7 0x1c08546b in invoke_block (th=0x80f5a400, block=0x7e9b89c0,
self=2357051320, argc=2, argv=0x7e0d126c, blockptr=0x0)
at …/trunk/vm.c:573
#8 0x1c085646 in vm_invoke_proc (th=0x80f5a400, proc=0x7e9b89c0,
self=2357051320, argc=2, argv=0x7e0d126c, blockptr=0x0)
at …/trunk/vm.c:607
#9 0x1c015988 in proc_call (argc=2, argv=0x7e0d126c, procval=24864)
at …/trunk/proc.c:441
#10 0x1c08ab5f in call_cfunc (func=0x1c015944 <proc_call>,
recv=2357047100,
len=49729, argc=2, argv=0x7e0d12bc) at vm_insnhelper.c:278
#11 0x1c08babb in vm_call_cfunc (th=0x80f5a400, reg_cfp=0x7e150a18,
num=2,
id=7528, recv=2357047100, klass=2095798120, flag=97, mn=0x7ceb5704,
blockptr=0x0) at vm_insnhelper.c:371
#12 0x1c08aed4 in vm_call_method (th=0x80f5a400, cfp=0x7e150a18, num=2,
blockptr=0x0, flag=0, id=7528, mn=0x7ceb56dc, recv=2357047100,
klass=2095798120) at vm_insnhelper.c:503
#13 0x1c086e78 in vm_eval (th=0x80f5a400, initial=0) at insns.def:1050
#14 0x1c089bae in vm_eval_body (th=0x80f5a400) at …/trunk/vm.c:1148
#15 0x1c08546b in invoke_block (th=0x80f5a400, block=0x7e150d74,
self=2357051340, argc=1, argv=0xcfbc3ebc, blockptr=0x0)
at …/trunk/vm.c:573
#16 0x1c085532 in vm_yield (th=0xc241, argc=1, argv=0xcfbc3ebc)
at …/trunk/vm.c:590
#17 0x1c012957 in rb_yield_0 (argc=1, argv=0xcfbc3ebc) at
…/trunk/eval.c:909
#18 0x1c0114c6 in rb_f_catch (argc=0, argv=0x7e0d10b0) at
eval_jump.c:118
#19 0x1c08ab5f in call_cfunc (func=0x1c0113fc <rb_f_catch>,
recv=2357051340,
len=49729, argc=1, argv=0x7e0d12bc) at vm_insnhelper.c:278
#20 0x1c08babb in vm_call_cfunc (th=0x80f5a400, reg_cfp=0x7e150d60,
num=1,
id=3040, recv=2357051340, klass=2095912500, flag=2145,
mn=0x7cec9f38,
blockptr=0x7e150d74) at vm_insnhelper.c:371
#21 0x1c08aed4 in vm_call_method (th=0x80f5a400, cfp=0x7e150d60, num=1,
blockptr=0x7e150d74, flag=8, id=3040, mn=0x7cec9f10,
recv=2357051340,
klass=2202712700) at vm_insnhelper.c:503
#22 0x1c086e78 in vm_eval (th=0x80f5a400, initial=0) at insns.def:1050
#23 0x1c089bae in vm_eval_body (th=0x80f5a400) at …/trunk/vm.c:1148
#24 0x1c08546b in invoke_block (th=0x80f5a400, block=0x7e150e1c,
self=2357051340, argc=1, argv=0xcfbc42cc, blockptr=0x0)
at …/trunk/vm.c:573
#25 0x1c085532 in vm_yield (th=0xc241, argc=1, argv=0xcfbc42cc)
at …/trunk/vm.c:590
#26 0x1c012957 in rb_yield_0 (argc=1, argv=0xcfbc42cc) at
…/trunk/eval.c:909
#27 0x1c0114c6 in rb_f_catch (argc=0, argv=0x7e0d109c) at
eval_jump.c:118
#28 0x1c08ab5f in call_cfunc (func=0x1c0113fc <rb_f_catch>,
recv=2357051340,
len=49729, argc=1, argv=0x7e0d12bc) at vm_insnhelper.c:278
#29 0x1c08babb in vm_call_cfunc (th=0x80f5a400, reg_cfp=0x7e150e08,
num=1,
id=3040, recv=2357051340, klass=2095912500, flag=2145,
mn=0x7cec9f38,
blockptr=0x7e150e1c) at vm_insnhelper.c:371
#30 0x1c08aed4 in vm_call_method (th=0x80f5a400, cfp=0x7e150e08, num=1,
blockptr=0x7e150e1c, flag=8, id=3040, mn=0x7cec9f10,
recv=2357051340,
klass=2202712700) at vm_insnhelper.c:503
#31 0x1c086e78 in vm_eval (th=0x80f5a400, initial=0) at insns.def:1050
#32 0x1c089bae in vm_eval_body (th=0x80f5a400) at …/trunk/vm.c:1148
#33 0x1c08546b in invoke_block (th=0x80f5a400, block=0x7e150efc,
self=2202878380, argc=1, argv=0xcfbc47a0, blockptr=0x0)
at …/trunk/vm.c:573
#34 0x1c085532 in vm_yield (th=0xc241, argc=1, argv=0xcfbc47a0)
at …/trunk/vm.c:590
#35 0x1c012957 in rb_yield_0 (argc=1, argv=0xcfbc47a0) at
…/trunk/eval.c:909
#36 0x1c01297b in rb_yield (val=2202671580) at …/trunk/eval.c:920
#37 0x1c093807 in each_i (ary=2202866280) at …/trunk/array.c:1135
#38 0x1c013029 in rb_ensure (b_proc=0x1c0937e0 <each_i>,
data1=2202866280,
e_proc=0x1c0937b8 <each_unlock>, data2=2202866280) at
…/trunk/eval.c:1204
#39 0x1c093855 in rb_ary_each (ary=2202866280) at …/trunk/array.c:1159
#40 0x1c08ab5f in call_cfunc (func=0x1c093814 <rb_ary_each>,
recv=2202866280,
len=49729, argc=0, argv=0x7e0d12bc) at vm_insnhelper.c:278
#41 0x1c08babb in vm_call_cfunc (th=0x80f5a400, reg_cfp=0x7e150ee8,
num=0,
id=392, recv=2202866280, klass=2095860340, flag=97, mn=0x7cec4380,
blockptr=0x7e150efc) at vm_insnhelper.c:371
#42 0x1c08aed4 in vm_call_method (th=0x80f5a400, cfp=0x7e150ee8, num=0,
blockptr=0x7e150efc, flag=0, id=392, mn=0x7cec436c, recv=2202866280,
klass=2095860340) at vm_insnhelper.c:503
#43 0x1c086e78 in vm_eval (th=0x80f5a400, initial=0) at insns.def:1050
#44 0x1c089bae in vm_eval_body (th=0x80f5a400) at …/trunk/vm.c:1148
#45 0x1c089eb2 in rb_iseq_eval (iseqval=2095736620) at
…/trunk/vm.c:1357
#46 0x1c011cf7 in ruby_exec_node (n=0x7cea690c,
file=0x7c9c7781 “…/trunk/bin/rdoc”) at …/trunk/eval.c:229
#47 0x1c011d5c in ruby_run_node (n=0x7cea690c) at …/trunk/eval.c:259
#48 0x1c00f656 in main (argc=8, argv=0xcfbc4ee8, envp=0xcfbc4f0c)
at …/trunk/main.c:36

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32756] make rdoc cause segv on OpenBSD”
on Tue, 25 Dec 2007 15:38:53 +0900, SASADA Koichi [email protected]
writes:

|e$B!!e(BOpenBSD e$B$Ge(B make rdoc e$B$,$3$1$^$9!#e(B
|e$B!!e(Brb_enc_get e$B$NCf$J$N$G!“e(Bm17n e$B$+$J$!!”$J$s$F;W$$$^$9$,$I$&$G$7$g$&$+!#e(B

e$B$H$$$&$+!"C1$J$k4X?t8F=P$7$Ge(Bsegve$B$9$k$N$OG<F@$,9T$-$^$;$s!#$?e(B
e$B$V$s!“e(Binlinee$B2=$5$l$F$$$k$N$G$7$g$&!#e(B-Oe$B$r2<$2$k!”$^$?$O30$9$He(B
e$B>I>u$,>C$($?$j$7$J$$$G$7$g$&$+!#e(B

e$B!!$5$5$@$G$9!#e(B

Yukihiro M. wrote:

e$B$H$$$&$+!"C1$J$k4X?t8F=P$7$Ge(Bsegve$B$9$k$N$OG<F@$,9T$-$^$;$s!#$?e(B
e$B$V$s!“e(Binlinee$B2=$5$l$F$$$k$N$G$7$g$&!#e(B-Oe$B$r2<$2$k!”$^$?$O30$9$He(B
e$B>I>u$,>C$($?$j$7$J$$$G$7$g$&$+!#e(B

e$B!!e(Bencoding.o e$B$re(B -O0
e$B$G$d$C$F$_$?$i0J2<$NMM$K$J$j$^$7$?!#e(B

e$B!!$5$5$@$G$9!#e(B

SASADA Koichi wrote:

e$B!!e(Bencoding.o e$B$re(B -O0 e$B$G$d$C$F$_$?$i0J2<$NMM$K$J$j$^$7$?!#e(B

e$B!!A4Ite(B -O0 e$B$G$d$C$?$iDL$C$A$c$$$^$7$?!#7y$JM=46!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32774] Re: make rdoc cause segv on OpenBSD”
on Tue, 25 Dec 2007 17:28:23 +0900, SASADA Koichi [email protected]
writes:

|SASADA Koichi wrote:
|> e$B!!e(Bencoding.o e$B$re(B -O0 e$B$G$d$C$F$_$?$i0J2<$NMM$K$J$j$^$7$?!#e(B
|
|e$B!!A4Ite(B -O0 e$B$G$d$C$?$iDL$C$A$c$$$^$7$?!#7y$JM=46!#e(B

e$B:#!"e(BOpenBSDe$B$C$Fe(BGCCe$B$8$c$J$$$s$G$7$?$C$1!)e(B

e$B!!$5$5$@$G$9!#e(B

Yukihiro M. wrote:

e$B:#!"e(BOpenBSDe$B$C$Fe(BGCCe$B$8$c$J$$$s$G$7$?$C$1!)e(B

e$B!!e(Bgcc e$B$G$9!#e(B

$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-unknown-openbsd4.1/3.3.5/specs
Configured with:
Thread model: single
gcc version 3.3.5 (propolice)

e$B$O$8$a$^$7$F!#e(BGimitee$B$H$$$$$^$9!#e(B

FreeBSD 6.0e$B$G$bF1$8$/e(Bmake rdoce$B$Ge(BIllegal
instructione$B$K$J$j$^$7$?!#Mn$A$F$$$k2U=j$O0c$&$_$?$$$G$9$,!D!#;H$C$?e(BRubye$B$Oe(B
ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.bz2
e$B$G$9!#e(B

-O0e$B$@$H%(%i!<$K$J$j$^$;$s$G$7$?!#e(B

$ gcc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.4 [FreeBSD] 20050518
$ ./configure --program-suffix=19
$ make
$ make rdoc
./miniruby ./runruby.rb --extout=.ext – “./bin/rdoc” --all --ri
–op “.ext/rdoc”

(snip)

                      format.rb: cmIllegal instruction (core dumped)

*** Error code 132

Stop in /usr/home/gimite/archive/default/ruby-1.9.0-0.
$ ./miniruby ./runruby.rb --extout=.ext – “./bin/rdoc” --all --ri
–op “.ext/rdoc” lib/date/format.rb
$ gdb ruby19 ruby19.core
GNU gdb 6.1.1 [FreeBSD]
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-marcel-freebsd”…
Core was generated by `ruby19’.
Program terminated with signal 4, Illegal instruction.
Reading symbols from /usr/lib/libthr.so.2…done.
Loaded symbols for /usr/lib/libthr.so.2
Reading symbols from /lib/libcrypt.so.3…done.
Loaded symbols for /lib/libcrypt.so.3
Reading symbols from /lib/libm.so.4…done.
Loaded symbols for /lib/libm.so.4
Reading symbols from /lib/libc.so.6…done.
Loaded symbols for /lib/libc.so.6
Reading symbols from
/usr/home/gimite/archive/default/ruby-1.9.0-0/.ext/i386-freebsd6.0/etc.so…done.
Loaded symbols for
/usr/home/gimite/archive/default/ruby-1.9.0-0/.ext/i386-freebsd6.0/etc.so
Reading symbols from /libexec/ld-elf.so.1…done.
Loaded symbols for /libexec/ld-elf.so.1
#0 match_at (reg=0x8329800, str=0x924f83c " ", end=0x924f83d “”,
sstart=0x924f83c " ", sprev=0x0, msa=0xbfa00770) at regexec.c:1288
1288 STACK_PUSH_ENSURED(STK_ALT, FinishCode); /* bottom stack */
[New Thread 0x8154300 (LWP 100118)]
[New Thread 0x8154000 (LWP 100234)]
(gdb) bt
#0 match_at (reg=0x8329800, str=0x924f83c " ", end=0x924f83d “”,
sstart=0x924f83c " ", sprev=0x0, msa=0xbfa00770) at regexec.c:1288
#1 0x080a6e3b in onig_search (reg=0x8329800, str=0x924f83c " ",
end=0x924f83d “”, start=0xbfa00770 “”, range=0x924f83d “”,
region=0x814ed58, option=0) at regexec.c:3605
#2 0x08098052 in rb_reg_search (re=137254840, str=153417780, pos=0,
reverse=0)
at re.c:1054
#3 0x08098b17 in reg_match_pos (re=137254840, strp=0xbfa008b4, pos=0)
at re.c:2175
#4 0x08098b6f in rb_reg_match (re=0, str=153417780) at re.c:2222
#5 0x080d7f79 in vm_eval (th=0x8156000, initial=0) at insns.def:2029
#6 0x080d8e2a in vm_eval_body (th=0x8156000) at vm.c:1148
#7 0x080d94ba in invoke_block (th=0x8156000, block=0x8287ac0,
self=138988120,
argc=2, argv=0x21, blockptr=0x0) at vm.c:573
#8 0x080d967f in vm_invoke_proc (th=0x8156000, proc=0x8287ac0,
self=138988120, argc=2, argv=0x817e25c, blockptr=0x0) at vm.c:607
#9 0x0805e2ac in proc_call (argc=2, argv=0x817e25c, procval=0) at
proc.c:441
#10 0x080d9c96 in vm_call_method (th=0x8156000, cfp=0x81fda18, num=2,
blockptr=0x1, flag=97, id=7584, mn=0x805e268, recv=138981020,
klass=7584)
at vm_insnhelper.c:280
#11 0x080d497d in vm_eval (th=0x8156000, initial=0) at insns.def:1050
#12 0x080d8e2a in vm_eval_body (th=0x8156000) at vm.c:1148
#13 0x080d94ba in invoke_block (th=0x8156000, block=0x81fdd74,
self=138988180,
argc=1, argv=0x21, blockptr=0x0) at vm.c:573
#14 0x080d9ee3 in vm_yield (th=0xbf9ff99c, argc=1, argv=0xbfbfd56c) at
vm.c:590
#15 0x08058d1e in rb_f_catch (argc=0, argv=0x817e0b0) at eval.c:909
#16 0x080d9c96 in vm_call_method (th=0x8156000, cfp=0x81fdd60, num=1,
blockptr=0x81fdd75, flag=2145, id=3040, mn=0x8058c58,
recv=138988180,
klass=3040) at vm_insnhelper.c:280
#17 0x080d497d in vm_eval (th=0x8156000, initial=0) at insns.def:1050
#18 0x080d8e2a in vm_eval_body (th=0x8156000) at vm.c:1148
#19 0x080d94ba in invoke_block (th=0x8156000, block=0x81fde1c,
self=138988180,
argc=1, argv=0x21, blockptr=0x0) at vm.c:573
#20 0x080d9ee3 in vm_yield (th=0xbf9ff99c, argc=1, argv=0xbfbfda1c) at
vm.c:590
#21 0x08058d1e in rb_f_catch (argc=0, argv=0x817e09c) at eval.c:909
#22 0x080d9c96 in vm_call_method (th=0x8156000, cfp=0x81fde08, num=1,
blockptr=0x81fde1d, flag=2145, id=3040, mn=0x8058c58,
recv=138988180,
klass=3040) at vm_insnhelper.c:280
#23 0x080d497d in vm_eval (th=0x8156000, initial=0) at insns.def:1050
#24 0x080d8e2a in vm_eval_body (th=0x8156000) at vm.c:1148
#25 0x080d94ba in invoke_block (th=0x8156000, block=0x81fdefc,
self=139487640,
argc=1, argv=0x21, blockptr=0x0) at vm.c:573
#26 0x080d9ee3 in vm_yield (th=0xbf9ff99c, argc=1, argv=0xbfbfdf90) at
vm.c:590
#27 0x08058d77 in rb_yield (val=139345520) at eval.c:909
#28 0x080e30db in each_i (ary=139476760) at array.c:1135
#29 0x0805922d in rb_ensure (b_proc=0x80e30b8 <each_i>, data1=139476760,
e_proc=0x80e3090 <each_unlock>, data2=139476760) at eval.c:1204
—Type to continue, or q to quit—
#30 0x080e312d in rb_ary_each (ary=139476760) at array.c:1159
#31 0x080d9c6f in vm_call_method (th=0x8156000, cfp=0x81fdee8, num=0,
blockptr=0x81fdefd, flag=97, id=392, mn=0x80e30ec, recv=139476760,
klass=392) at vm_insnhelper.c:280
#32 0x080d497d in vm_eval (th=0x8156000, initial=0) at insns.def:1050
#33 0x080d8e2a in vm_eval_body (th=0x8156000) at vm.c:1148
#34 0x080da6aa in rb_iseq_eval (iseqval=136329140) at vm.c:1357
#35 0x0805890f in ruby_exec_node (n=0x8203840, file=0x8257e01
“./bin/rdoc”)
at eval.c:229
#36 0x0805b49c in ruby_run_node (n=0x8203840) at eval.c:259
#37 0x08057ef6 in main (argc=8, argv=0xbfbfe66c, envp=0xbfbfe690) at
main.c:39

07/12/25 e$B$Ke(B SASADA Koichi[email protected] e$B$5$s$O=q$-$^$7$?e(B: