From: s.wanabe@... Date: 2017-08-01T01:07:24+00:00 Subject: [ruby-core:82220] [Ruby trunk Bug#13775] Ruby hangs when calling scope and belongs_to many times (with mongomapper) Issue #13775 has been updated by wanabe (_ wanabe). mtsmfm (Fumiaki Matsushima) wrote: > Oops! > Sorry, I committed and pushed! Thank you. reproduced. I guess this is a GC issue. Here is a reproducible code with cflags="-DRGENGC_CHECK_MODE=2" build. this code works fine (= no [BUG]) without RGENGC_CHECK_MODE. ``` b = proc { } 10.times do |i| p i b.clone GC.start end ``` I saw below output. ``` 0 1 b.rb:5: [BUG] inconsistent old slot nubmer: expect 2916, but 2917. ruby 2.5.0dev (2017-07-31 trunk 59454) [x86_64-linux] (snip) ``` And `git bisect` shows that this is from r55766 [Feature #12628]. ---------------------------------------- Bug #13775: Ruby hangs when calling scope and belongs_to many times (with mongomapper) https://bugs.ruby-lang.org/issues/13775#change-65987 * Author: mtsmfm (Fumiaki Matsushima) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.4.1 * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- Following code will hang Ruby: ~~~ruby require 'bundler/setup' require 'mongo_mapper' MongoMapper.setup( { 'development' => { 'host' => 'mongo', 'port' => 27017, 'database' => 'db' } }, 'development' ) class A include MongoMapper::Document 10000.times do |i| scope :"scope_#{i}", order(:"order_#{i}") belongs_to :"col_#{i}" end end ~~~ I confirmed that it will happen 2.4.1 and trunk (ruby 2.5.0dev (2017-07-18 trunk 59362) [x86_64-linux]). Backtrace: ~~~ /vendor/bundle/gems/mongo_mapper-0.14.0/lib/mongo_mapper/plugins/associations/single_association.rb:8: [BUG] rb_gc_mark(): 0x0000000178d240 is T_NONE ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux] -- Control frame information ----------------------------------------------- c:0015 p:---- s:0062 e:000061 CFUNC :module_eval c:0014 p:0125 s:0057 e:000056 METHOD /vendor/bundle/gems/mongo_mapper-0.14.0/lib/mongo_mapper/plugins/associations/single_association.rb:8 c:0013 p:0078 s:0052 e:000051 METHOD /vendor/bundle/gems/mongo_mapper-0.14.0/lib/mongo_mapper/plugins/associations/belongs_to_association.rb:21 c:0012 p:0033 s:0047 e:000046 METHOD /vendor/bundle/gems/mongo_mapper-0.14.0/lib/mongo_mapper/plugins/associations.rb:64 c:0011 p:0029 s:0042 e:000041 METHOD /vendor/bundle/gems/mongo_mapper-0.14.0/lib/mongo_mapper/plugins/associations.rb:14 c:0010 p:0013 s:0035 e:000034 BLOCK main.rb:29 [FINISH] c:0009 p:---- s:0031 e:000030 IFUNC c:0008 p:---- s:0028 e:000027 CFUNC :upto c:0007 p:---- s:0025 e:000024 CFUNC :each c:0006 p:0018 s:0021 e:000020 METHOD /vendor/bundle/gems/activesupport-4.2.9/lib/active_support/core_ext/range/each.rb:7 c:0005 p:0037 s:0016 E:0007e0 CLASS main.rb:28 c:0004 p:0011 s:0013 e:000012 BLOCK main.rb:23 [FINISH] c:0003 p:---- s:0010 e:000009 CFUNC :times c:0002 p:0068 s:0006 e:000005 EVAL main.rb:22 [FINISH] c:0001 p:0000 s:0003 E:001b80 (none) [FINISH] ~~~ Steps to reproduce: ~~~ git clone https://gist.github.com/dbbf1afabd372aa1269a954911292cfe.git cd dbbf1afabd372aa1269a954911292cfe docker-compose run ruby-2-4-1 docker-compose run ruby-trunk ~~~ Full backtrace in my gist. https://gist.github.com/mtsmfm/dbbf1afabd372aa1269a954911292cfe -- https://bugs.ruby-lang.org/ Unsubscribe: