From: "U.Nakamura" Date: 2012-12-22T00:32:02+09:00 Subject: [ruby-core:51061] Re: [Backport93 - Backport #7454] PPTestModule test failuere on Windows 8 Hello, Thank you very much for helping always! In message "[ruby-core:51060] [Backport93 - Backport #7454] PPTestModule test failuere on Windows 8" on Dec.22,2012 00:12:32, wrote: > > Issue #7454 has been updated by phasis68 (Heesob Park). > > > This issue is not solved with changeset r38493. > > r38493 caused build failure. > > C:\work\snapshot-ms64>nmake > > Microsoft(R) Program Maintenance Utility ?? 11.00.50727.1 > Copyright (c) Microsoft Corporation. All rights reserved. > > CC = cl -nologo > LD = cl -nologo > LDSHARED = cl -nologo -LD > CFLAGS = -MD -Zi -W2 -wd4996 -we4028 -we4142 -O2sy- -Zm600 > XCFLAGS = -DRUBY_EXPORT -I. -I.ext/include/x64-mswin64_110 -I./include - > I. -I./missing > CPPFLAGS = > DLDFLAGS = -incremental:no -debug -opt:ref -opt:icf -dll > SOLIBS = > Creating config.h > .ext\include\x64-mswin64_110\ruby\config.h updated. > Creating verconf.h > verconf.h updated. > Creating config.status > compiling main.c > main.c > compiling dmydln.c > dmydln.c > compiling miniruby.rc > compiling dmyencoding.c > dmyencoding.c > compiling version.c > version.c > compiling dmyversion.c > dmyversion.c > compiling miniprelude.c > miniprelude.c > copying dummy probes.h > compiling array.c > array.c > compiling bignum.c > bignum.c > compiling class.c > class.c > compiling compar.c > compar.c > compiling complex.c > complex.c > compiling dir.c > dir.c > compiling dln_find.c > dln_find.c > compiling enum.c > enum.c > compiling enumerator.c > enumerator.c > compiling error.c > error.c > compiling eval.c > eval.c > compiling load.c > load.c > compiling proc.c > proc.c > compiling file.c > file.c > compiling gc.c > gc.c > compiling hash.c > hash.c > compiling inits.c > inits.c > compiling io.c > io.c > compiling marshal.c > marshal.c > compiling math.c > math.c > compiling node.c > node.c > compiling numeric.c > numeric.c > compiling object.c > object.c > compiling pack.c > pack.c > compiling parse.c > parse.c > compiling process.c > process.c > compiling random.c > random.c > compiling range.c > range.c > compiling rational.c > rational.c > compiling re.c > re.c > compiling regcomp.c > regcomp.c > compiling regenc.c > regenc.c > compiling regerror.c > regerror.c > compiling regexec.c > regexec.c > compiling regparse.c > regparse.c > compiling regsyntax.c > regsyntax.c > compiling ruby.c > ruby.c > compiling safe.c > safe.c > compiling signal.c > signal.c > compiling sprintf.c > sprintf.c > compiling st.c > st.c > compiling strftime.c > strftime.c > compiling string.c > string.c > compiling struct.c > struct.c > compiling time.c > time.c > compiling transcode.c > transcode.c > compiling util.c > util.c > compiling variable.c > variable.c > compiling compile.c > compile.c > compiling debug.c > debug.c > compiling iseq.c > iseq.c > compiling vm.c > vm.c > compiling vm_dump.c > vm_dump.c > compiling vm_backtrace.c > vm_backtrace.c > compiling vm_trace.c > vm_trace.c > compiling thread.c > thread.c > compiling cont.c > cont.c > compiling ./enc/ascii.c > ascii.c > compiling ./enc/us_ascii.c > us_ascii.c > compiling ./enc/unicode.c > unicode.c > compiling ./enc/utf_8.c > utf_8.c > compiling newline.c > newline.c > compiling ./missing/acosh.c > acosh.c > compiling ./missing/cbrt.c > cbrt.c > compiling ./missing/crypt.c > crypt.c > compiling ./missing/erf.c > erf.c > compiling ./missing/ffs.c > ffs.c > compiling ./missing/langinfo.c > langinfo.c > compiling ./missing/lgamma_r.c > lgamma_r.c > compiling ./missing/strlcat.c > strlcat.c > compiling ./missing/strlcpy.c > strlcpy.c > compiling ./missing/tgamma.c > tgamma.c > compiling win32/win32.c > win32.c > compiling win32/file.c > file.c > compiling ./missing/setproctitle.c > setproctitle.c > compiling dmyext.c > dmyext.c > oldnames.lib user32.lib advapi32.lib shell32.lib ws2_32.lib imagehlp.lib shlwapi.lib > linking miniruby.exe > ruby 2.0.0dev (2012-12-21 trunk 38512) [x64-mswin64_110] > rbconfig.rb updated > generating enc.mk > compiling dln.c > dln.c > compiling encoding.c > encoding.c > generating prelude.c > compiling prelude.c > prelude.c > linking static-library x64-msvcr110-ruby200-static.lib > generating x64-msvcr110-ruby200.def > linking import-library x64-msvcr110-ruby200.lib > x64-msvcr110-ruby200.lib ????? ? x64-msvcr110-ruby200.exp ??? ???? ????. > generating encdb.h > C:/work/snapshot-ms64/lib/optparse.rb:584:in `hash': bignum too big to convert into `long' (RangeError) > from C:/work/snapshot-ms64/lib/optparse.rb:584:in `[]=' > from C:/work/snapshot-ms64/lib/optparse.rb:584:in `accept' > from C:/work/snapshot-ms64/lib/optparse.rb:921:in `accept' > from C:/work/snapshot-ms64/lib/optparse.rb:1619:in `' > from C:/work/snapshot-ms64/lib/optparse.rb:212:in `' > from ./tool/generic_erb.rb:3:in `require' > from ./tool/generic_erb.rb:3:in `
' > NMAKE : fatal error U1077: '.\miniruby.exe' : '0x1' ?? ?????. > Stop. > > And here is patch for this error. > > diff --git a/object.c b/object.c.new > index f0cd1f8..611e959 100644 > --- a/object.c > +++ b/object.c.new > @@ -125,7 +125,7 @@ VALUE > rb_obj_hash(VALUE obj) > { > VALUE oid = rb_obj_id(obj); > - st_index_t h = rb_hash_end(rb_hash_start(NUM2LONG(oid))); > + st_index_t h = rb_hash_end(rb_hash_start(NUM2LL(oid))); > return LONG2FIX(h); > } > > ---------------------------------------- > Backport #7454: PPTestModule test failuere on Windows 8 > https://bugs.ruby-lang.org/issues/7454#change-34986 > > Author: phasis68 (Heesob Park) > Status: Assigned > Priority: Normal > Assignee: usa (Usaku NAKAMURA) > Category: > Target version: > > > I found following test failures with VC 2012 64bit compiler on Windows 8. > > [ 436/9569] PPTestModule::PPCycleTest#test_anonymous = 0.00 s > 1) Failure: > test_anonymous(PPTestModule::PPCycleTest) [C:/work/snapshot/test/test_pp.rb:151]: > <"#<#:0x00001682e1a260>\n"> expected but was > <"#<#:0x00000082e1a260>\n">. > > [ 439/9569] PPTestModule::PPCycleTest#test_object = 0.00 s > 2) Failure: > test_object(PPTestModule::PPCycleTest) [C:/work/snapshot/test/test_pp.rb:146]: > <"#>\n"> expected but was > <"#>\n">. > > [ 449/9569] PPTestModule::PPInspectTest#test_to_s_with_iv = 0.00 s > 3) Failure: > test_to_s_with_iv(PPTestModule::PPInspectTest) [C:/work/snapshot/test/test_pp.rb:109]: > <"#\n"> expected but was > <"#\n">. > > [ 450/9569] PPTestModule::PPInspectTest#test_to_s_without_iv = 0.00 s > 4) Failure: > test_to_s_without_iv(PPTestModule::PPInspectTest) [C:/work/snapshot/test/test_pp.rb:116]: > <"#\n"> expected but was > <"#\n">. > > > The above error is related with the address range of Object allocation on Windows 8. > The address is exceeded fixnum(32bit) range. > But object_id is fixnum and pp module is based on object_id. > Thus, pp module cannot restore the original address of the Object. > > C:\WINDOWS\system32>irb > irb(main):001:0> a = Object.new > => # > irb(main):002:0> a.object_id > => 731592160 > irb(main):003:0> require 'pp' > => true > irb(main):004:0> PP.pp(a,'') > => "#\n" > > > > -- > http://bugs.ruby-lang.org/ Regards, -- U.Nakamura