Bug #9739


TestException#test_machine_stackoverflow(_by_define_method) failures on x64-mingw32

Added by h.shirosaki (Hiroshi Shirosaki) over 9 years ago. Updated about 9 years ago.

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


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"


[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
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.

diff --git a/ b/
index f52e0ba..078f9ba 100644
--- a/
+++ b/
@@ -2782,7 +2782,7 @@ if test "$with_dln_a_out" != yes; then
 	[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=""}


0001-Handle-machine-stack-overflow-on-mingw.patch (1.89 KB) 0001-Handle-machine-stack-overflow-on-mingw.patch h.shirosaki (Hiroshi Shirosaki), 05/15/2014 03:11 AM

Updated by luislavena (Luis Lavena) over 9 years ago

  • Category set to build
  • Status changed from Open to Assigned
  • Assignee set to nobu (Nobuyoshi Nakada)
  • Target version set to 2.2.0


Can you review, reject or approve so we can resolve these test failures?

Thank you.

Updated by h.shirosaki (Hiroshi Shirosaki) over 9 years ago

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.

Updated by h.shirosaki (Hiroshi Shirosaki) over 9 years ago

  • Category changed from build to platform/mingw
  • Status changed from Assigned to Closed

Applied at r45947. Thank you.

Updated by nagachika (Tomoyuki Chikanaga) over 9 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN to 2.0.0: UNKNOWN, 2.1: DONE

Backported into ruby_2_1 branch at r46522.

Updated by usa (Usaku NAKAMURA) over 9 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: DONE to 2.0.0: DONE, 2.1: DONE

backported r43748 (for mswin), r45947 and r45951 (for mingw) into ruby_2_0_0 at r46576.

Updated by vo.x (Vit Ondruch) about 9 years ago

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]

Also available in: Atom PDF