Skip to main content

Display the Python traceback on a crash

Project description

Latest release on the Python Cheeseshop (PyPI) Build status of faulthandler on Travis CI No Maintenance Intended

Fault handler for SIGSEGV, SIGFPE, SIGABRT, SIGBUS and SIGILL signals: display the Python traceback and restore the previous handler. Allocate an alternate stack for this handler, if sigaltstack() is available, to be able to allocate memory on the stack, even on stack overflow (not available on Windows).

Import the module and call faulthandler.enable() to enable the fault handler.

Alternatively you can set the PYTHONFAULTHANDLER environment variable to a non-empty value.

The fault handler is called on catastrophic cases and so it can only use signal-safe functions (eg. it doesn’t allocate memory on the heap). That’s why the traceback is limited: it only supports ASCII encoding (use the backslashreplace error handler for non-ASCII characters) and limits each string to 100 characters, doesn’t print the source code in the traceback (only the filename, the function name and the line number), is limited to 100 frames and 100 threads.

By default, the Python traceback is written to the standard error stream. Start your graphical applications in a terminal and run your server in foreground to see the traceback, or pass a file to faulthandler.enable().

faulthandler is implemented in C using signal handlers to be able to dump a traceback on a crash or when Python is blocked (eg. deadlock).

This module is the backport for CPython 2.7. faulthandler is part of CPython standard library since CPython 3.3: faulthandler. For PyPy, faulthandler is builtin since PyPy 5.5: use pypy -X faulthandler.

Website: https://faulthandler.readthedocs.io/

faulthandler 3.2 is the last version released by Victor Stinner. I maintained it for 10 years in my free time for the great pleasure of Python 2 users, but Python 2 is no longer supported upstream since 2020-01-01. Each faulthandler release requires me to start my Windows VM, install Python 2.7 in 32-bit and 64-bit, install an old C compiler just for Python 2.7, and type manually some commands to upload Windows binaries. Moreover, I have to fix some issues on Travis CI and many small boring tasks. The maintenance is far from being free. In 10 years, I got zero “thank you” (and 0€), only bug reports :-)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for faulthandler, version 3.2
Filename, size File type Python version Upload date Hashes
Filename, size faulthandler-3.2-cp27-cp27m-win32.whl (12.0 kB) File type Wheel Python version cp27 Upload date Hashes View hashes
Filename, size faulthandler-3.2-cp27-cp27m-win_amd64.whl (12.6 kB) File type Wheel Python version cp27 Upload date Hashes View hashes
Filename, size faulthandler-3.2.tar.gz (59.4 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page