% python2.4 ~/tmp/picklecycle.py (, '0x81e790c') memoized 0x81e790c (, '0x81e846c') <{'b': <__main__.B instance at 0x81e78ec>, 'name': 'moe'}> memoized 0x81e846c (, '0x8181440') memoized 0x8181440 (, '0x81e78ec') memoized 0x81e78ec (, '0x81e83e4') <{'a': <__main__.A instance at 0x81e790c>, 'name': 'manny'}> memoized 0x81e83e4 (, '0x8181360') memoized 0x8181360 (, '0x816a880') memoized 0x816a880 (, '0x81c5420') memoized 0x81c5420 (, '0x81c5400') memoized 0x81c5400 % python2.4 ~/tmp/picklecycle.py (, '0x822fefc') <> memoized 0x822fefc (, '0x81c5400') memoized 0x81c5400 (, '0x823256c') <> memoized 0x823256c (, '0x81c5420') memoized 0x81c5420 (, '0x81e7aac') <('manny',)> memoized 0x81e7aac (, '0x81e796c') memoized 0x81e796c (, '0x81e82d4') <{'a': <__main__.A object at 0x81e79ac>, 'name': 'manny'}> memoized 0x81e82d4 (, '0x8181360') memoized 0x8181360 (, '0x81c494c') <('moe', <__main__.B object at 0x81e796c>)> memoized 0x81c494c (, '0x81e79ac') memoized 0x81e79ac (, '0x81e846c') <{'b': <__main__.B object at 0x81e796c>, 'name': 'moe'}> memoized 0x81e846c (, '0x8181440') memoized 0x8181440 (, '0x816a880') memoized 0x816a880 (, '0x81c47ec') <('moe', <__main__.B object at 0x81e796c>)> memoized 0x81c47ec (, '0x81e79ac') Traceback (most recent call last): File "/home/titan/skipm/tmp/picklecycle.py", line 32, in ? pickler.dump(a) File "/home/titan/skipm/local/lib/python2.4/pickle.py", line 231, in dump self.save(obj) File "/home/titan/skipm/local/lib/python2.4/pickle.py", line 345, in save self.save_reduce(obj=obj, *rv) File "/home/titan/skipm/local/lib/python2.4/pickle.py", line 426, in save_reduce self.memoize(obj) File "/home/titan/skipm/local/lib/python2.4/pickle.py", line 257, in memoize assert id(obj) not in self.memo AssertionError