AppPkg/Applications/Python: Add Python 2.7.2 sources since the release of Python 2.7.3 made them unavailable from the python.org web site.
These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
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.
|
@@ -0,0 +1,16 @@
|
||||
|
||||
# Taken from Lib/ctypes/test/test_keeprefs.py, PointerToStructure.test().
|
||||
# When this leak is fixed, remember to remove from Misc/build.sh LEAKY_TESTS.
|
||||
|
||||
from ctypes import Structure, c_int, POINTER
|
||||
import gc
|
||||
|
||||
def leak_inner():
|
||||
class POINT(Structure):
|
||||
_fields_ = [("x", c_int)]
|
||||
class RECT(Structure):
|
||||
_fields_ = [("a", POINTER(POINT))]
|
||||
|
||||
def leak():
|
||||
leak_inner()
|
||||
gc.collect()
|
@@ -0,0 +1,12 @@
|
||||
'''Test case for "self.__dict__ = self" circular reference bug (#1469629)'''
|
||||
|
||||
import gc
|
||||
|
||||
class LeakyDict(dict):
|
||||
pass
|
||||
|
||||
def leak():
|
||||
ld = LeakyDict()
|
||||
ld.__dict__ = ld
|
||||
del ld
|
||||
gc.collect(); gc.collect(); gc.collect()
|
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
if sys.platform != 'darwin':
|
||||
raise ValueError, "This test only leaks on Mac OS X"
|
||||
|
||||
def leak():
|
||||
# taken from platform._mac_ver_lookup()
|
||||
from gestalt import gestalt
|
||||
import MacOS
|
||||
|
||||
try:
|
||||
gestalt('sysu')
|
||||
except MacOS.Error:
|
||||
pass
|
@@ -0,0 +1,13 @@
|
||||
# Reference cycles involving only the ob_type field are rather uncommon
|
||||
# but possible. Inspired by SF bug 1469629.
|
||||
|
||||
import gc
|
||||
|
||||
def leak():
|
||||
class T(type):
|
||||
pass
|
||||
class U(type):
|
||||
__metaclass__ = T
|
||||
U.__class__ = U
|
||||
del U
|
||||
gc.collect(); gc.collect(); gc.collect()
|
Reference in New Issue
Block a user