100% CPU utilization in Zope after LDAP connection timeout

Matthew X. Economou xenophon at irtnog.org
Wed Mar 16 23:21:14 CET 2005


I think there's a problem with python-ldap on FreeBSD/alpha that
causes a thread with an LDAP connection to get stuck in a CLOSE_WAIT
state.  I am unsure how to further troubleshoot this problem.

After running properly for about an hour or two (including correctly
authenticating users), my Zope instance stops responding to HTTP
requests and begins consuming all available CPU time.  A back-trace in
GDB showed Zope spinning around a call to select(2) within the
OpenLDAP client library.  A packet capture of all of the LDAP traffic
generated by the Zope instance showed a FIN/ACK from Zope, the
corresponding ACK from the server, a FIN/ACK from the server, but
never the corresponding ACK from Zope; these LDAP connections persist
indefinitely in a CLOSE_WAIT state.  Using DeadlockDebugger and
threadtrace, I generated Python traceback dumps of the threads; these
are included below.

I see the same problem (LDAP connections stuck in CLOSE_WAIT) both
under Python 2.3 and Python 2.4.  I upgraded Python hoping that
improvements made to its threading implementation would correct what
appears to be a deadlock or race condition within python-ldap or its
caller.  Python 2.4 does seem to be better able to handle the
aftereffects of the race: Zope no longer becomes completely
unresponsive (e.g. the top-level ZMI works).

Other programs on my web server that use the OpenLDAP client libraries
are not exhibiting this behavior, e.g. Samba 3.0.11 (winbindd).

Specs:

Digital AlphaServer 2000 5/250
FreeBSD/alpha 5.3-RELEASE
Python 2.4
Zope 2.7.4
Plone 2.0.5

Threads traceback dump at 2005-03-15 16:12:55:

Thread 4871774208 (GET
/VirtualHostBase/http/web.irtnog.org:80/irtnog/VirtualHostRoot/Members/x
enophon/freebsd/install):
  File
"/usr/local/www/Zope/lib/python/ZServer/PubCore/ZServerPublisher.py",
line 23, in __init__
    response=response)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 384,
in publish_module
    environ, debug, request, response)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 175,
in publish_module_standard
    response = publish(request, module_name, after_list, debug=debug)
  File
"/usr/local/www/zope/Products/PlacelessTranslationService/PatchStringIO.
py", line 51, in new_publish
    x = Publish.old_publish(request, module_name, after_list, debug)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 101,
in publish
    request, bind=1)
  File "/usr/local/www/Zope/lib/python/ZPublisher/mapply.py", line 88,
in mapply
    if debug is not None: return debug(object,args,context)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 39,
in call_object
    result=apply(object,args) # Type s<cr> to step into published
object.
  File "/usr/local/www/zope/Products/CMFCore/PortalContent.py", line
116, in __call__
    return view()
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 306, in __call__
    return self._bindAndExec(args, kw, None)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 343, in _bindAndExec
    return self._exec(bound_data, args, kw)
  File "/usr/local/www/zope/Products/CMFCore/FSPageTemplate.py", line
191, in _exec
    result = self.pt_render(extra_context=bound_names)
  File "/usr/local/www/zope/Products/CMFCore/FSPageTemplate.py", line
124, in pt_render
    result = FSPageTemplate.inheritedAttribute('pt_render')(
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/PageTemplate.py",
line 96, in pt_render
    tal=not source, strictinsert=0)()
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 190,
in __call__
    self.interpret(self.program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 671,
in do_useMacro
    self.interpret(macro)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 409,
in do_optTag_tal
    self.do_optTag(stuff)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 394,
in do_optTag
    return self.no_tag(start, program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 389,
in no_tag
    self.interpret(program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 671,
in do_useMacro
    self.interpret(macro)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 460,
in do_setLocal_tal
    self.engine.setLocal(name, self.engine.evaluateValue(expr))
  File "/usr/local/www/Zope/lib/python/Products/PageTemplates/TALES.py",
line 221, in evaluate
    return expression(self)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 201, in __call__
    return self._eval(econtext)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 196, in _eval
    return render(ob, econtext.vars)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 95, in render
    ob = call_with_ns(ob.__render_with_namespace__, ns)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/ZRPythonExpr.py",
line 73, in call_with_ns
    return f(td)
  File "/usr/local/www/zope/Products/CMFCore/FSPythonScript.py", line
99, in __render_with_namespace__
    return Script.__render_with_namespace__(self, namespace)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 320, in __render_with_namespace__
    return self._bindAndExec((), namevals, namespace)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 343, in _bindAndExec
    return self._exec(bound_data, args, kw)
  File "/usr/local/www/zope/Products/CMFCore/FSPythonScript.py", line
160, in _exec
    result = apply(f, args, kw)
  File "Script (Python)", line 30, in listMetaTags
  File "/usr/local/www/zope/Products/CMFDefault/DublinCore.py", line
106, in Creator
    owner = self.getOwner()
  File "/usr/local/www/Zope/lib/python/AccessControl/Owned.py", line 94,
in getOwner
    user = udb.getUserById(oid, None)
  File
"/usr/local/www/zope/Products/GroupUserFolder/GroupUserFolder.py", line
336, in getUserById
    ret = self.getUser(id, __force_group_id__ = 1)
  File
"/usr/local/www/zope/Products/GroupUserFolder/GroupUserFolder.py", line
317, in getUser
    u = src.getUser(name)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
783, in getUser
    user = self.getUserByAttr(self._login_attr, name, pwd, cache=1)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
714, in getUserByAttr
    user_roles, user_dn, user_attrs = self._lookupuserbyattr(
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
305, in _lookupuserbyattr
    , bind_pwd=bind_pwd
  File "/var/www/zope/Products/LDAPUserFolder/LDAPDelegate.py", line
318, in search
    connection = self.connect(bind_dn=bind_dn, bind_pwd=bind_pwd)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPDelegate.py", line
195, in connect
    conn.simple_bind_s(user_dn, user_pwd)
  File "/var/www/zope/Products/LDAPUserFolder/SharedResource.py", line
110, in __call__
    self._lock.acquire()
  File "/usr/local/lib/python2.4/threading.py", line 100, in acquire
    rc = self.__block.acquire(blocking)

Thread 4913403904 (GET
/VirtualHostBase/http/web.irtnog.org:80/irtnog/VirtualHostRoot/Members/x
enophon/freebsd/winbind):
  File
"/usr/local/www/Zope/lib/python/ZServer/PubCore/ZServerPublisher.py",
line 23, in __init__
    response=response)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 384,
in publish_module
    environ, debug, request, response)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 175,
in publish_module_standard
    response = publish(request, module_name, after_list, debug=debug)
  File
"/usr/local/www/zope/Products/PlacelessTranslationService/PatchStringIO.
py", line 51, in new_publish
    x = Publish.old_publish(request, module_name, after_list, debug)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 101,
in publish
    request, bind=1)
  File "/usr/local/www/Zope/lib/python/ZPublisher/mapply.py", line 88,
in mapply
    if debug is not None: return debug(object,args,context)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 39,
in call_object
    result=apply(object,args) # Type s<cr> to step into published
object.
  File "/usr/local/www/zope/Products/CMFCore/PortalContent.py", line
116, in __call__
    return view()
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 306, in __call__
    return self._bindAndExec(args, kw, None)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 343, in _bindAndExec
    return self._exec(bound_data, args, kw)
  File "/usr/local/www/zope/Products/CMFCore/FSPageTemplate.py", line
191, in _exec
    result = self.pt_render(extra_context=bound_names)
  File "/usr/local/www/zope/Products/CMFCore/FSPageTemplate.py", line
124, in pt_render
    result = FSPageTemplate.inheritedAttribute('pt_render')(
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/PageTemplate.py",
line 96, in pt_render
    tal=not source, strictinsert=0)()
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 190,
in __call__
    self.interpret(self.program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 671,
in do_useMacro
    self.interpret(macro)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 409,
in do_optTag_tal
    self.do_optTag(stuff)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 394,
in do_optTag
    return self.no_tag(start, program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 389,
in no_tag
    self.interpret(program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 671,
in do_useMacro
    self.interpret(macro)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 460,
in do_setLocal_tal
    self.engine.setLocal(name, self.engine.evaluateValue(expr))
  File "/usr/local/www/Zope/lib/python/Products/PageTemplates/TALES.py",
line 221, in evaluate
    return expression(self)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 201, in __call__
    return self._eval(econtext)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 196, in _eval
    return render(ob, econtext.vars)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 95, in render
    ob = call_with_ns(ob.__render_with_namespace__, ns)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/ZRPythonExpr.py",
line 73, in call_with_ns
    return f(td)
  File "/usr/local/www/zope/Products/CMFCore/FSPythonScript.py", line
99, in __render_with_namespace__
    return Script.__render_with_namespace__(self, namespace)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 320, in __render_with_namespace__
    return self._bindAndExec((), namevals, namespace)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 343, in _bindAndExec
    return self._exec(bound_data, args, kw)
  File "/usr/local/www/zope/Products/CMFCore/FSPythonScript.py", line
160, in _exec
    result = apply(f, args, kw)
  File "Script (Python)", line 30, in listMetaTags
  File "/usr/local/www/zope/Products/CMFDefault/DublinCore.py", line
106, in Creator
    owner = self.getOwner()
  File "/usr/local/www/Zope/lib/python/AccessControl/Owned.py", line 94,
in getOwner
    user = udb.getUserById(oid, None)
  File
"/usr/local/www/zope/Products/GroupUserFolder/GroupUserFolder.py", line
336, in getUserById
    ret = self.getUser(id, __force_group_id__ = 1)
  File
"/usr/local/www/zope/Products/GroupUserFolder/GroupUserFolder.py", line
317, in getUser
    u = src.getUser(name)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
783, in getUser
    user = self.getUserByAttr(self._login_attr, name, pwd, cache=1)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
714, in getUserByAttr
    user_roles, user_dn, user_attrs = self._lookupuserbyattr(
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
305, in _lookupuserbyattr
    , bind_pwd=bind_pwd
  File "/var/www/zope/Products/LDAPUserFolder/LDAPDelegate.py", line
318, in search
    connection = self.connect(bind_dn=bind_dn, bind_pwd=bind_pwd)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPDelegate.py", line
195, in connect
    conn.simple_bind_s(user_dn, user_pwd)
  File "/var/www/zope/Products/LDAPUserFolder/SharedResource.py", line
112, in __call__
    return self._callable(*args, **kw)
  File "/usr/local/lib/python2.4/site-packages/ldap/ldapobject.py", line
760, in simple_bind_s
    return SimpleLDAPObject.simple_bind_s(self,*args,**kwargs)
  File "/usr/local/lib/python2.4/site-packages/ldap/ldapobject.py", line
175, in simple_bind_s
    msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
  File "/usr/local/lib/python2.4/site-packages/ldap/ldapobject.py", line
169, in simple_bind
    return
self._ldap_call(self._l.simple_bind,who,cred,serverctrls,clientctrls)
  File "/usr/local/lib/python2.4/site-packages/ldap/ldapobject.py", line
91, in _ldap_call
    self._ldap_object_lock.acquire()

Thread 4913401856 (GET
/VirtualHostBase/http/web.irtnog.org:80/irtnog/VirtualHostRoot/Members/x
enophon/freebsd/winbind):
  File
"/usr/local/www/Zope/lib/python/ZServer/PubCore/ZServerPublisher.py",
line 23, in __init__
    response=response)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 384,
in publish_module
    environ, debug, request, response)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 175,
in publish_module_standard
    response = publish(request, module_name, after_list, debug=debug)
  File
"/usr/local/www/zope/Products/PlacelessTranslationService/PatchStringIO.
py", line 51, in new_publish
    x = Publish.old_publish(request, module_name, after_list, debug)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 101,
in publish
    request, bind=1)
  File "/usr/local/www/Zope/lib/python/ZPublisher/mapply.py", line 88,
in mapply
    if debug is not None: return debug(object,args,context)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 39,
in call_object
    result=apply(object,args) # Type s<cr> to step into published
object.
  File "/usr/local/www/zope/Products/CMFCore/PortalContent.py", line
116, in __call__
    return view()
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 306, in __call__
    return self._bindAndExec(args, kw, None)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 343, in _bindAndExec
    return self._exec(bound_data, args, kw)
  File "/usr/local/www/zope/Products/CMFCore/FSPageTemplate.py", line
191, in _exec
    result = self.pt_render(extra_context=bound_names)
  File "/usr/local/www/zope/Products/CMFCore/FSPageTemplate.py", line
124, in pt_render
    result = FSPageTemplate.inheritedAttribute('pt_render')(
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/PageTemplate.py",
line 96, in pt_render
    tal=not source, strictinsert=0)()
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 190,
in __call__
    self.interpret(self.program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 671,
in do_useMacro
    self.interpret(macro)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 409,
in do_optTag_tal
    self.do_optTag(stuff)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 394,
in do_optTag
    return self.no_tag(start, program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 389,
in no_tag
    self.interpret(program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 671,
in do_useMacro
    self.interpret(macro)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 460,
in do_setLocal_tal
    self.engine.setLocal(name, self.engine.evaluateValue(expr))
  File "/usr/local/www/Zope/lib/python/Products/PageTemplates/TALES.py",
line 221, in evaluate
    return expression(self)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 201, in __call__
    return self._eval(econtext)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 196, in _eval
    return render(ob, econtext.vars)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 95, in render
    ob = call_with_ns(ob.__render_with_namespace__, ns)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/ZRPythonExpr.py",
line 73, in call_with_ns
    return f(td)
  File "/usr/local/www/zope/Products/CMFCore/FSPythonScript.py", line
99, in __render_with_namespace__
    return Script.__render_with_namespace__(self, namespace)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 320, in __render_with_namespace__
    return self._bindAndExec((), namevals, namespace)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 343, in _bindAndExec
    return self._exec(bound_data, args, kw)
  File "/usr/local/www/zope/Products/CMFCore/FSPythonScript.py", line
160, in _exec
    result = apply(f, args, kw)
  File "Script (Python)", line 30, in listMetaTags
  File "/usr/local/www/zope/Products/CMFDefault/DublinCore.py", line
106, in Creator
    owner = self.getOwner()
  File "/usr/local/www/Zope/lib/python/AccessControl/Owned.py", line 94,
in getOwner
    user = udb.getUserById(oid, None)
  File
"/usr/local/www/zope/Products/GroupUserFolder/GroupUserFolder.py", line
336, in getUserById
    ret = self.getUser(id, __force_group_id__ = 1)
  File
"/usr/local/www/zope/Products/GroupUserFolder/GroupUserFolder.py", line
317, in getUser
    u = src.getUser(name)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
783, in getUser
    user = self.getUserByAttr(self._login_attr, name, pwd, cache=1)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
714, in getUserByAttr
    user_roles, user_dn, user_attrs = self._lookupuserbyattr(
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
305, in _lookupuserbyattr
    , bind_pwd=bind_pwd
  File "/var/www/zope/Products/LDAPUserFolder/LDAPDelegate.py", line
318, in search
    connection = self.connect(bind_dn=bind_dn, bind_pwd=bind_pwd)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPDelegate.py", line
219, in connect
    , op_timeout=getter('op_timeout')
  File "/var/www/zope/Products/LDAPUserFolder/LDAPDelegate.py", line
292, in _connect
    connection.simple_bind_s(user_dn, user_pwd)
  File "/usr/local/lib/python2.4/site-packages/ldap/ldapobject.py", line
760, in simple_bind_s
    return SimpleLDAPObject.simple_bind_s(self,*args,**kwargs)
  File "/usr/local/lib/python2.4/site-packages/ldap/ldapobject.py", line
176, in simple_bind_s
    self.result(msgid,all=1,timeout=self.timeout)
  File "/usr/local/lib/python2.4/site-packages/ldap/ldapobject.py", line
399, in result
    res_type,res_data,res_msgid = self.result2(msgid,all,timeout)
  File "/usr/local/lib/python2.4/site-packages/ldap/ldapobject.py", line
405, in result2
    return self._ldap_call(self._l.result2,msgid,all,timeout)
  File "/usr/local/lib/python2.4/site-packages/ldap/ldapobject.py", line
94, in _ldap_call
    result = func(*args,**kwargs)

Thread 4913399808 (GET
/VirtualHostBase/http/web.irtnog.org:80/irtnog/VirtualHostRoot/Members/x
enophon/freebsd/install):
  File
"/usr/local/www/Zope/lib/python/ZServer/PubCore/ZServerPublisher.py",
line 23, in __init__
    response=response)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 384,
in publish_module
    environ, debug, request, response)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 175,
in publish_module_standard
    response = publish(request, module_name, after_list, debug=debug)
  File
"/usr/local/www/zope/Products/PlacelessTranslationService/PatchStringIO.
py", line 51, in new_publish
    x = Publish.old_publish(request, module_name, after_list, debug)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 101,
in publish
    request, bind=1)
  File "/usr/local/www/Zope/lib/python/ZPublisher/mapply.py", line 88,
in mapply
    if debug is not None: return debug(object,args,context)
  File "/usr/local/www/Zope/lib/python/ZPublisher/Publish.py", line 39,
in call_object
    result=apply(object,args) # Type s<cr> to step into published
object.
  File "/usr/local/www/zope/Products/CMFCore/PortalContent.py", line
116, in __call__
    return view()
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 306, in __call__
    return self._bindAndExec(args, kw, None)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 343, in _bindAndExec
    return self._exec(bound_data, args, kw)
  File "/usr/local/www/zope/Products/CMFCore/FSPageTemplate.py", line
191, in _exec
    result = self.pt_render(extra_context=bound_names)
  File "/usr/local/www/zope/Products/CMFCore/FSPageTemplate.py", line
124, in pt_render
    result = FSPageTemplate.inheritedAttribute('pt_render')(
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/PageTemplate.py",
line 96, in pt_render
    tal=not source, strictinsert=0)()
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 190,
in __call__
    self.interpret(self.program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 671,
in do_useMacro
    self.interpret(macro)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 409,
in do_optTag_tal
    self.do_optTag(stuff)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 394,
in do_optTag
    return self.no_tag(start, program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 389,
in no_tag
    self.interpret(program)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 671,
in do_useMacro
    self.interpret(macro)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 234,
in interpret
    handlers[opcode](self, args)
  File "/usr/local/www/Zope/lib/python/TAL/TALInterpreter.py", line 460,
in do_setLocal_tal
    self.engine.setLocal(name, self.engine.evaluateValue(expr))
  File "/usr/local/www/Zope/lib/python/Products/PageTemplates/TALES.py",
line 221, in evaluate
    return expression(self)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 201, in __call__
    return self._eval(econtext)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 196, in _eval
    return render(ob, econtext.vars)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/Expressions.py",
line 95, in render
    ob = call_with_ns(ob.__render_with_namespace__, ns)
  File
"/usr/local/www/Zope/lib/python/Products/PageTemplates/ZRPythonExpr.py",
line 73, in call_with_ns
    return f(td)
  File "/usr/local/www/zope/Products/CMFCore/FSPythonScript.py", line
99, in __render_with_namespace__
    return Script.__render_with_namespace__(self, namespace)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 320, in __render_with_namespace__
    return self._bindAndExec((), namevals, namespace)
  File "/usr/local/www/Zope/lib/python/Shared/DC/Scripts/Bindings.py",
line 343, in _bindAndExec
    return self._exec(bound_data, args, kw)
  File "/usr/local/www/zope/Products/CMFCore/FSPythonScript.py", line
160, in _exec
    result = apply(f, args, kw)
  File "Script (Python)", line 30, in listMetaTags
  File "/usr/local/www/zope/Products/CMFDefault/DublinCore.py", line
106, in Creator
    owner = self.getOwner()
  File "/usr/local/www/Zope/lib/python/AccessControl/Owned.py", line 94,
in getOwner
    user = udb.getUserById(oid, None)
  File
"/usr/local/www/zope/Products/GroupUserFolder/GroupUserFolder.py", line
336, in getUserById
    ret = self.getUser(id, __force_group_id__ = 1)
  File
"/usr/local/www/zope/Products/GroupUserFolder/GroupUserFolder.py", line
317, in getUser
    u = src.getUser(name)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
783, in getUser
    user = self.getUserByAttr(self._login_attr, name, pwd, cache=1)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
714, in getUserByAttr
    user_roles, user_dn, user_attrs = self._lookupuserbyattr(
  File "/var/www/zope/Products/LDAPUserFolder/LDAPUserFolder.py", line
305, in _lookupuserbyattr
    , bind_pwd=bind_pwd
  File "/var/www/zope/Products/LDAPUserFolder/LDAPDelegate.py", line
318, in search
    connection = self.connect(bind_dn=bind_dn, bind_pwd=bind_pwd)
  File "/var/www/zope/Products/LDAPUserFolder/LDAPDelegate.py", line
195, in connect
    conn.simple_bind_s(user_dn, user_pwd)
  File "/var/www/zope/Products/LDAPUserFolder/SharedResource.py", line
110, in __call__
    self._lock.acquire()
  File "/usr/local/lib/python2.4/threading.py", line 100, in acquire
    rc = self.__block.acquire(blocking)

End of dump

-- 
"The challenge of a moral life is to do nothing that requires
forgiveness."  - Roger Ebert in his review of _The Woodsman_






More information about the python-ldap mailing list