From: apohllo@...2.pl Date: 2014-09-10T14:21:11+00:00 Subject: [ruby-core:64931] [ruby-trunk - Bug #10223] [Open] Stack level too deep in CSV when parsing long line Issue #10223 has been reported by Aleksander Pohl. ---------------------------------------- Bug #10223: Stack level too deep in CSV when parsing long line https://bugs.ruby-lang.org/issues/10223 * Author: Aleksander Pohl * Status: Open * Priority: High * Assignee: * Category: core * Target version: * ruby -v: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux], ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- The following code: ~~~ #!/usr/bin/env ruby # encoding: utf-8 require 'bundler/setup' require 'csv' CSV.open("csv_error.csv") do |input| input.each do |category,*mappings| # do nothing end end ~~~ with the data file attached causes the follwing error: ~~~ /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/csv.rb:1768: stack level too deep (SystemStackError) ~~~ Interestingly almost the same code: #!/usr/bin/env ruby # encoding: utf-8 require 'bundler/setup' require 'csv' CSV.open("csv_error.csv") do |input| input.each do |tuple| # do nothing end end ~~~ works fine. The error appears both in Ruby 1.9.2 (ancient) and Ruby 2.1.2. So I suppose it is an error inside CSV lib. This might be important for any developer parsing CSV files comming from the outside world, since it may cause DOS error. ---Files-------------------------------- csv_error.csv (2.1 MB) -- https://bugs.ruby-lang.org/