Andrew Cooke | Contents | Latest | RSS | Previous | Next


Welcome to my blog, which was once a mailing list of the same name and is still generated by mail. Please reply via the "comment" links.

Always interested in offers/projects/new ideas. Eclectic experience in fields like: numerical computing; Python web; Java enterprise; functional languages; GPGPU; SQL databases; etc. Based in Santiago, Chile; telecommute worldwide. CV; email.

Personal Projects

Choochoo Training Diary

Last 100 entries

© 2006-2017 Andrew Cooke (site) / post authors (content).

Debugging A Hung (Spinning) Python Process

From: andrew cooke <andrew@...>

Date: Mon, 31 May 2010 09:46:01 -0400

I left a Python script running at the client's, overnight, expecting
everything to be ready in the morning.  But when I checked next day the CPU
was pegged at 100% and the log indicated no progress since 1am.  Clearly the
Python code had a bug and was "spinning" in a tight loop.

The problem, then, was to find out what code was being executed.  Luckily
there's a very neat solution, that I've used before, that does exactly this.
It's described in an answer by "spiv" at

That describes how to connect gdb to the process ("gdb -p PID") and dump a
Python stack trace ("pystack").  All that you need to do is create a .gdbinit
file with the contents given here -

With a stack trace it was easy to see the error in my code - and it was a
tight loop, and it depended explicitly on the time of day, which is why I had
not seen it before. :o)



From: andrew cooke <andrew@...>

Date: Thu, 31 May 2018 21:16:09 -0400

This is now simpler.

You need to follow the instructions at - basically put

  add-auto-load-safe-path /path/to/checkout

in ~/.gdbinit

Then connect with gdb -p PID and use the commands described in the

There is one extra step for VMs.  You need to link the
in the checkout directory to the bin directory for the virtualenv, and
the name MUST MATCH the python in use (so python-3.5, if used, not
simply python)

For example, ths worked for me:

  ln -s /home/andrew/pkg/Python-3.5.1/ env/bin/


Comment on this post