Issue #9739 has been updated by Hiroshi Shirosaki.

File 0001-Handle-machine-stack-overflow-on-mingw.patch added

I found this fix was provided on mswin at r43748, but not on mingw.

We can use Structured Exception Handling by
Addvectoredexceptionhandler() for machine stack overflow on mingw.
This would be equivalent to the handling using `__try` and `__exept`
on mswin introduced by r43748.

Attached a patch.

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

* Author: Hiroshi Shirosaki
* Status: Assigned
* Priority: Normal
* Assignee: Nobuyoshi Nakada
* Category: build
* Target version: current: 2.2.0
* ruby -v: ruby 2.2.0dev (2014-04-13 trunk 45580) [x64-mingw32]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
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/