Eugene Kapun <abacabadabac...@gmail.com> added the comment: I've found more unsafe code in Objects/setobject.c. This code makes Python 3.1.2 segfault by using a bug in function set_merge:
class bad: def __eq__(self, other): if be_bad: set2.clear() raise Exception return self is other def __hash__(self): return 0 be_bad = False set1 = {bad()} set2 = {bad() for i in range(2000)} be_bad = True set1.update(set2) Function set_symmetric_difference_update has a similar bug. Another bug in set_symmetric_difference_update: class bad: def __init__(self): print("Creating", id(self)) def __del__(self): print("Deleting", id(self)) def __eq__(self, other): print("Comparing", id(self), "and", id(other)) if be_bad: dict2.clear() return self is other def __hash__(self): return 0 be_bad = False set1 = {bad()} dict2 = {bad(): None} be_bad = True set1.symmetric_difference_update(dict2) ---------- title: set_lookkey is unsafe -> Objects/setobject.c contains unsafe code _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue8420> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com