From: "nobu (Nobuyoshi Nakada)" Date: 2013-01-23T16:45:02+09:00 Subject: [ruby-core:51581] [ruby-trunk - Bug #5236][Closed] 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 nobu (Nobuyoshi Nakada). Status changed from Assigned to Closed Already fixed probably at r36595 etc. ---------------------------------------- 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-35540 Author: myronmarston (Myron Marston) Status: Closed 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/