[Python-Dev] Bizarre new test failure

Tim Peters tim.one@comcast.net
Fri, 07 Jun 2002 12:57:15 -0400


[Neil Schemenauer]
> Attached is a little program that triggers the behavior.  The CVS change
> I finally narrowed in on was the addition of similar code to test_descr.

Ouch!
> A reference counting bug is still by best guess.  Guido?

Here's the code:

import gc
gc.disable()

def main():
    # must be inside function scope
    class A(object):
        def __init__(self):
            self.__super = super(A, self)

    A()

main()
print 'first collect', gc.collect()
print 'second collect', gc.collect()


The first collect is getting these:

[<__main__.A object at 0x0066A090>,
 <super: <class 'A'>, <A object>>,
 {'_A__super': <super: <class 'A'>, <A object>>}
]


The second is getting these:

[<class '__main__.A'>,
 {'__dict__': <attribute '__dict__' of 'A' objects>,
 '__module__': '__main__',
 '__weakref__': <member '__weakref__' of 'A' objects>,
 '__doc__': None,
 '__init__': <function __init__ at 0x00674C70>},
 (<class '__main__.A'>, <type 'object'>), (<type 'object'>,),
 <attribute '__dict__' of 'A' objects>,
 <member '__weakref__' of 'A' objects>,
 <function __init__ at 0x00674C70>,
 (<cell at 0x0066A110: type object at 0x007687B0>,),
 <cell at 0x0066A110: type object at 0x007687B0>
]

For some reason, the cell nags me.  Perhaps because of your "must be inside
function scope" comment, and that cells are poorly understood by me <wink>.