Skip to content

Instantly share code, notes, and snippets.

Created February 10, 2015 17:41
Show Gist options
  • Save bendilley/1453a555e981ed533f68 to your computer and use it in GitHub Desktop.
Save bendilley/1453a555e981ed533f68 to your computer and use it in GitHub Desktop.
Get a trace from a 'stack too deep' error in Rails
$enable_tracing = false
#$trace_out = + '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
$enable_tracing = true
Copy link

This trace.rb can go under config/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.

Copy link

ArthurN commented Jul 12, 2015

Thank you.

Copy link

mayinx commented Jul 15, 2019

Bro, I love you ;-) - that saved my day !

Copy link

badbabykosh commented Jul 10, 2021

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?

Copy link

@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