Issue #4040 has been updated by jeremyevans0 (Jeremy Evans).
I submitted a pull request to fix this:
https://github.com/ruby/ruby/pull/6816
----------------------------------------
Bug #4040: SystemStackError with Hash[*a] for Large _a_
https://bugs.ruby-lang.org/issues/4040#change-100285
* Author: runpaint (Run Paint Run Run)
* Status: Assigned
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* ruby -v: ruby 1.9.3dev (2010-11-09 trunk 29737) [x86_64-linux]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
=begin
I've been hesitating over whether to file a ticket about this, so please feel free to
close if I've made the wrong choice.
I often use Hash[*array.flatten] in IRB to convert arrays of arrays into hashes. Today I
noticed that if the array is big enough, this would raise a SystemStackError. Puzzled, I
looked deeper. I assumed I was hitting the maximum number of arguments a method's argc
can hold, but realised that the minimum size of the array needed to trigger this exception
differed depending on whether I used IRB or not. So, presumably this is indeed exhausting
the stack...
In IRB, the following is the minimal reproduction of this problem:
Hash[*130648.times.map{ 1 }]; true
I haven't looked for the minimum value needed with `ruby -e`, but the following
reproduces:
ruby -e 'Hash[*1380888.times.map{ 1 }]'
I suppose this isn't technically a bug, but maybe it offers another argument for
either #666 or an extension of #3131.
=end
--
https://bugs.ruby-lang.org/