Project

General

Profile

Actions

Bug #4040

closed

SystemStackError with Hash[*a] for Large _a_

Added by runpaint (Run Paint Run Run) over 13 years ago. Updated 6 months ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 1.9.3dev (2010-11-09 trunk 29737) [x86_64-linux]
[ruby-core:33132]
Tags:

Description

=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


Related issues 2 (0 open2 closed)

Related to Ruby master - Bug #982: stack level too deep for long Array initializationClosedko1 (Koichi Sasada)12/29/2008Actions
Related to Ruby master - Bug #5719: Hash::[] can't handle 100000+ argsClosedko1 (Koichi Sasada)Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0