Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP


Segfault during encoding for "recursive hashes" #98

igrigorik opened this Issue · 1 comment

2 participants


Just ran into this.. should throw an error, instead of segfaulting the runtime.. :-)

1.9.3p0 :001 > require 'yajl'
 => true 
1.9.3p0 :002 > test = {key: {}}
 => {:key=>{}} 
1.9.3p0 :004 > test[:key].merge! test
 => {:key=>{...}} 
1.9.3p0 :005 > test[:key]
 => {:key=>{...}} 
1.9.3p0 :006 > Yajl::Encoder.encode(test)
/Users/igrigorik/.rvm/gems/ruby-1.9.3-p0/gems/yajl-ruby-1.1.0/lib/yajl.rb:72: [BUG] Segmentation fault
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0]

-- Control frame information -----------------------------------------------
c:0025 p:---- s:0095 b:0095 l:000094 d:000094 CFUNC  :encode
c:0024 p:0068 s:0090 b:0090 l:000089 d:000089 METHOD /Users/igrigorik/.rvm/gems/ruby-1.9.3-p0/gems/yajl-ruby-1.1.0/lib/yajl.rb:72
c:0023 p:0020 s:0082 b:0082 l:001ff8 d:000081 EVAL   (irb):6
c:0022 p:---- s:0080 b:0080 l:000079 d:000079 FINISH
c:0021 p:---- s:0078 b:0078 l:000077 d:000077 CFUNC  :eval
c:0020 p:0028 s:0071 b:0071 l:000070 d:000070 METHOD /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb/workspace.rb:80
c:0019 p:0033 s:0064 b:0063 l:000062 d:000062 METHOD /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb/context.rb:254
c:0018 p:0031 s:0058 b:0058 l:0007e8 d:000057 BLOCK  /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb.rb:159
c:0017 p:0042 s:0050 b:0050 l:000049 d:000049 METHOD /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb.rb:273
c:0016 p:0011 s:0045 b:0045 l:0007e8 d:000044 BLOCK  /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb.rb:156
c:0015 p:0144 s:0041 b:0041 l:000024 d:000040 BLOCK  /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb/ruby-lex.rb:243
c:0014 p:---- s:0038 b:0038 l:000037 d:000037 FINISH
c:0013 p:---- s:0036 b:0036 l:000035 d:000035 CFUNC  :loop
c:0012 p:0009 s:0033 b:0033 l:000024 d:000032 BLOCK  /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb/ruby-lex.rb:229
c:0011 p:---- s:0031 b:0031 l:000030 d:000030 FINISH
c:0010 p:---- s:0029 b:0029 l:000028 d:000028 CFUNC  :catch
c:0009 p:0023 s:0025 b:0025 l:000024 d:000024 METHOD /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb/ruby-lex.rb:228
c:0008 p:0046 s:0022 b:0022 l:0007e8 d:0007e8 METHOD /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb.rb:155
c:0007 p:0011 s:0019 b:0019 l:000c18 d:000018 BLOCK  /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb.rb:70
c:0006 p:---- s:0017 b:0017 l:000016 d:000016 FINISH
c:0005 p:---- s:0015 b:0015 l:000014 d:000014 CFUNC  :catch
c:0004 p:0183 s:0011 b:0011 l:000c18 d:000c18 METHOD /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb.rb:69
c:0003 p:0142 s:0006 b:0006 l:002138 d:000758 EVAL   /Users/igrigorik/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:002138 d:002138 TOP   

Doh - I could have sword this used to just throw a "stack level too deep" exception. I'll try and take a look this weekend, thanks for reporting!

@igrigorik igrigorik closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.