# Program received signal SIGSEGV, Segmentation fault. # 0x4068565c in xmlparser_setevents (self=0x4064b13c, args=([], [])) # at /home/p/Python-3.4.1/Modules/_elementtree.c:3562 # 3562 if (PyUnicode_Check(event_name_obj)) { # (gdb) print *event_name_obj # $6 = {_ob_next = 0xdbdbdbdb, _ob_prev = 0xdbdbdbdb, ob_refcnt = -606348325, ob_type = 0xdbdbdbdb} # # # "event_name_obj" is deleted inside a custom destructor. Use after free. import xml.etree.ElementTree as et class S1(str): def __del__(self): global parser print("__del__ 1") parser._setevents([], [S3("end")]) class S2(str): def __del__(self): print("__del__ 2") class S3(str): def __del__(self): global L print("__del__ 3") del L[1] class X: pass L = [S2("end"), X()] parser = et.XMLParser(target=et.TreeBuilder()) parser._setevents([], [S1("end")]) parser._setevents([], L)