[Python-Dev] interning
Guido van Rossum
guido@python.org
Sat, 10 Aug 2002 19:58:21 -0400
> > $ ./python ../Lib/test/regrtest.py -l test_gc
> > test_gc
> > Warning: test created 20 uncollectable object(s).
> > 1 test OK.
[Neil S]
> Something weird is going on. This patch fixes test_finalizer_newclass:
>
> --- Lib/test/test_gc.py 9 Aug 2002 17:38:16 -0000 1.19
> +++ Lib/test/test_gc.py 10 Aug 2002 18:33:47 -0000
> @@ -147,6 +147,8 @@
> else:
> raise TestFailed, "didn't find obj in garbage (finalizer)"
> gc.garbage.remove(obj)
> + del A, B, obj
> + gc.collect() # finds 13 objects!
>
>
> I guess there is a reference cycle there that wasn't there before.
> Could it have something to do with tp_del?
I don't think so -- a Python of a month old had the same warnings when
I added these tests that use new-style class.
It's much simpler than this: new-style classes have cyclical
references to themselves that must be collected. It so happened that
the saveall test was fooled by these. Tim checked in a fix that
prevents this.
--Guido van Rossum (home page: http://www.python.org/~guido/)