Meador Inge <mead...@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 <rep...@bugs.python.org> <http://bugs.python.org/issue13390> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com