SystemStackError

Rubyで無限に深いメソッド呼び出しをすると、SystemStackErrorになります。

def rubyco
  rubyco
end

rubyco

実行すると、次のようになります。

a.rb:2:in `rubyco': stack level too deep (SystemStackError)
        from a.rb:2:in `rubyco'
        from a.rb:4

ところで、二つのメソッドが互いに呼び合って無限に深い呼び出しになると、おもしろいコールスタック表示になります。

def rubyco
  hyuki
end

def hyuki
  rubyco
end

rubyco

実行すると、次のようになります。

a.rb:2:in `rubyco': stack level too deep (SystemStackError)
        from a.rb:5:in `hyuki'
        from a.rb:2:in `rubyco'
        from a.rb:5:in `hyuki'
        from a.rb:2:in `rubyco'
        from a.rb:5:in `hyuki'
        from a.rb:2:in `rubyco'
        from a.rb:5:in `hyuki'
        from a.rb:2:in `rubyco'
         ... 1357 levels...
        from a.rb:2:in `rubyco'
        from a.rb:5:in `hyuki'
        from a.rb:2:in `rubyco'
        from a.rb:7

途中のスタックを省略しているところがクールですね。