# Things that cause trouble

history: 20121231T085200, brand new docs.

Coverage works well, and I want it to properly measure any Python program, but there are some situations it can't cope with. This page details some known problems, with possible courses of action, and links to coverage.py bug reports with more information.

I would love to :ref:hear from you <contact> if you have information about any of these problems, even just to explain to me why you want them to start working properly.

If your problem isn't discussed here, you can of course search the coverage.py bug tracker directly to see if there is some mention of it.

## Things that don't work

There are a number of popular modules, packages, and libraries that prevent coverage.py from working properly:

• execv, or one of its variants. These end the current program and replace it with a new one. This doesn't save the collected coverage data, so your program that calls execv will not be fully measured. A patch for coverage.py is in issue 43.
• multiprocessing launches processes to provide parallelism. These processes don't get measured by coverage.py. Some possible fixes are discussed or linked to in issue 117.
• gevent, which is based on greenlet, and is similar to eventlet. All of these manipulate the C stack, and therefore confuse coverage.py. Issue 149 has some pointers to more information.
• sys.settrace is the Python feature that coverage.py uses to see what's happening in your program. If another part of your program is using sys.settrace, then it will conflict with coverage.py, and it won't be measured properly.

## Things that require --timid

Some packages interfere with coverage measurement, but you might be able to make it work by using the --timid command-line switch, or the [run] timid=True configuration option.

• DecoratorTools, or any package which uses it, notably TurboGears. DecoratorTools fiddles with the trace function. You will need to use --timid.

## Really obscure things

• Python 2.5 had a bug (1569356) that could make your program behave differently when being measured with coverage. This is diagnosed in issue 51.

## Still having trouble?

If your problem isn't mentioned here, and isn't already reported in the coverage.py bug tracker, please :ref:get in touch with me <contact>, we'll figure out a solution.

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.