Posted 3 months ago. Visible to the public.

How to get a backtrace if rspec (or any other ruby process) hangs with no output

If rspec hangs with no output and you dont get a backtrace neither with --backtrace nor by just killing it with crtl-c,
you can put the following in your spec/spec_helper.rb:

Copy
puts "rspec pid: #{Process.pid}" trap 'USR1' do threads = Thread.list puts puts "=" * 80 puts "Received USR1 signal; printing all #{threads.count} thread backtraces." threads.each do |thr| description = thr == Thread.main ? "Main thread" : thr.inspect puts puts "#{description} backtrace: " puts thr.backtrace.join("\n") end puts "=" * 80 end

then kill the process with kill -USR1 <the pid> and you get the backtrace.

(source: https://github.com/rspec/rspec-rails/issues/1353#issuecomment-93173691)

Once an application no longer requires constant development, it needs periodic maintenance for stable and secure operation. makandra offers monthly maintenance contracts that let you focus on your business while we make sure the lights stay on.

Owner of this card:

Avatar
Martin Schaflitzl
Last edit:
3 months ago
by Martin Schaflitzl
Keywords:
freezes
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Martin Schaflitzl to makandra dev
This website uses cookies to improve usability and analyze traffic.
Accept or learn more