Bug #4040

SystemStackError with Hash[*a] for Large _a_

Added by Run Paint Run Run over 5 years ago. Updated over 3 years ago.

ruby -v:
ruby 1.9.3dev (2010-11-09 trunk 29737) [x86_64-linux]


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[*{ 1 }]; true

I haven't looked for the minimum value needed with ruby -e, but the following reproduces:

ruby -e 'Hash[*{ 1 }]'

I suppose this isn't technically a bug, but maybe it offers another argument for either #666 or an extension of #3131.

Related issues

Related to Ruby trunk - Bug #982: stack level too deep for long Array initialization Closed 12/29/2008


#1 Updated by Martin Dürst over 5 years ago

This bug may be related to bug #982.

#2 [ruby-core:37429] Updated by Yui NARUSE almost 5 years ago

  • Status changed from Open to Assigned
  • Assignee set to Koichi Sasada

#3 [ruby-core:37455] Updated by Hiroshi Nakamura almost 5 years ago

  • Target version set to 1.9.3

#4 [ruby-core:37684] Updated by Koichi Sasada almost 5 years ago

  • Target version changed from 1.9.3 to 2.0.0

Let us pending it to next version....

#5 [ruby-core:50118] Updated by Koichi Sasada over 3 years ago

  • Target version changed from 2.0.0 to next minor

We need re-consideration about method invocation to support such cases.
I want to challenge at next version.

Also available in: Atom PDF