From: "ko1 (Koichi Sasada)" Date: 2012-11-26T09:23:01+09:00 Subject: [ruby-core:50128] [ruby-trunk - Bug #5236] Including a module in a superclass after it has been included in a subclass leads to infinite recursion if the module uses `super` Issue #5236 has been updated by ko1 (Koichi Sasada). Assignee changed from ko1 (Koichi Sasada) to nobu (Nobuyoshi Nakada) nobu, could you check it? ---------------------------------------- Bug #5236: Including a module in a superclass after it has been included in a subclass leads to infinite recursion if the module uses `super` https://bugs.ruby-lang.org/issues/5236#change-33913 Author: myronmarston (Myron Marston) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: Target version: 2.0.0 ruby -v: 1.9.x Under these particular circumstances, you get infinite recursion and a system stack error on 1.9 but not 1.8: * Create a module that has a method that uses `super` * Include that module in a class after it has already been included in one of its subclasses * Instantiate an object of said subclass and call the method On 1.8, the `super` works as expected. On 1.9 you get a SystemStackError. Here's example code that demonstrates the issue: # example.rb module MyModule def some_method; super; end end class MyBaseClass; end class MySubClass < MyBaseClass; include MyModule end # To trigger this bug, we must include the module in the base class after # the module has already been included in the subclass. If we move this line # above the subclass declaration, this bug will not occur. MyBaseClass.send(:include, MyModule) MySubClass.new.some_method ### The output ��� ruby --version ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin10.6.0] ��� ruby example.rb example.rb:2:in `some_method': super: no superclass method `some_method' for # (NoMethodError) from example.rb:2:in `some_method' from example.rb:13 ��� ruby --version ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.6.0] ��� ruby example.rb example.rb:2: stack level too deep (SystemStackError) I've tried it on 1.9.3.preview-1 and I get the SystemStackError there, too. I would expect 1.9 to act like 1.8 here, and not infinitely recurse on itself. -- http://bugs.ruby-lang.org/