gallium: hook up reference count debugging code
authorLuca Barbieri <luca@luca-barbieri.com>
Tue, 17 Aug 2010 22:41:10 +0000 (00:41 +0200)
committerLuca Barbieri <luca@luca-barbieri.com>
Fri, 20 Aug 2010 16:18:28 +0000 (18:18 +0200)
commitc806a40277bb5d2dab07908ef79078b0fcc56336
tree6c870219c09990a53eeac7d39ae34abbc65f9afa
parent2ff13fe89e8f0b372512f16bb64d5a703e9bf891
gallium: hook up reference count debugging code

This commit adds the ability to produce a log file containing all
reference count changes, and object creation/destruction, on Gallium
objects.

The data allows to answer these crucial questions:
1. This app is exhausting all my memory due to a resource leak: where
   is the bug?
2. Which resources is this app using at a given moment? Which parts of
   the code created them?
3. What kinds of resources does this app use?
4. How fast does this app create and destroy resources? Which parts of
   the code create resources fast?

The output is compatible with the one produced by the similar facility
in Mozilla Firefox, allowing to use Mozilla's tools to analyze the data.

To get the log file:
export GALLIUM_REFCNT_LOG=<file>

To get function names and source lines in the log file:
tools/addr2line.sh <file>

To process the log file, see:
http://www.mozilla.org/performance/refcnt-balancer.html
src/gallium/auxiliary/util/u_inlines.h