From: h.shirosaki@... Date: 2014-05-15T03:13:37+00:00 Subject: [ruby-core:62597] [ruby-trunk - Bug #9739] TestException#test_machine_stackoverflow(_by_define_method) failures on x64-mingw32 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/