From: "shugo (Shugo Maeda)" Date: 2012-12-14T13:47:35+09:00 Subject: [ruby-core:50885] [ruby-trunk - Bug #7556] test error on refinement Issue #7556 has been updated by shugo (Shugo Maeda). Hello, phasis68 (Heesob Park) wrote: > Here is another workaround: > > #ifdef _MSC_VER > #pragma optimize( "", off ) > #endif Thanks for your suggestion. But it seems that the #pragma optimize( "", off ) version is slightly slower than the volatile int x = 0 version. with volatile int x = 0: C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb Rehearsal ----------------------------------------- super 1.778000 0.000000 1.778000 ( 1.783227) -------------------------------- total: 1.778000sec user system total real super 1.810000 0.000000 1.810000 ( 1.806230) C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb Rehearsal ----------------------------------------- super 1.747000 0.000000 1.747000 ( 1.789727) -------------------------------- total: 1.747000sec user system total real super 1.763000 0.000000 1.763000 ( 1.760224) C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb Rehearsal ----------------------------------------- super 1.763000 0.000000 1.763000 ( 1.804229) -------------------------------- total: 1.763000sec user system total real super 1.809000 0.000000 1.809000 ( 1.841734) with #pragma optimize( "", off ): C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb Rehearsal ----------------------------------------- super 1.825000 0.000000 1.825000 ( 1.859236) -------------------------------- total: 1.825000sec user system total real super 1.872000 0.000000 1.872000 ( 1.864237) C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb Rehearsal ----------------------------------------- super 1.919000 0.000000 1.919000 ( 1.920744) -------------------------------- total: 1.919000sec user system total real super 1.794000 0.000000 1.794000 ( 1.820232) C:\Users\shugo\Documents\Source\ruby>\ruby\bin\ruby bm_vm2_super.rb Rehearsal ----------------------------------------- super 1.872000 0.000000 1.872000 ( 1.913243) -------------------------------- total: 1.872000sec user system total real super 1.810000 0.000000 1.810000 ( 1.817231) I guess #pragma optimize( "", off ) disables function inlining of vm_call_method. ---------------------------------------- Bug #7556: test error on refinement https://bugs.ruby-lang.org/issues/7556#change-34728 Author: usa (Usaku NAKAMURA) Status: Assigned Priority: Normal Assignee: ko1 (Koichi Sasada) Category: ext Target version: 2.0.0 ruby -v: ruby -v: ruby 2.0.0dev (2012-12-13 trunk 38354) [x64-mswin64_100] 1) Error: test_refine_recursion(TestRefinement): NoMethodError: undefined method `recursive_length' for "oo":String C:/Users/usa/ruby/test/ruby/test_refinement.rb:567:in `recursive_length'
:in `
' C:/Users/usa/ruby/test/ruby/test_refinement.rb:806:in `eval' C:/Users/usa/ruby/test/ruby/test_refinement.rb:806:in `eval_using' C:/Users/usa/ruby/test/ruby/test_refinement.rb:574:in `test_refine_recursion' On my box this error is 100% reproducible, but I also know that RubyCI and RubyInstaller CI don't report this error. I've heard that nobu reproduced this bug on x86_64-dawrin, but I don't know the detail of his environment. # Once I wrote the detail of my debuggin, but it is lost by accidenal reboot # of my PC. # I have no energy to rewrite it, because writing long English sentences # irritates me, especially after seeing mails which reproach our native # language. -- http://bugs.ruby-lang.org/