[Bug #3295] make test aborted

Bug #3295: make test aborted
http://redmine.ruby-lang.org/issues/show/3295

e$B5/I<<Te(B: Kazuhiro NISHIYAMA
e$B%9%F!<%?%9e(B: Open, e$BM%@hEYe(B: Normal
Target version: 1.9.2
ruby -v: ruby 1.9.3dev (2010-05-14 trunk 27796) [i686-linux]

Ubuntu lucid e$B$N4D6-$Ge(B
https://wiki.ubuntu.com/CompilerFlags
e$B$Ne(B stack smashing protector (GccSsp)
e$B$N1F6A$@$H;W$&$N$G$9$,!"e(B
make test e$B$Ge(B abort e$B$7$^$9!#e(B

% lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04 LTS
Release: 10.04
Codename: lucid
% gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: …/src/configure -v --with-pkgversion=‘Ubuntu
4.4.3-4ubuntu5’ --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs
–enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
–enable-shared --enable-multiarch --enable-linker-build-id
–with-system-zlib --libexecdir=/usr/lib --without-included-gettext
–enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4
–program-suffix=-4.4 --enable-nls --enable-clocale=gnu
–enable-libstdcxx-debug --enable-plugin --enable-objc-gc
–enable-targets=all --disable-werror --with-arch-32=i486
–with-tune=generic --enable-checking=release --build=i486-linux-gnu
–host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
% make test

sample/test.rb:assignment

sample/test.rb:condition …
sample/test.rb:if/unless …
sample/test.rb:case …
sample/test.rb:while/until …
sample/test.rb:exception …
sample/test.rb:array …
sample/test.rb:hash …
sample/test.rb:iterator

sample/test.rb:float

sample/test.rb:bignum …
sample/test.rb:string & char

sample/test.rb:assignment …
sample/test.rb:call …
sample/test.rb:proc …
sample/test.rb:signal …
sample/test.rb:eval …
sample/test.rb:system …
sample/test.rb:const …
sample/test.rb:clone …
sample/test.rb:marshal …
sample/test.rb:pack …
sample/test.rb:math …
sample/test.rb:struct …
sample/test.rb:variable …
sample/test.rb:trace …
sample/test.rb:defined? …
sample/test.rb:alias …
sample/test.rb:path …
sample/test.rb:gc …
test succeeded

test_attr.rb …
test_autoload.rb …
test_block.rb …
test_class.rb …
test_eval.rb …
test_exception.rb …
test_finalizer.rb .
test_flip.rb .
test_flow.rb …
test_fork.rb …
test_gc.rb …
test_io.rb …
test_jump.rb …
test_literal.rb

test_load.rb …
test_marshal.rb .
test_massign.rb …
test_method.rb

test_objectspace.rb …
test_proc.rb …
test_struct.rb .
test_syntax.rb

test_thread.rb …*** longjmp causes
uninitialized stack frame :
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x50)[0x4019a350]
/lib/tls/i686/cmov/libc.so.6(+0xe22ba)[0x4019a2ba]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8168ed4]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8169083]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(rb_fiber_resume+0xaf)[0x8169c4f]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x819c74f]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x819d507]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8157b91]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8159f38]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x815d906]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x815f26e]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(rb_rescue2+0x141)[0x805e1d1]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x814d4c4]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8157b91]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8159f38]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x815d906]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(rb_iseq_eval_main+0x1c7)[0x815dcd7]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x805e422]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(ruby_run_node+0x32)[0x805fc32]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(main+0x5a)[0x805d65a]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0x400cebd6]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x805d561]
======= Memory map: ========
08048000-08212000 r-xp 00000000 fb:00 538613665
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby
08212000-08213000 r–p 001c9000 fb:00 538613665
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby
08213000-08214000 rw-p 001ca000 fb:00 538613665
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby
08214000-08221000 rw-p 00000000 00:00 0
09654000-0977f000 rw-p 00000000 00:00 0 [heap]
40000000-4001b000 r-xp 00000000 08:01 10043411 /lib/ld-2.11.1.so
4001b000-4001c000 r–p 0001a000 08:01 10043411 /lib/ld-2.11.1.so
4001c000-4001d000 rw-p 0001b000 08:01 10043411 /lib/ld-2.11.1.so
4001d000-4001e000 r-xp 00000000 00:00 0 [vdso]
4001e000-40020000 rw-p 00000000 00:00 0
40020000-40027000 r–s 00000000 08:01 1647078
/usr/lib/gconv/gconv-modules.cache
40027000-40028000 —p 00000000 00:00 0
40028000-4002b000 rw-p 00000000 00:00 0
4002b000-4002d000 r-xp 00000000 fb:00 807287925
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/encdb.so
4002d000-4002e000 r–p 00001000 fb:00 807287925
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/encdb.so
4002e000-4002f000 rw-p 00002000 fb:00 807287925
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/encdb.so
4002f000-40031000 r-xp 00000000 fb:00 269946659
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/trans/transdb.so
40031000-40032000 r–p 00001000 fb:00 269946659
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/trans/transdb.so
40032000-40033000 rw-p 00002000 fb:00 269946659
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/trans/transdb.so
40039000-4004e000 r-xp 00000000 08:01 10044432
/lib/tls/i686/cmov/libpthread-2.11.1.so
4004e000-4004f000 r–p 00014000 08:01 10044432
/lib/tls/i686/cmov/libpthread-2.11.1.so
4004f000-40050000 rw-p 00015000 08:01 10044432
/lib/tls/i686/cmov/libpthread-2.11.1.so
40050000-40052000 rw-p 00000000 00:00 0
40052000-40059000 r-xp 00000000 08:01 10044434
/lib/tls/i686/cmov/librt-2.11.1.so
40059000-4005a000 r–p 00006000 08:01 10044434
/lib/tls/i686/cmov/librt-2.11.1.so
4005a000-4005b000 rw-p 00007000 08:01 10044434
/lib/tls/i686/cmov/librt-2.11.1.so
4005b000-4005c000 rw-p 00000000 00:00 0
4005c000-4005e000 r-xp 00000000 08:01 10044421
/lib/tls/i686/cmov/libdl-2.11.1.so
4005e000-4005f000 r–p 00001000 08:01 10044421
/lib/tls/i686/cmov/libdl-2.11.1.so
4005f000-40060000 rw-p 00002000 08:01 10044421
/lib/tls/i686/cmov/libdl-2.11.1.so
40060000-40069000 r-xp 00000000 08:01 10044420
/lib/tls/i686/cmov/libcrypt-2.11.1.so
40069000-4006a000 r–p 00008000 08:01 10044420
/lib/tls/i686/cmov/libcrypt-2.11.1.so
4006a000-4006b000 rw-p 00009000 08:01 10044420
/lib/tls/i686/cmov/libcrypt-2.11.1.so
4006b000-40092000 rw-p 00000000 00:00 0
40092000-400b6000 r-xp 00000000 08:01 10044422
/lib/tls/i686/cmov/libm-2.11.1.so
400b6000-400b7000 r–p 00023000 08:01 10044422
/lib/tls/i686/cmov/libm-2.11.1.so
400b7000-400b8000 rw-p 00024000 08:01 10044422
/lib/tls/i686/cmov/libm-2.11.1.so
400b8000-4020b000 r-xp 00000000 08:01 10044418
/lib/tls/i686/cmov/libc-2.11.1.so
4020b000-4020c000 —p 00153000 08:01 10044418
/lib/tls/i686/cmov/libc-2.11.1.so
4020c000-4020e000 r–p 00153000 08:01 10044418
/lib/tls/i686/cmov/libc-2.11.1.so
4020e000-4020f000 rw-p 00155000 08:01 10044418
/lib/tls/i686/cmov/libc-2.11.1.so
4020f000-40214000 rw-p 00000000 00:00 0
40214000-40295000 r–p 00000000 08:01 9767830
/usr/lib/locale/ja_JP.utf8/LC_CTYPE
40295000-40326000 rw-p 00000000 00:00 0
4033f000-4035c000 r-xp 00000000 08:01 10045150 /lib/libgcc_s.so.1
4035c000-4035d000 r–p 0001c000 08:01 10045150 /lib/libgcc_s.so.1
4035d000-4035e000 rw-p 0001d000 08:01 10045150 /lib/libgcc_s.so.1
bfc61000-bfc77000 rw-p 00000000 00:00 0 [stack]
F
longjmp causes uninitialized stack frame ***:
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x50)[0x4019a350]
/lib/tls/i686/cmov/libc.so.6(+0xe22ba)[0x4019a2ba]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8168ed4]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8169083]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(rb_fiber_resume+0xaf)[0x8169c4f]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x819c74f]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x819d507]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8157b91]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8159f38]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x815d906]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x815f26e]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(rb_rescue2+0x141)[0x805e1d1]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x814d4c4]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8157b91]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x8159f38]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x815d906]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(rb_iseq_eval_main+0x1c7)[0x815dcd7]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x805e422]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(ruby_run_node+0x32)[0x805fc32]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby(main+0x5a)[0x805d65a]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0x400cebd6]
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby[0x805d561]
======= Memory map: ========
08048000-08212000 r-xp 00000000 fb:00 538613665
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby
08212000-08213000 r–p 001c9000 fb:00 538613665
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby
08213000-08214000 rw-p 001ca000 fb:00 538613665
/home/kazu/tmp/ruby/ruby-trunk/_build/ruby
08214000-08221000 rw-p 00000000 00:00 0
08b7a000-08ca5000 rw-p 00000000 00:00 0 [heap]
40000000-4001b000 r-xp 00000000 08:01 10043411 /lib/ld-2.11.1.so
4001b000-4001c000 r–p 0001a000 08:01 10043411 /lib/ld-2.11.1.so
4001c000-4001d000 rw-p 0001b000 08:01 10043411 /lib/ld-2.11.1.so
4001d000-4001e000 r-xp 00000000 00:00 0 [vdso]
4001e000-40020000 rw-p 00000000 00:00 0
40020000-40027000 r–s 00000000 08:01 1647078
/usr/lib/gconv/gconv-modules.cache
40027000-40028000 —p 00000000 00:00 0
40028000-4002b000 rw-p 00000000 00:00 0
4002b000-4002d000 r-xp 00000000 fb:00 807287925
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/encdb.so
4002d000-4002e000 r–p 00001000 fb:00 807287925
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/encdb.so
4002e000-4002f000 rw-p 00002000 fb:00 807287925
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/encdb.so
4002f000-40031000 r-xp 00000000 fb:00 269946659
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/trans/transdb.so
40031000-40032000 r–p 00001000 fb:00 269946659
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/trans/transdb.so
40032000-40033000 rw-p 00002000 fb:00 269946659
/home/kazu/tmp/ruby/ruby-trunk/_build/.ext/i686-linux/enc/trans/transdb.so
40039000-4004e000 r-xp 00000000 08:01 10044432
/lib/tls/i686/cmov/libpthread-2.11.1.so
4004e000-4004f000 r–p 00014000 08:01 10044432
/lib/tls/i686/cmov/libpthread-2.11.1.so
4004f000-40050000 rw-p 00015000 08:01 10044432
/lib/tls/i686/cmov/libpthread-2.11.1.so
40050000-40052000 rw-p 00000000 00:00 0
40052000-40059000 r-xp 00000000 08:01 10044434
/lib/tls/i686/cmov/librt-2.11.1.so
40059000-4005a000 r–p 00006000 08:01 10044434
/lib/tls/i686/cmov/librt-2.11.1.so
4005a000-4005b000 rw-p 00007000 08:01 10044434
/lib/tls/i686/cmov/librt-2.11.1.so
4005b000-4005c000 rw-p 00000000 00:00 0
4005c000-4005e000 r-xp 00000000 08:01 10044421
/lib/tls/i686/cmov/libdl-2.11.1.so
4005e000-4005f000 r–p 00001000 08:01 10044421
/lib/tls/i686/cmov/libdl-2.11.1.so
4005f000-40060000 rw-p 00002000 08:01 10044421
/lib/tls/i686/cmov/libdl-2.11.1.so
40060000-40069000 r-xp 00000000 08:01 10044420
/lib/tls/i686/cmov/libcrypt-2.11.1.so
40069000-4006a000 r–p 00008000 08:01 10044420
/lib/tls/i686/cmov/libcrypt-2.11.1.so
4006a000-4006b000 rw-p 00009000 08:01 10044420
/lib/tls/i686/cmov/libcrypt-2.11.1.so
4006b000-40092000 rw-p 00000000 00:00 0
40092000-400b6000 r-xp 00000000 08:01 10044422
/lib/tls/i686/cmov/libm-2.11.1.so
400b6000-400b7000 r–p 00023000 08:01 10044422
/lib/tls/i686/cmov/libm-2.11.1.so
400b7000-400b8000 rw-p 00024000 08:01 10044422
/lib/tls/i686/cmov/libm-2.11.1.so
400b8000-4020b000 r-xp 00000000 08:01 10044418
/lib/tls/i686/cmov/libc-2.11.1.so
4020b000-4020c000 —p 00153000 08:01 10044418
/lib/tls/i686/cmov/libc-2.11.1.so
4020c000-4020e000 r–p 00153000 08:01 10044418
/lib/tls/i686/cmov/libc-2.11.1.so
4020e000-4020f000 rw-p 00155000 08:01 10044418
/lib/tls/i686/cmov/libc-2.11.1.so
4020f000-40214000 rw-p 00000000 00:00 0
40214000-40295000 r–p 00000000 08:01 9767830
/usr/lib/locale/ja_JP.utf8/LC_CTYPE
40295000-40326000 rw-p 00000000 00:00 0
4033f000-4035c000 r-xp 00000000 08:01 10045150 /lib/libgcc_s.so.1
4035c000-4035d000 r–p 0001c000 08:01 10045150 /lib/libgcc_s.so.1
4035d000-4035e000 rw-p 0001d000 08:01 10045150 /lib/libgcc_s.so.1
bff00000-bff16000 rw-p 00000000 00:00 0 [stack]
F…
#915 test_thread.rb:307:in <top (required)>': g = "abc".enum_for(:scan, /./) loop { g.next } #=> killed by SIGABRT (signal 6) [ruby-dev:34128] #916 test_thread.rb:312:in <top (required)>':
g = Module.enum_for(:new)
loop { g.next }
#=> killed by SIGABRT (signal 6) [ruby-dev:34128]
FAIL 2/931 tests failed
make: *** [yes-btest-ruby] e$B%(%i!<e(B 1
%

e$B%A%1%C%He(B #3295 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$B4|8BF|e(B 2010e$BG/e(B05e$B7ne(B31e$BF|$K%;%C%He(B
e$BC4Ev<Te(B Koichi Sasadae$B$K%;%C%He(B

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

Fiber e$B$N9bB.2=$N$;$$$N$h$&$G$9!#0J2<$N%Q%C%A$G8=>]$,>C$($^$9!#e(B
e$BAa5^$KD>$7$F$/$@$5$$!#$G$-$J$1$l$Pe(B 1.9.2 e$B$O8+Aw$j$H$7$^$9!#e(B
release plan e$B$K4p$E$-!"4|8B$Oe(B 5 e$B7nKv$G$9!#e(B

diff --git a/cont.c b/cont.c
index c0c3619…8ca47be 100644
— a/cont.c
+++ b/cont.c
@@ -35,6 +35,8 @@
*/

#endif
+#undef FIBER_USE_NATIVE

#ifdef FIBER_USE_NATIVE
#ifndef _WIN32


Yusuke E. [email protected]

http://redmine.ruby-lang.org/issues/show/3295

kosakie$B$G$9e(B

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

Fiber e$B$N9bB.2=$N$;$$$N$h$&$G$9!#0J2<$N%Q%C%A$G8=>]$,>C$($^$9!#e(B
e$BAa5^$KD>$7$F$/$@$5$$!#$G$-$J$1$l$Pe(B 1.9.2 e$B$O8+Aw$j$H$7$^$9!#e(B
release plan e$B$K4p$E$-!"4|8B$Oe(B 5 e$B7nKv$G$9!#e(B

e$B8=>]e(B: make test e$BIT2DG=e(B
e$B860x!'e(B e$B9bB.2=L\E*%Q%C%Ae(B

e$B$J$N$G!"!V:#!We(Breverte$B$7$Fe(B1.9.3e$BAw$j$rDs0F$7$^$9!#e(B5/Ee$B$.$j$.$j$Ke(B
make
teste$B=PMh$k$h$&$K$J$C$?$H$7$F!“1#$l$F$$$?JL$N%P%0$,I=$K=P$F$/$ke(B
e$B2DG=@-$,$”$j$^$9$h$M!)e(B
e$B%j%j!<%9%(%s%8%K%"%j%s%0E*$K$O9bB.2=%Q%C%A$K$ONdC8$K$"$k$Y$-$H;W$$$^$9!#e(B
e$B:n$k$N$O$H$F$bBgJQ$J$N$G:n<T$Oe(Brespecte$B$5$l$k$Y$-$G$9$,!#e(B

e$B>.:j$G$9e(B
e$B$3$s$K$A$Oe(B

e$B:#2s!“e(BUbuntu-10.0.4 e$B4D6-$Ge(B Fiber e$B$,860x$Ge(B Abort e$B$9$k$N$Oe(B Ubuntu-10.0.4e$B$Ge(B
e$B$O!”:GE,2=%*%W%7%g%s$re(B O3 e$B$H$7$?$H$-$Ke(B __longjmp_chk e$B$H$$$&4X?t$r;HMQ$9e(B
e$B$k$?$a$N$h$&$G$9!#e(B
e$B!Je(BO0 e$B$N$H$-$Oe(B _longjmp e$B$,;HMQ$5$l$k$h$&$G$9!#$=$N$?$a!"e(Bcont.c e$B$re(B O0 e$B$G%3e(B
e$B%s%Q%$%k$9$k$H!"e(Bmake test e$B$KDL$j$^$9!#!Ke(B

e$B7Z$/D4$Y$?$H$3$m!"e(BUbuntue$B$Ne(Bgcce$B$G$O%G%U%)%k%H$Ge(B-D_FORTIFY_SOURCE=2
e$B$5$l$F$$$k$?$a$N$h$&$G$9!#e(B
e$B<j85$Ke(BUbuntue$B$,$J$$$N$G$9$,!"e(Bcont.c
e$B$@$1%3%s%Q%$%k%*%W%7%g%s$rJQ99$9$k$3$H$Ge(B
e$B2sHr$G$-$^$;$s$G$7$g$&$+!)e(B

e$B$=$N$?$a!“e(Breverte$B$7$Fe(B Fiber e$B$N%Q%C%A$re(B 1.9.3e$BAw$j$K$9$k$H$$$&Ds0F$K!”;d$be(B
e$B;?@.$7$^$9!#e(B
Fiber e$B$N%Q%C%A$r!“e(Btrunk e$B$K$F%F%9%H$5$;$F$$$?$@$-$?$$$G$9!#e(B
e$B$48!F$!”$h$m$7$/$*4j$$$7$^$9!#e(B

e$B$$$?$@$$$?%Q%C%A$O$3$A$i$Ge(Btrunke$B$KF~$l$F$$/$N$G!"%3%s%Q%$%k%%W%7%g%s$Ge(B
e$BF($2$k;v$,=PMh$=$&$J$i!":FEY>e=q$-$7$F$/$@$5$$$^$;e(B

e$B<G$H?=$7$^$9!#e(B

Fiber e$B$N%Q%C%A$N<BAu$r<g$K9T$C$?<T$G$9!#e(B

kosakie$B$G$9e(B

e$B8=>]e(B: make test e$BIT2DG=e(B
e$B860x!'e(B e$B9bB.2=L\E*%Q%C%Ae(B

e$B$J$N$G!"!V:#!We(Breverte$B$7$Fe(B1.9.3e$BAw$j$rDs0F$7$^$9!#e(B5/Ee$B$.$j$.$j$Ke(B
make teste$B=PMh$k$h$&$K$J$C$?$H$7$F!“1#$l$F$$$?JL$N%P%0$,I=$K=P$F$/$ke(B
e$B2DG=@-$,$”$j$^$9$h$M!)e(B

e$B:#2s!“e(BUbuntu-10.0.4 e$B4D6-$Ge(B Fiber e$B$,860x$Ge(B Abort
e$B$9$k$N$Oe(B Ubuntu-10.0.4e$B$Ge(B
e$B$O!”:GE,2=%*%W%7%g%s$re(B O3 e$B$H$7$?$H$-$Ke(B __longjmp_chk
e$B$H$$$&4X?t$r;HMQ$9e(B
e$B$k$?$a$N$h$&$G$9!#e(B
e$B!Je(BO0 e$B$N$H$-$Oe(B _longjmp
e$B$,;HMQ$5$l$k$h$&$G$9!#$=$N$?$a!"e(Bcont.c e$B$re(B O0 e$B$G%3e(B
e$B%s%Q%$%k$9$k$H!"e(Bmake test e$B$KDL$j$^$9!#!Ke(B

__longjmp_chk e$B$O!"0J2<$N$h$&$J=hM}$r9T$$$^$9!#e(B

void __longjmp_chk(jmp_buf env, int val)
{
if
(e$B%8%c%s%W@h$N%9%?%C%/$,!“8=:_$N%9%?%C%/$KBP$7$F%9%?%C%/$N?-$S$F$$e(B
e$B$/J}8~$K$”$ke(B) {
stack_t oss;
sigaltstack(NULL, &oss);
if (oss.ss_flags != SS_ONSTACK) {
/* e$B8=:_F0:nCf$N%9%?%C%/$,%7%0%J%k%9%?%C%/$H$7$Fe(B /
/
e$B@k8@$5$l$F$$$k$b$N$G$O$J$+$C$?$i!"%(%i!<e(B */
abort(“longjmp causes uninitialized stack frame”);
}
}
e$B=>Mh$Ne(B longjmp
}

e$B$D$^$j!“e(B__longjmp_chk
e$B;~$K%8%c%s%W@h$N%9%?%C%/$,8=:_$N%9%?%C%/$KBP$7$F%9e(B
e$B%?%C%/$N?-$S$F$$$/J}8~$K$”$k>l9g$O!"8=:_F0$$$F$$$k%9%?%C%/$,e(B
sigaltstack
e$B$K$h$C$F@Dj$5$l$?%7%0%J%k%9%?%C%/$G$J$$8B$j!"%(%i!<$H$$J$5$l$k$H$$$&$3e(B
e$B$H$G$9!#e(B
e$B$=$N$?$a!“e(Bset/longjmp
e$B$G%9%?%C%/$r@Z$jBX$($k!”:#LdBj$H$J$C$F$$$ke(B Fibere$B$Ne(B
e$B<BAu$G$Oe(B Ubuntu-10.0.4 e$B$N4D6-$@$He(B abort
e$B$7$F$7$^$$$^$9!#e(B
set/longjmp e$B$G$O$J$/!"e(Bswapcontext
e$B$r;HMQ$9$k<BAu$KD>$7$?$H$3$m!"e(Bmake-
test e$B$KDL$j$^$7$?!JK%a!<%k$NKvHx$K%Q%C%A$rD%$j$^$9!K!#e(B

e$B0J>e$N$h$&$K!":#2se(B make test e$B$Ge(B Fiber e$B$,860x$Ge(B abort
e$B$9$k$N$O!“e(BFiber e$B$Ne(B
e$B<BAu$K%P%0$,$”$k$H$$$&$h$j$b!";HMQ$9$k%i%$%V%i%j$N;EMM$,JQ$o$C$F$7$^$C$?e(B
e$B$3$H$,860x$@$H;W$$$^$9!#e(B

e$B$7$+$7!“e(BFiber e$B$N%Q%C%A$,e(B trunk
e$B$K<h$j9~$^$l$?$N$,:G6a$G$”$j!"$^$@%F%9%He(B
e$B$,==J,$G$"$k$H$O$$$($J$$$?$a!">.:j$5$s$N$$C$7$c$k$H$$j!“1#$l$F$$$k%P%0e(B
e$B$,@x$s$G$$$k2DG=@-$O==J,$K$”$k$H;W$$$^$9!#e(B

e$B$=$N$?$a!“e(Breverte$B$7$Fe(B Fiber e$B$N%Q%C%A$re(B
1.9.3e$BAw$j$K$9$k$H$$$&Ds0F$K!”;d$be(B
e$B;?@.$7$^$9!#e(B
Fiber e$B$N%Q%C%A$r!“e(Btrunk e$B$K$F%F%9%H$5$;$F$$$?$@$-$?$$$G$9!#e(B
e$B$48!F$!”$h$m$7$/$*4j$$$7$^$9!#e(B

Index: cont.c

— cont.c (revision 27947)
+++ cont.c (working copy)
@@ -621,16 +621,7 @@ fiber_setcontext(rb_fiber_t *newfib, rb_
#ifdef _WIN32
SwitchToFiber(newfib->fib_handle);
#else

  • if (!ruby_setjmp(oldfib->cont.jmpbuf)) {
  • if (newfib->status != RUNNING) {
  •  if (setcontext(&newfib->context) < 0) {
    
  • rb_bug(“context switch between fiber failed”);
  •  }
    
  • }
  • else {
  •  ruby_longjmp(newfib->cont.jmpbuf, 1);
    
  • }
  • }
  • swapcontext(&oldfib->context, &newfib->context);
    #endif
    }
    #endif

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

(2010/05/22 3:45), KOSAKI Motohiro wrote::

e$B$$$?$@$$$?%Q%C%A$O$3$A$i$Ge(Btrunke$B$KF~$l$F$$/$N$G!"%3%s%Q%$%k%%W%7%g%s$Ge(B
e$BF($2$k;v$,=PMh$=$&$J$i!":FEY>e=q$-$7$F$/$@$5$$$^$;e(B

e$B!!$($($H!$e(Bswapcontext() e$B;H$&$H!$7k6IB.$/$J$i$J$$$N$G!Je(Bsignal
mask e$B$N@_Dje(B
e$B$G%7%9%F%`%3!<%kH/9T$9$k$N$GCY$$!K!$$3$N%Q%C%A$r$=$N$^$^F~$l$k$N$OH?BP$Ge(B
e$B$9!%e(Bconfigure e$B$H$+e(B Makefile
e$B$H$+$G$J$s$H$+$9$k$Y$-$+$J$!!$$H$*$b$$$^$9!%e(B

e$B!!<G7/$N<gD%$O!$e(Bswapcontext() e$B2=%Q%C%A$re(B trunk
e$B$K<h$j9~$s$G$/$l!$$8$c$Je(B
e$B$/$F!$e(BFiber e$B$N9bB.2=<+BN$re(B trunk
e$B$G$b$&>/$7;n$5$;$F$/$l!$$C$F$3$H$J$se(B
e$B$8$c$J$$$+$H!%e(B

e$B!!$A$J$_$K!$e(B1.9.2 e$B$Ge(B Fiber
e$B$N9bB.2=$rL58z$K$9$k$N$O;?@.$G$9$,!$$I$&$d$Ce(B
e$B$FL58z2=$7$^$7$g$&!%$H$$$&$N$b!$e(B

(1) revert e$B$9$ke(B
(2) FIBER_USE_NATIVE e$B$re(B 0 e$B$K$7$H$/e(B

e$B$Ne(B2e$B<oN`$,9M$($i$l$^$9!%e(B

e$B>.:j$G$9e(B

e$B<G7/$N<gD%$O!$e(Bswapcontext() e$B2=%Q%C%A$re(B trunk e$B$K<h$j9~$s$G$/$l!$$8$c$Je(B
e$B$/$F!$e(BFiber e$B$N9bB.2=<+BN$re(B trunk e$B$G$b$&>/$7;n$5$;$F$/$l!$$C$F$3$H$J$se(B
e$B$8$c$J$$$+$H!%e(B

e$B$7$^$C$?!#$b$&F~$l$A$c$C$?!#$4$a$s$J$5$$!#e(B
e$B<B$ON"$N0U?^$,$"$C$F!"e(Bmake
teste$B$,DL$i$J$$$N$O$1$7$+$i$s$+$i0l;~E*$Ke(B
e$BL58z2=$7$h$&$H$$$&9bEY$K@/<#E*$JH=CG$,$5$l$?$N$@!#$H$+8mFI$7$F$/$@$5$$!#e(B
e$B$<$R!#e(B

e$BKM$be(Bswapcontext()e$B$GF($2$k$N$O6Z0-$@$H;W$&$N$G!"e(BMakefilee$B$G$J$s$H$+e(B
e$B$J$C$FM_$7$$$G$9!#e(B

e$B$A$J$_$K!$e(B1.9.2 e$B$Ge(B Fiber e$B$N9bB.2=$rL58z$K$9$k$N$O;?@.$G$9$,!$$I$&$d$Ce(B
e$B$FL58z2=$7$^$7$g$&!%$H$$$&$N$b!$e(B

(1) revert e$B$9$ke(B
(2) FIBER_USE_NATIVE e$B$re(B 0 e$B$K$7$H$/e(B

e$B$Ne(B2e$B<oN`$,9M$($i$l$^$9!%e(B

e$BKNIt$5$s$Ke(B(1)e$B$,$h$$$H$$$&0U8+$r$b$i$C$?$N$G!"$=$&$$$&%Q%C%A$r%3%_%C%H$7$H$-$^$9!#e(B

e$B%A%1%C%He(B #3295 e$B$,99?7$5$l$^$7$?!#e(B (by Motohiro KOSAKI)

e$B%9%F!<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

This issue was solved with changeset r27949.
Kazuhiro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


http://redmine.ruby-lang.org/issues/show/3295