Project

General

Profile

Actions

Bug #7212

closed

"stack level too deep" in Fiber much earlier in new versions of 1.9.3

Added by fiddur (Fredrik Liljegren) over 9 years ago. Updated about 9 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux] (and others, see description)
Backport:
[ruby-core:48203]

Description

I was getting SystemStackError in my application on some servers and not others; on all with 1.9.3-p286 and on some with p194, and on none with 1.9.2-head. I boiled it down to this:

def recursive(level = 0)
-> do
p "In block #{level}"
if level < 1000
subblock = recursive(level + 1)
subblock.call
end
end
end

p "Doing recursive call in a fiber"
Fiber.new { recursive.call }.resume

On server A, 1.9.3-p194 and 1.9.3-p286 got up to 11 levels of recursion, while 1.9.2-head got up to 97 levels.
On server B (without 1.9.2), 1.9.3-p194 got 55 levels while p286 still got 11 levels.

I don't know what changes are made, but I think 11 levels are way on the low side for many applications.

(My original problem was with a thin-server running rack-fiber_pool with em-synchrony getting too deep in a regexp in Addressable::URI.)


Files

recursive.rb (228 Bytes) recursive.rb fiddur (Fredrik Liljegren), 10/24/2012 11:21 PM
Actions

Also available in: Atom PDF