Created
February 10, 2015 17:41
-
-
Save bendilley/1453a555e981ed533f68 to your computer and use it in GitHub Desktop.
Get a trace from a 'stack too deep' error in Rails
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$enable_tracing = false | |
#$trace_out = File.open(Rails.root + 'trace.txt', 'w') | |
set_trace_func proc { |event, file, line, id, binding, classname| | |
if $enable_tracing && event == 'call' | |
#$trace_out.puts "#{file}:#{line} #{classname}##{id}" | |
raise "crash me" if caller_locations.length > 500 | |
end | |
} | |
$enable_tracing = true |
Thank you.
Bro, I love you ;-) - that saved my day !
I'm a bit of a noob here. So sorry if my question is simple. I've placed the code under config/initializers.
My rails app fails with "stack level too deep" after I try to open my landing page. How would I run this against my app?
I am getting stack level too deep the moment I run my rails app...right as it tries to go to the landing page.
Processing by MyController#homepage_index as HTML
Completed 500 Internal Server Error in 12ms
SystemStackError - stack level too deep:
(gem) activesupport-3.1.0/lib/active_support/notifications/instrumenter.rb:24:in `'
How can I use this code to get the trace?
@badbabykosh it's been a long time since I used this initialiser. It should only be necessary if for some reason you haven't got the backtrace already. Stack overflows are nearly always caused by recursive loops, so you should see repeats of the same method sequence over and over in the backtrace.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This
trace.rb
can go underconfig/initializers
in a Rails app when you need to track down a recursive loop. Note that it's far too inefficient to have it permanently present!Credit to the top two answers to this stack overflow question, and indeed the original gist.