audk/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers
..
README.txt
__init__.py
test_ctypes.py
test_dictself.py
test_gestalt.py
test_selftype.py

README.txt

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This directory contains test cases that are known to leak references.

The idea is that you can import these modules while in the interpreter

and call the leak function repeatedly.  This will only be helpful if

the interpreter was built in debug mode.  If the total ref count

doesn't increase, the bug has been fixed and the file should be removed

from the repository.



Note:  be careful to check for cyclic garbage.  Sometimes it may be helpful

to define the leak function like:



def leak():

    def inner_leak():

        # this is the function that leaks, but also creates cycles

    inner_leak()

    gc.collect() ; gc.collect() ; gc.collect()



Here's an example interpreter session for test_gestalt which still leaks:



>>> from test.leakers.test_gestalt import leak

[24275 refs]

>>> leak()

[28936 refs]

>>> leak()

[28938 refs]

>>> leak()

[28940 refs]

>>> 



Once the leak is fixed, the test case should be moved into an appropriate

test (even if it was originally from the test suite).  This ensures the

regression doesn't happen again.  And if it does, it should be easier

to track down.