From: Masaki Suketa Date: 2005-09-22T21:49:50+09:00 Subject: [ruby-dev:27296] Re: ruby-1.8.3 status for release 助田です。少し追いかけました。 In message "[ruby-dev:27186] Re: ruby-1.8.3 status for release" on 05/09/20, Minero Aoki writes: > 青木です。 > > In mail "[ruby-dev:27181] Re: ruby-1.8.3 status for release" > Masaki Suketa wrote: > > > 助田です。 > > > > ○各プラットフォームごとの動作検証をする人を募集 > > > Windows(cygwin/mingw/djgpp) > > > > cygwin のテストですが、core dump しました。 > > 私の環境が悪いだけなのかも知れませんが、一応、報告だけしておきます。 > > Windows 2000の環境です。 > > うちでも落ちました。同じく Windows 2000 です。soap のテストの > 途中に wmemset で落ちていることまでは確認したんですが、それ以上 > 追ってません。再現性はかなりありそうです。 確実に再現できるスクリプトができず、的が絞りきれない状態です。 ただ、 soap/wsdlDriver/test_calc.rb を含めたテストだと落ちやすいようです。 テストの数を省いていくと、落ちる場所が、テストが終わって所要時間を表示する lib/test/unit/ui/console/testrunner.rb:81: [BUG] Segmentation fault のところになってしまいました。 以下のようにしてバックトレースを取りました。 numeric.c の flo_to_sの sprintf(buf, "%#.15g", value); で落ちてます。 私には、さっぱりわからないのですが、これで何かわかりますか? # cvs版をコンパイル $ ../configure --disable-shared CFLAGS=-g $ make $ ./ruby -v ruby 1.8.3 (2005-09-22) [i386-cygwin] # テストスクリプトは以下のものだけ $ find ../test ../test ../test/ruby ../test/ruby/test_float.rb ../test/ruby/test_io.rb ../test/runner.rb ../test/soap ../test/soap/wsdlDriver ../test/soap/wsdlDriver/calc.wsdl ../test/soap/wsdlDriver/echo_version.rb ../test/soap/wsdlDriver/test_calc.rb $ gdb --directory=../ ./ruby.exe GNU gdb 6.3.50_2004-12-28-cvs (cygwin-special) 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 "i686-pc-cygwin"... (gdb) list ../numeric.c:flo_to_s 486 */ 487 488 static VALUE 489 flo_to_s(flt) 490 VALUE flt; 491 { 492 char buf[32]; 493 double value = RFLOAT(flt)->value; 494 char *p, *e; 495 (gdb) b ../numeric.c:493 Breakpoint 1 at 0x448959: file ../numeric.c, line 493. (gdb) run -I../bin-cyg -I../lib -I../bin-cyg/.ext/i386-cygwin -I../bin-cyg/.ext -C ../test runner.rb --runner=console ........ Breakpoint 1, flo_to_s (flt=53438296) at ../numeric.c:493 493 double value = RFLOAT(flt)->value; (gdb) s 496 if (isinf(value)) (gdb) p value $1 = 1.3719999999999999 (gdb) s 498 else if(isnan(value)) (gdb) s 501 sprintf(buf, "%#.15g", value); /* ensure to print decimal point */ (gdb) s Program received signal SIGSEGV, Segmentation fault. 0x610dcd60 in wmemset () from /usr/bin/cygwin1.dll (gdb) bt #0 0x610dcd60 in wmemset () from /usr/bin/cygwin1.dll #1 0x610ceea2 in wmemset () from /usr/bin/cygwin1.dll #2 0x610c92d8 in wmemset () from /usr/bin/cygwin1.dll #3 0x610cbecf in wmemset () from /usr/bin/cygwin1.dll #4 0x610844ff in cygwin1!aclcheck () from /usr/bin/cygwin1.dll #5 0x0040d233 in call_cfunc (func=0x448952 , recv=53438296, len=0, argc=0, argv=0x0) at ../eval.c:5536 #6 0x0040c872 in rb_call0 (klass=46948376, recv=53438296, id=3161, oid=3161, argc=0, argv=0x0, body=0x2cc5f28, flags=0) at ../eval.c:5672 #7 0x0040db7a in rb_call (klass=46948376, recv=53438296, mid=3161, argc=0, argv=0x0, scope=1) at ../eval.c:5900 #8 0x0040dd79 in vafuncall (recv=53438296, mid=3161, n=0, ar=0x2625034) at ../eval.c:5977 #9 0x0040ddac in rb_funcall (recv=53438296, mid=3161, n=0) at ../eval.c:5994 #10 0x00456a62 in rb_obj_as_string (obj=53438296) at ../string.c:300 #11 0x0040889d in rb_eval (self=54141496, n=0x33ab1a8) at ../eval.c:3726 #12 0x00408928 in rb_eval (self=54141496, n=0x33ab1d8) at ../eval.c:3746 #13 0x0040741d in rb_eval (self=54141496, n=0x33ab100) at ../eval.c:3382 #14 0x0040ceec in rb_call0 (klass=54141304, recv=54141496, id=48417, oid=48417, argc=0, argv=0x3741a34, body=0x33ab100, flags=0) at ../eval.c:5806 #15 0x00413715 in method_call (argc=1, argv=0x3741a30, method=54139792) at ../eval.c:8972 #16 0x00413cbf in bmcall (args=53438296, method=54139792) at ../eval.c:9244 #17 0x0040ac97 in rb_yield_0 (val=53438296, self=46967408, klass=0, flags=0, avalue=0) at ../eval.c:4874 #18 0x0041260b in proc_invoke (proc=54139312, args=53438296, self=6, klass=0) at ../eval.c:8357 #19 0x004127cf in proc_call (proc=54139312, args=53437792) at ../eval.c:8429 #20 0x0040d1ff in call_cfunc (func=0x4127a7 , recv=54139312, len=-2, argc=1, argv=0x2626e40) at ../eval.c:5530 #21 0x0040c872 in rb_call0 (klass=46897784, recv=54139312, id=5233, oid=5233, argc=1, argv=0x2626e40, body=0x2cb99a0, flags=0) at ../eval.c:5672 #22 0x0040db7a in rb_call (klass=46897784, recv=54139312, mid=5233, argc=1, argv=0x2626e40, scope=0) at ../eval.c:5900 #23 0x004072c8 in rb_eval (self=54140416, n=0x33a61c8) at ../eval.c:3372 #24 0x0040acb1 in rb_yield_0 (val=54139312, self=54140416, klass=0, flags=0, avalue=0) at ../eval.c:4877 #25 0x0040b064 in rb_yield (val=54139312) at ../eval.c:4959 #26 0x00476491 in rb_ary_each (ary=53437864) at ../array.c:1125 #27 0x0040d233 in call_cfunc (func=0x47645e , recv=53437864, len=0, argc=0, argv=0x0) at ../eval.c:5536 #28 0x0040c872 in rb_call0 (klass=46937024, recv=53437864, id=3849, oid=3849, argc=0, argv=0x0, body=0x2cc2ec8, flags=0) at ../eval.c:5672 #29 0x0040db7a in rb_call (klass=46937024, recv=53437864, mid=3849, argc=0, argv=0x0, scope=0) at ../eval.c:5900 #30 0x004072c8 in rb_eval (self=54140416, n=0x33a6288) at ../eval.c:3372 #31 0x0040622f in rb_eval (self=54140416, n=0x33a6378) at ../eval.c:3100 #32 0x0040ceec in rb_call0 (klass=54141712, recv=54140416, id=48521, oid=48521, argc=1, argv=0x2628a04, body=0x33a6378, flags=0) at ../eval.c:5806 #33 0x0040db7a in rb_call (klass=54141712, recv=54140416, mid=48521, argc=2, argv=0x2628a00, scope=1) at ../eval.c:5900 #34 0x00407579 in rb_eval (self=54140416, n=0x33a8e08) at ../eval.c:3387 #35 0x0040ceec in rb_call0 (klass=54142048, recv=54140416, id=48441, oid=48441, argc=0, argv=0x0, body=0x33a8e08, flags=0) at ../eval.c:5806 #36 0x0040db7a in rb_call (klass=54142048, recv=54140416, mid=48441, argc=0, argv=0x0, scope=0) at ../eval.c:5900 #37 0x004072c8 in rb_eval (self=54141496, n=0x33ab8c8) at ../eval.c:3372 #38 0x00406c81 in rb_eval (self=54141496, n=0x33ab838) at ../eval.c:3316 #39 0x0040ceec in rb_call0 (klass=54141304, recv=54141496, id=48345, oid=48345, argc=0, argv=0x0, body=0x33ab838, flags=2) at ../eval.c:5806 #40 0x0040db7a in rb_call (klass=54141304, recv=54141496, mid=48345, argc=0, argv=0x0, scope=2) at ../eval.c:5900 #41 0x004075bf in rb_eval (self=54141496, n=0x33ac798) at ../eval.c:3393 #42 0x00406c81 in rb_eval (self=54141496, n=0x33ac7e0) at ../eval.c:3316 #43 0x0040ceec in rb_call0 (klass=54141304, recv=54141496, id=5049, oid=5049, argc=0, argv=0x0, body=0x33ac7e0, flags=0) at ../eval.c:5806 #44 0x0040db7a in rb_call (klass=54141304, recv=54141496, mid=5049, argc=0, argv=0x0, scope=0) at ../eval.c:5900 #45 0x004072c8 in rb_eval (self=54141304, n=0x2c927d8) at ../eval.c:3372 #46 0x00406c81 in rb_eval (self=54141304, n=0x2c92748) at ../eval.c:3316 #47 0x0040ceec in rb_call0 (klass=54141184, recv=54141304, id=5129, oid=5129, argc=0, argv=0x262c4b8, body=0x2c92748, flags=0) at ../eval.c:5806 #48 0x0040db7a in rb_call (klass=54141184, recv=54141304, mid=5129, argc=2, argv=0x262c4b0, scope=0) at ../eval.c:5900 #49 0x004072c8 in rb_eval (self=47667136, n=0x2c93198) at ../eval.c:3372 #50 0x004070a2 in rb_eval (self=47667136, n=0x2c93258) at ../eval.c:3366 #51 0x0040ceec in rb_call0 (klass=47669296, recv=47667136, id=5129, oid=5129, argc=0, argv=0x0, body=0x2c93258, flags=0) at ../eval.c:5806 #52 0x0040db7a in rb_call (klass=47669296, recv=47667136, mid=5129, argc=0, argv=0x0, scope=0) at ../eval.c:5900 #53 0x004072c8 in rb_eval (self=47669296, n=0x2c9a668) at ../eval.c:3372 #54 0x0040ceec in rb_call0 (klass=47669272, recv=47669296, id=5129, oid=5129, argc=0, argv=0x262de88, body=0x2c9a668, flags=0) at ../eval.c:5806 #55 0x0040db7a in rb_call (klass=47669272, recv=47669296, mid=5129, argc=2, argv=0x262de80, scope=0) at ../eval.c:5900 #56 0x004072c8 in rb_eval (self=46967408, n=0x2cb7b40) at ../eval.c:3372 #57 0x0040741d in rb_eval (self=46967408, n=0x2cb7f30) at ../eval.c:3382 #58 0x00402bb0 in eval_node (self=46967408, node=0x2cb7f30) at ../eval.c:1368 #59 0x0040312d in ruby_exec_internal () at ../eval.c:1543 #60 0x00403174 in ruby_exec () at ../eval.c:1563 #61 0x00403196 in ruby_run () at ../eval.c:1573 #62 0x00401096 in main (argc=9, argv=0x2c917b8, envp=0x2c90090) at ../main.c:46