From: "h.shirosaki (Hiroshi Shirosaki)" Date: 2012-11-30T11:28:17+09:00 Subject: [ruby-core:50362] [ruby-trunk - Bug #7456] Build failure with x64 mingw on Windows 8 Issue #7456 has been updated by h.shirosaki (Hiroshi Shirosaki). When iseqv is 0 at ADD_CATCH_ENTRY in compile.c, invalid VALUE (higher bits over 32bit are non zero) is added to iseq->compile_data->catch_table_ary. This causes Segmentation fault in GC mark phase. Since rb_ary_new3() has variable arguments, proper cast of arguments would be needed. I confirmed build completes with this patch on Win8 release preview running on VM, but I don't have Win8. 1.9.3 also have this code. https://github.com/ruby/ruby/blob/ruby_1_9_3/compile.c#L254 diff --git a/compile.c b/compile.c index ebb58bb..d81ca0c 100644 --- a/compile.c +++ b/compile.c @@ -249,7 +249,7 @@ r_value(VALUE value) (rb_ary_push(iseq->compile_data->catch_table_ary, \ rb_ary_new3(5, (type), \ (VALUE)(ls) | 1, (VALUE)(le) | 1, \ - (iseqv), (VALUE)(lc) | 1))) + (VALUE)(iseqv), (VALUE)(lc) | 1))) /* compile node */ #define COMPILE(anchor, desc, node) \ ---------------------------------------- Bug #7456: Build failure with x64 mingw on Windows 8 https://bugs.ruby-lang.org/issues/7456#change-34180 Author: phasis68 (Heesob Park) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0dev (2012-11-28 trunk 37906) [x64-mingw32] I cannot build x64 mingw version of trunk on Windows 8. $ make CC = x86_64-w64-mingw32-gcc LD = ld LDSHARED = x86_64-w64-mingw32-gcc -shared CFLAGS = -O3 -fno-omit-frame-pointer -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT CPPFLAGS = -D_WIN32_WINNT=0x0501 -I. -I.ext/include/x64-mingw32 -I./include -I. DLDFLAGS = -Wl,--enable-auto-image-base,--enable-auto-import -Wl,--out-implib=libx64-msvcrt-ruby200.dll.a x64-msvcrt-ruby200.def -Wl,--stack,0x00200000,--enable-auto-import SOLIBS = x64-msvcrt-ruby200.res.o -lshell32 -lws2_32 -limagehlp -lshlwapi compiling main.c compiling dmydln.c compiling dmyencoding.c compiling version.c compiling dmyversion.c compiling miniprelude.c copying dummy probes.h compiling array.c compiling bignum.c compiling class.c compiling compar.c compiling complex.c compiling dir.c compiling dln_find.c compiling enum.c compiling enumerator.c compiling error.c compiling eval.c compiling load.c compiling proc.c compiling file.c compiling gc.c compiling hash.c compiling inits.c compiling io.c io.c: In function 'pipe_open': io.c:5548:12: warning: variable 'envp' set but not used [-Wunused-but-set-variable] compiling marshal.c compiling math.c compiling node.c compiling numeric.c compiling object.c compiling pack.c compiling parse.c compiling process.c process.c: In function 'p_uid_change_privilege': process.c:5044:14: warning: variable 'uid' set but not used [-Wunused-but-set-variable] process.c: In function 'p_gid_change_privilege': process.c:5749:14: warning: variable 'gid' set but not used [-Wunused-but-set-variable] compiling random.c compiling range.c compiling rational.c compiling re.c compiling regcomp.c compiling regenc.c compiling regerror.c compiling regexec.c compiling regparse.c compiling regsyntax.c compiling ruby.c compiling safe.c compiling signal.c compiling sprintf.c compiling st.c compiling strftime.c compiling string.c compiling struct.c compiling time.c compiling transcode.c compiling util.c compiling variable.c compiling compile.c compiling debug.c compiling iseq.c compiling vm.c compiling vm_dump.c compiling vm_backtrace.c compiling vm_trace.c compiling thread.c compiling cont.c compiling ./enc/ascii.c compiling ./enc/us_ascii.c compiling ./enc/unicode.c compiling ./enc/utf_8.c compiling newline.c compiling ./missing/langinfo.c compiling ./missing/fileblocks.c compiling ./missing/crypt.c compiling ./missing/lgamma_r.c compiling ./missing/strlcpy.c compiling ./missing/strlcat.c compiling ./missing/ffs.c compiling ./missing/setproctitle.c compiling win32/win32.c compiling win32/file.c compiling dmyext.c linking miniruby.exe ./tool/mkconfig.rb:11: [BUG] Segmentation fault ruby 2.0.0dev (2012-11-28 trunk 37906) [x64-mingw32] -- Control frame information ----------------------------------------------- c:0003 p:---- s:0029 e:000028 CFUNC :require c:0002 p:0100 s:0025 e:000770 EVAL ./tool/mkconfig.rb:11 [FINISH] c:0001 p:0000 s:0002 e:002638 TOP [FINISH] ./tool/mkconfig.rb:11:in `
' ./tool/mkconfig.rb:11:in `require' -- C level backtrace information ------------------------------------------- C:\WINDOWS\SYSTEM32\ntdll.dll(NtWaitForSingleObject+0xa) [0x000007FB60A62C2A] C:\WINDOWS\system32\KERNELBASE.dll(WaitForSingleObjectEx+0x9a) [0x000007FB5DCD10 EA] [0x000000000057F649] [0x0000000000440F68] [0x0000000000442035] [0x00000000005075F8] [0x00000000005A3545] C:\WINDOWS\SYSTEM32\ntdll.dll(_C_specific_handler+0x8e) [0x000007FB60A84FEA] C:\WINDOWS\SYSTEM32\ntdll.dll(RtlLookupFunctionEntry+0x26d) [0x000007FB60A8464D] C:\WINDOWS\SYSTEM32\ntdll.dll(DbgPrint+0x47c) [0x000007FB60A8567C] C:\WINDOWS\SYSTEM32\ntdll.dll(KiUserExceptionDispatcher+0x2e) [0x000007FB60A64BBA] [0x000000000045D9C0] [0x000000000045F7C2] [0x000000000045FB41] [0x000000000045FE24] [0x0000000000461272] [0x00000000004617C0] [0x00000000004BF8FE] [0x00000000004C17D4] [0x000000000058314A] [0x00000000004ADCC2] [0x0000000000505044] [0x0000000000449F4A] [0x0000000000505C8E] [0x000000000044AEBD] [0x000000000044CA3E] [0x000000000056BB16] [0x000000000057A8FB] [0x000000000056F5C2] [0x0000000000573FF6] [0x000000000057CA90] [0x0000000000446FF2] [0x00000000004496B1] [0x00000000005A8A84] [0x00000000004013D7] [0x00000000004014F8] C:\WINDOWS\system32\KERNEL32.DLL(BaseThreadInitThunk+0x1a) [0x000007FB5E03167E] -- Other runtime information ----------------------------------------------- * Loaded script: ./tool/mkconfig.rb * Loaded features: 0 enumerator.so [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. make: *** [.rbconfig.time] Error 3 Whereas, Ruby 1.9.3p327 succeed to build with x64 mingw. And Trunk build with VC 2012 64bit is also successful. -- http://bugs.ruby-lang.org/