[Python-Dev] refleaks on trunk

Amaury Forgeot d'Arc amauryfa at gmail.com
Tue Apr 1 09:37:12 CEST 2008


On Tue, Apr 1, 2008 at 6:34 AM, Neal Norwitz <nnorwitz at gmail.com> wrote:
> test_io is the only leaky test on trunk that I know of.  I narrowed
>  down the leaks to the code below.
>
>  It's possible there are other leaks in test_io.
>
>  n
>  --
>  import sys, gc
>  import _fileio, io
>
>  class FileIO(_fileio._FileIO, io.RawIOBase):
>     def close(self):
>         io.RawIOBase.close(self)
>
>  def main():
>   class MyFileIO(FileIO): pass
>   f = MyFileIO('tt-test', "w")
>   f.close()
>
>  for i in range(10):
>   main()
>   print(gc.collect())
>   print(sys.gettotalrefcount())

The problem is that the MyFileIO class is registered in
io.RawIOBase._abc_cache, and never freed.
This is a problem with ABCs: _abc_cache should be changed to a
WeakSet, like python3.0 did.

I filed http://bugs.python.org/issue2521 about this problem.

-- 
Amaury Forgeot d'Arc


More information about the Python-Dev mailing list