# Program received signal SIGSEGV, Segmentation fault. # 0x080f2c17 in PyObject_GetAttr (v=, name='match') at Objects/object.c:872 # 872 if (tp->tp_getattro != NULL) # (gdb) bt # #0 0x080f2c17 in PyObject_GetAttr (v=, name='match') at Objects/object.c:872 # #1 0x080f2b42 in _PyObject_GetAttrId (v=, name=0x8328354 ) at Objects/object.c:835 # #2 0x0809c3a6 in _PyObject_CallMethodId (o=, name=0x8328354 , format=0x829552c "O") # at Objects/abstract.c:2215 # #3 0x0817e48b in check_matched (obj=, arg='c') at Python/_warnings.c:28 # #4 0x0817e88b in get_filter (category=, text='', lineno=4, module='c', item=0xbfa87c88) # (gdb) frame 4 # #4 0x0817e88b in get_filter (category=, text='', lineno=4, module='c', item=0xbfa87c88) # at Python/_warnings.c:152 # 152 good_mod = check_matched(mod, module); # (gdb) print *mod # $1 = {_ob_next = 0xdbdbdbdb, _ob_prev = 0xdbdbdbdb, ob_refcnt = -606348325, ob_type = 0xdbdbdbdb} # # "mod" object is deleted in "match" method. Use after free. # import warnings as w class X: def match(self, a): global L print("match") L[:] = [] def __del__(self): print("__del__") L = [(X(),X(),X(),X(),0) for i in range(2)] w.filters = L w.warn_explicit(Warning(),"b","c",4)