Issue #9739 has been updated by Vit Ondruch.


Interestingly, I met this test error recently on Fedora's builder:

  3) Failure:
TestException#test_machine_stackoverflow_by_define_method [/builddir/build/BUILD/ruby-2.2.0-r47288/test/ruby/test_exception.rb:555]:
pid 19431 killed by SIGSEGV (signal 11)
15620 tests, 2470788 assertions, 1 failures, 0 errors, 31 skips
ruby -v: ruby 2.2.0dev (2014-08-26 trunk 47288) [i386-linux]

----------------------------------------
Bug #9739: TestException#test_machine_stackoverflow(_by_define_method) failures on x64-mingw32
https://bugs.ruby-lang.org/issues/9739#change-48631

* Author: Hiroshi Shirosaki
* Status: Closed
* Priority: Normal
* Assignee: Nobuyoshi Nakada
* Category: platform/mingw
* Target version: current: 2.2.0
* ruby -v: ruby 2.2.0dev (2014-04-13 trunk 45580) [x64-mingw32]
* Backport: 2.0.0: DONE, 2.1: DONE
----------------------------------------
I have the following two test failures with x64-mingw32 on Windows 7.

~~~
$ gcc -v 2>&1 | tail -n1
gcc version 4.8.2 20130712 (prerelease) (Built by MinGW-builds project)
$ make test-all TESTS="-q ruby/test_exception.rb"

(snip)

[29/43] TestException#test_machine_stackoverflow = 0.05 s
  1) Failure:
TestException#test_machine_stackoverflow [c:/Users/h.shirosaki/work/ruby/test/ruby/test_exception.rb:537]:
pid 2228 killed by SIGSEGV (signal 11)

[30/43] TestException#test_machine_stackoverflow_by_define_method = 0.05 s
  2) Failure:
TestException#test_machine_stackoverflow_by_define_method [c:/Users/h.shirosaki/work/ruby/test/ruby/test_exception.rb:54
8]:
pid 8984 killed by SIGSEGV (signal 11)

Finished tests in 0.575033s, 74.7783 tests/s, 370.4135 assertions/s.
43 tests, 213 assertions, 2 failures, 0 errors, 0 skips

ruby -v: ruby 2.2.0dev (2014-04-13 trunk 45580) [x64-mingw32]
~~~


I'm not sure the reason, but setting larger stack size fixes SIGSEGV.

~~~patch
diff --git a/configure.in b/configure.in
index f52e0ba..078f9ba 100644
--- a/configure.in
+++ b/configure.in
@@ -2782,7 +2782,7 @@ if test "$with_dln_a_out" != yes; then
 			rb_cv_dlopen=yes],
 	[cygwin*|mingw*], [
 			: ${LDSHARED='$(CC) -shared $(if $(filter-out -g -g0,$(debugflags)),,-s)'}
-			XLDFLAGS="$XLDFLAGS -Wl,--stack,0x00200000,--enable-auto-import"
+			XLDFLAGS="$XLDFLAGS -Wl,--stack,0x01200000,--enable-auto-import"
 			DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import"
 			: ${LIBPATHENV=""}
 			rb_cv_dlopen=yes],
~~~

---Files--------------------------------
0001-Handle-machine-stack-overflow-on-mingw.patch (1.89 KB)


-- 
https://bugs.ruby-lang.org/