title: Why do I get "stack level too deep" from method_missing in irb 1.9.3?
body: <p>Scenario:</p>
  
  <pre><code>-bash-3.2$ irb -f
  ruby-1.9.3-p0 :001 &gt; @v = {}
   =&gt; {} 
  ruby-1.9.3-p0 :002 &gt; def method_missing(sym, *args); @v[sym]; end
   =&gt; nil 
  ruby-1.9.3-p0 :003 &gt; a
  (irb):2: stack level too deep (SystemStackError)
  -bash-3.2$ 
  </code></pre>
  
  <p>I ran with -f to avoid loading any irbrc stuff.
  I'm expecting to get nil when I input <code>a</code>. What's going on, and is there a workaround? I tried wrapping <code>a</code> with a <code>begin</code>/<code>rescue Exception</code> block but that didn't do anything.</p>
  
  <p>This also happens with 1.9.2, but not 1.9.1.</p>
  
  <p>More strange behavior:</p>
  
  <pre><code>-bash-3.2$ irb -f
  irb(main):001:0&gt; @v = {}
  =&gt; {}
  irb(main):002:0&gt; def method_missing(sym, *args); @v[sym]; end; 5.times { p a }
  nil
  nil
  nil
  nil
  nil
  =&gt; 5
  irb(main):003:0&gt; a
  (irb):2: stack level too deep (SystemStackError)
  -bash-3.2$ 
  </code></pre>
  
  <p>This tells me that there's a bug in irb, or that some obscure bug in ruby is being triggered by irb. Also, after defining method_missing, even methods that exist like <code>local_variables</code> or <code>eval</code> cause the error.</p>