• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""
2_PyType_Lookup() returns a borrowed reference.
3This attacks PyObject_GenericSetAttr().
4
5NB. on my machine this crashes in 2.5 debug but not release.
6"""
7
8class A(object):
9    pass
10
11class B(object):
12    def __del__(self):
13        print "hi"
14        del C.d
15
16class D(object):
17    def __set__(self, obj, value):
18        self.hello = 42
19
20class C(object):
21    d = D()
22
23    def g():
24        pass
25
26
27c = C()
28a = A()
29a.cycle = a
30a.other = B()
31
32lst = [None] * 1000000
33i = 0
34del a
35while 1:
36    c.d = 42         # segfaults in PyMethod_New(im_func=D.__set__, im_self=d)
37    lst[i] = c.g     # consume the free list of instancemethod objects
38    i += 1
39