Comment 11 for bug 143899

Revision history for this message
Andreas Jung (ajung) wrote :

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 "<stdin>", 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
"""