# http://python.org/sf/1303614 class Strange(object): def __hash__(self): return hash('hello') def __eq__(self, other): x.__dict__ = {} # the old x.__dict__ is deallocated return False class X(object): pass if __name__ == '__main__': v = 123 x = X() x.__dict__ = {Strange(): 42, 'hello': v+456} x.hello # segfault: the above dict is accessed after it's deallocated