"""

_PyType_Lookup() returns a borrowed reference.

This attacks PyObject_GenericSetAttr().



NB. on my machine this crashes in 2.5 debug but not release.

"""



class A(object):

    pass



class B(object):

    def __del__(self):

        print "hi"

        del C.d



class D(object):

    def __set__(self, obj, value):

        self.hello = 42



class C(object):

    d = D()



    def g():

        pass





c = C()

a = A()

a.cycle = a

a.other = B()



lst = [None] * 1000000

i = 0

del a

while 1:

    c.d = 42         # segfaults in PyMethod_New(im_func=D.__set__, im_self=d)

    lst[i] = c.g     # consume the free list of instancemethod objects

    i += 1

