Original followup by esrever_otua: """ Running copy.deepcopy against such an object fails as well for the same reason (Maximum recursion depth exceeded). >>> y = deepcopy(x) 2007-09-25 12:25:10 ERROR ZODB.Connection Couldn't load state for 0x209fe1 Traceback (most recent call last): File "/u01/app/zope-2.8.7/lib/python/ZODB/Connection.py", line 704, in setstate self._setstate(obj) File "/u01/app/zope-2.8.7/lib/python/ZODB/Connection.py", line 758, in _setstate self._reader.setGhostState(obj, p) File "/u01/app/zope-2.8.7/lib/python/ZODB/serialize.py", line 495, in setGhostState state = self.getState(pickle) File "/u01/app/zope-2.8.7/lib/python/ZODB/serialize.py", line 488, in getState return unpickler.load() File "/u01/app/zope-2.8.7/lib/python/ZODB/serialize.py", line 436, in _persistent_load return self._conn.get(oid) File "/u01/app/zope-2.8.7/lib/python/ZODB/Connection.py", line 207, in get p, serial = self._storage.load(oid, self._version) File "/u01/app/zope-2.8.7/lib/python/ZEO/ClientStorage.py", line 746, in load return self.loadEx(oid, version)[:2] File "/u01/app/zope-2.8.7/lib/python/ZEO/ClientStorage.py", line 769, in loadEx data, tid, ver = self._server.loadEx(oid, version) File "/u01/app/zope-2.8.7/lib/python/ZEO/ServerStub.py", line 192, in loadEx return self.rpc.call("loadEx", oid, version) File "/u01/app/zope-2.8.7/lib/python/ZEO/zrpc/connection.py", line 531, in call r_flags, r_args = self.wait(msgid) File "/u01/app/zope-2.8.7/lib/python/ZEO/zrpc/connection.py", line 638, in wait asyncore.poll(delay, self._singleton) File "/u01/app/python/lib/python2.3/asyncore.py", line 119, in poll read(obj) File "/u01/app/python/lib/python2.3/asyncore.py", line 73, in read obj.handle_error() File "/u01/app/zope-2.8.7/lib/python/ZEO/zrpc/connection.py", line 453, in handle_error level=logging.ERROR, exc_info=True) File "/u01/app/zope-2.8.7/lib/python/ZEO/zrpc/connection.py", line 327, in log self.logger.log(level, self.log_label + message, exc_info=exc_info) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 959, in log apply(self._log, (level, msg, args), kwargs) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 994, in _log self.handle(record) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 1004, in handle self.callHandlers(record) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 1037, in callHandlers hdlr.handle(record) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 588, in handle rv = self.filter(record) RuntimeError: maximum recursion depth exceeded Traceback (most recent call last): File "", line 1, in ? File "/u01/app/python/lib/python2.3/copy.py", line 222, in deepcopy y = _reconstruct(x, rv, 1, memo) File "/u01/app/python/lib/python2.3/copy.py", line 369, in _reconstruct state = deepcopy(state, memo) File "/u01/app/python/lib/python2.3/copy.py", line 192, in deepcopy [ ... Snipped many, many duplicate lines of recursive traceback ...] y = copier(x, memo) File "/u01/app/python/lib/python2.3/copy.py", line 286, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/u01/app/python/lib/python2.3/copy.py", line 209, in deepcopy reductor = getattr(x, "__reduce_ex__", None) File "/u01/app/zope-2.8.7/lib/python/ZODB/Connection.py", line 704, in setstate self._setstate(obj) File "/u01/app/zope-2.8.7/lib/python/ZODB/Connection.py", line 758, in _setstate self._reader.setGhostState(obj, p) File "/u01/app/zope-2.8.7/lib/python/ZODB/serialize.py", line 495, in setGhostState state = self.getState(pickle) File "/u01/app/zope-2.8.7/lib/python/ZODB/serialize.py", line 488, in getState return unpickler.load() File "/u01/app/zope-2.8.7/lib/python/ZODB/serialize.py", line 436, in _persistent_load return self._conn.get(oid) File "/u01/app/zope-2.8.7/lib/python/ZODB/Connection.py", line 207, in get p, serial = self._storage.load(oid, self._version) File "/u01/app/zope-2.8.7/lib/python/ZEO/ClientStorage.py", line 746, in load return self.loadEx(oid, version)[:2] File "/u01/app/zope-2.8.7/lib/python/ZEO/ClientStorage.py", line 769, in loadEx data, tid, ver = self._server.loadEx(oid, version) File "/u01/app/zope-2.8.7/lib/python/ZEO/ServerStub.py", line 192, in loadEx return self.rpc.call("loadEx", oid, version) File "/u01/app/zope-2.8.7/lib/python/ZEO/zrpc/connection.py", line 531, in call r_flags, r_args = self.wait(msgid) File "/u01/app/zope-2.8.7/lib/python/ZEO/zrpc/connection.py", line 638, in wait asyncore.poll(delay, self._singleton) File "/u01/app/python/lib/python2.3/asyncore.py", line 119, in poll read(obj) File "/u01/app/python/lib/python2.3/asyncore.py", line 73, in read obj.handle_error() File "/u01/app/zope-2.8.7/lib/python/ZEO/zrpc/connection.py", line 453, in handle_error level=logging.ERROR, exc_info=True) File "/u01/app/zope-2.8.7/lib/python/ZEO/zrpc/connection.py", line 327, in log self.logger.log(level, self.log_label + message, exc_info=exc_info) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 959, in log apply(self._log, (level, msg, args), kwargs) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 994, in _log self.handle(record) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 1004, in handle self.callHandlers(record) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 1037, in callHandlers hdlr.handle(record) File "/u01/app/python/lib/python2.3/logging/__init__.py", line 588, in handle rv = self.filter(record) RuntimeError: maximum recursion depth exceeded """