[issue13390] Hunt memory allocations in addition to reference leaks
Meador Inge
report at bugs.python.org
Wed Dec 7 00:41:43 CET 2011
Meador Inge <meadori at gmail.com> added the comment:
I looked at the 'ctypes' "leak" a bit. I haven't determined exactly what
is going on, but the leak has something to do with a change in the patch that
runs 'dash_R_cleanup' twice instead of once. The new behavior can be reduced
to something like:
import sys, ctypes, gc
ctypes._reset_cache()
gc.collect()
for i in range(0, 5):
ctypes._reset_cache()
gc.collect()
print("%d: start refs = %s" % (i, sys.gettotalrefcount()))
proto = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_char))
ctypes._reset_cache()
gc.collect()
print("%d: after refs = %s" % (i, sys.gettotalrefcount()))
which prints:
0: start refs = 71395
0: after refs = 71462
1: start refs = 71463
1: after refs = 71493
2: start refs = 71465
2: after refs = 71494
3: start refs = 71465
3: after refs = 71494
4: start refs = 71465
4: after refs = 71494
Note that the start/after refs converge on a difference of 29 references.
The existing version 'regrtest.py' does something like:
import sys, ctypes, gc
ctypes._reset_cache()
gc.collect()
for i in range(0, 5):
print("%d: start refs = %s" % (i, sys.gettotalrefcount()))
proto = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_char))
ctypes._reset_cache()
gc.collect()
print("%d: after refs = %s" % (i, sys.gettotalrefcount()))
which prints:
0: start refs = 71391
0: after refs = 71458
1: start refs = 71458
1: after refs = 71489
2: start refs = 71489
2: after refs = 71490
3: start refs = 71490
3: after refs = 71490
4: start refs = 71490
4: after refs = 71490
This one converges on a difference of zero.
So, I am not sure whether there really is a leak, if this is just
a very senstive area of 'regrtest.py', or something else I am missing.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue13390>
_______________________________________
More information about the Python-bugs-list
mailing list