PageRenderTime 323ms CodeModel.GetById 181ms app.highlight 3ms RepoModel.GetById 138ms app.codeStats 0ms

/Lib/test/crashers/borrowed_ref_2.py

http://unladen-swallow.googlecode.com/
Python | 38 lines | 24 code | 8 blank | 6 comment | 1 complexity | 488e09f4a8f771ea4b0fba4c1db7da6e MD5 | raw file
 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