[Zope-dev] recursion depth exceeded

Terry Kerr terry@bizarsoftware.com.au
Wed, 06 Mar 2002 13:53:00 +1100


Hi,

I am running a fairly high traffic Zope server where people occassionly ftp 
files in and out of the server.

Approximately once per week, the zope process will go to using 99%CPU and stay 
like that untill it is restarted.   The error shown in the stupid log file is:

2002-03-06T01:22:41 ERROR(200) ZServer uncaptured python exception, closing 
channel <zope_ftp_channel connected 202.129.84.50:64011 at 8ac4ecc> 
(exceptions.RuntimeError:maximum recursion depth exceeded 
[/usr/local/lib/python2.1/asyncore.py|poll|104] 
[/usr/local/lib/python2.1/asyncore.py|handle_write_event|393] 
[/usr/local/zope/Zope-2.4.3-src/ZServer/medusa/asynchat.py|handle_write|147] 
[/usr/local/zope/Zope-2.4.3-src/ZServer/medusa/asynchat.py|initiate_send|209] 
[/usr/local/zope/Zope-2.4.3-src/ZServer/medusa/asynchat.py|refill_buffer|190] 
[/usr/local/zope/Zope-2.4.3-src/ZServer/medusa/ftp_server.py|close|179] 
[/usr/local/zope/Zope-2.4.3-src/ZServer/medusa/ftp_server.py|close|903] 
[/usr/local/lib/python2.1/asyncore.py|close|355] 
[/usr/local/lib/python2.1/asyncore.py|del_channel|241] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361] 
[/usr/local/lib/python2.1/asyncore.py|__getattr__|361]  .... and so on...


Line 361 in asyncore.py is:

358    # cheap inheritance, used to pass all other attribute
359    # references to the underlying socket object.
360    def __getattr__ (self, attr):
361        return getattr (self.socket, attr)


It hints to me that it is some sort of ftp server error that is causing the 
problem.  I have looked into it, but most of it is over my head and I was hoping 
somebody could help.  I have tried to reproduce the error, but without success.

The server is:
FreeBSD4.3
Zope 2.4.3 (from src)
python 2.1.2

terry


-- 
Terry Kerr (terry@bizarsoftware.com.au)
Chief Technical Officer
Bizar Software Pty Ltd (www.bizarsoftware.com.au)
+61 3 9530 9182