From: "charliesome (Charlie Somerville)" Date: 2012-08-14T21:39:04+09:00 Subject: [ruby-core:47187] [ruby-trunk - Bug #6863] Class#initialize infinite loops when passed self Issue #6863 has been updated by charliesome (Charlie Somerville). The problem with disabling Class.allocate is that we don't know if anyone is using it out in the wild. Detecting circular inheritance and throwing might be more ideal since it has a smaller breakage potential. ---------------------------------------- Bug #6863: Class#initialize infinite loops when passed self https://bugs.ruby-lang.org/issues/6863#change-28867 Author: charliesome (Charlie Somerville) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: 2.0.0dev =begin The following code sends Ruby into an infinite loop: x = Class.allocate x.send :initialize, x The problem appears to be in rb_class_initialize (object.c:1564) when Ruby attempts to call (({#inherited})) on the newly created class. The method lookup infinite loops as it tries to descend the ancestor chain. This should probably throw a (({TypeError})) instead. =end -- http://bugs.ruby-lang.org/