[Zope] Re: ftp server deadlocking zope with DeadlockDebugger

Florent Guillaume fg at nuxeo.com
Sun May 7 19:24:11 EDT 2006


This doesn't look like a deadlock (or you would see the thread locked on 
a thread-waiting operation). Maybe it's a livelock, or maybe simply a 
very long-running process, or an infinite loop.

You'd find more about it by doing more snapshots, and finding what the 
common top part of the traceback is. It will point you to the part of 
the code that's repeatedly called.

Florent

Michael Kaplan wrote:
> Dieter Maurer wrote:
> 
>> Michael Kaplan wrote at 2006-5-5 16:09 +0200:
>>  
>>
>>> ...
>>> File "/home/www/Zope-2.8.5-0/Products/Archetypes/ReferenceEngine.py", 
>>> line 583, in getReferences
>>>   return self._resolveBrains(brains)
>>> File "/home/www/Zope-2.8.5-0/Products/Archetypes/ReferenceEngine.py", 
>>> line 716, in _uidFor
>>>   return uuid, obj
>>> File "/home/www/Zope-2.8.5-0/Products/Archetypes/ReferenceEngine.py", 
>>> line 634, in isReferenceable
>>>   return (IReferenceable.isImplementedBy(object) or
>>> File 
>>> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Interface/_InterfaceClass.py", 
>>> line 111, in isImplementedBy
>>>   return visitImplements(
>>> File 
>>> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Interface/Implements.py", 
>>> line 86, in visitImplements
>>>   return r
>>> File 
>>> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Interface/Implements.py", 
>>> line 86, in visitImplements
>>>   return r
>>> File 
>>> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Interface/Implements.py", 
>>> line 86, in visitImplements
>>>   return r
>>> File 
>>> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Interface/Implements.py", 
>>> line 81, in visitImplements
>>>   elif implements_class == TupleType or type(implements) is TupleType:
>>>
>>> Could anybody explain what's wrong here and how to repair it?
>>>   
>>
>> Stays the part above (maybe partially) accross several
>> "DeadlockDebugger" invocations (or changes the tail of your
>> traceback continously)?
>>
>> In this case, there would seem to be some infinite loop caused
>> by the AT "ReferenceEngine" (I like it).
>>
>>  
>>
> As you supposed the tail changes if I invoke DeadlockDebugger several 
> times.
> Here are 3 more examples besides the one I sent before:
> 
> Thread 10 (GET /dirname/manage_FTPlist):
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZServer/PubCore/ZServerPublisher.py", 
> line 23, in __init__
>    response=response)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/Publish.py", 
> line 386, in publish_module
>    environ, debug, request, response)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/Publish.py", 
> line 187, in publish_module_standard
>    response = publish(request, module_name, after_list, debug=debug)
>  File 
> "/home/www/Zope-2.8.5-0/Products/PlacelessTranslationService/PatchStringIO.py", 
> line 51, in new_publish
>    x = Publish.old_publish(request, module_name, after_list, debug)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/Publish.py", 
> line 104, in publish
>    object=request.traverse(path, validated_hook=validated_hook)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/BaseRequest.py", 
> line 272, in traverse
>    bpth(object, self)
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 421, in __before_publishing_traverse__
>    stack.append('not_available_lang')
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 150, in getTranslationLanguages
>    return self.getTranslations().keys()
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 176, in getTranslations
>    return self.getCanonical().getTranslations()
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 196, in isCanonical
>    return not bool(self.getReferenceImpl(config.RELATIONSHIP))
>  File "/home/www/Zope-2.8.5-0/Products/Archetypes/Referenceable.py", 
> line 105, in getReferenceImpl
>    return refs
>  File "/home/www/Zope-2.8.5-0/Products/Archetypes/ReferenceEngine.py", 
> line 577, in getReferences
>    if targetObject:
> 
> 
> Thread 10 (GET /dirname/manage_FTPlist):
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZServer/PubCore/ZServerPublisher.py", 
> line 23, in __init__
>    response=response)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/Publish.py", 
> line 386, in publish_module
>    environ, debug, request, response)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/Publish.py", 
> line 187, in publish_module_standard
>    response = publish(request, module_name, after_list, debug=debug)
>  File 
> "/home/www/Zope-2.8.5-0/Products/PlacelessTranslationService/PatchStringIO.py", 
> line 51, in new_publish
>    x = Publish.old_publish(request, module_name, after_list, debug)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/Publish.py", 
> line 104, in publish
>    object=request.traverse(path, validated_hook=validated_hook)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/BaseRequest.py", 
> line 272, in traverse
>    bpth(object, self)
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 421, in __before_publishing_traverse__
>    stack.append('not_available_lang')
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 150, in getTranslationLanguages
>    return self.getTranslations().keys()
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 176, in getTranslations
>    return self.getCanonical().getTranslations()
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 174, in getTranslations
>    return result
>  File "/home/www/Zope-2.8.5-0/Products/Archetypes/Referenceable.py", 
> line 93, in getBRefs
>    return [ref.getSourceObject() for ref in refs]
>  File "/home/www/Zope-2.8.5-0/Products/Archetypes/ReferenceEngine.py", 
> line 595, in getBackReferences
>    return self._resolveBrains(brains)
>  File "/home/www/Zope-2.8.5-0/Products/Archetypes/ReferenceEngine.py", 
> line 690, in _queryFor
>    return brains
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/ZCatalog/ZCatalog.py", 
> line 690, in searchResults
>    return self._catalog.searchResults(REQUEST, used, **kw)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/ZCatalog/Catalog.py", 
> line 733, in searchResults
>    return self.search(args, sort_index, reverse, sort_limit, _merge)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/ZCatalog/Catalog.py", 
> line 533, in search
>    return LazyMap(self.__getitem__, rs, len(rs))
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/PluginIndexes/common/UnIndex.py", 
> line 347, in _apply_index
>    if record.keys==None: return None
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/PluginIndexes/common/util.py", 
> line 70, in __init__
>    return
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/ZCatalog/Catalog.py", 
> line 771, in has_key
>    except KeyError:
> 
> 
> Thread 10 (GET /dirname/manage_FTPlist):
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZServer/PubCore/ZServerPublisher.py", 
> line 23, in __init__
>    response=response)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/Publish.py", 
> line 386, in publish_module
>    environ, debug, request, response)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/Publish.py", 
> line 187, in publish_module_standard
>    response = publish(request, module_name, after_list, debug=debug)
>  File 
> "/home/www/Zope-2.8.5-0/Products/PlacelessTranslationService/PatchStringIO.py", 
> line 51, in new_publish
>    x = Publish.old_publish(request, module_name, after_list, debug)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/Publish.py", 
> line 104, in publish
>    object=request.traverse(path, validated_hook=validated_hook)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/ZPublisher/BaseRequest.py", 
> line 272, in traverse
>    bpth(object, self)
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 413, in __before_publishing_traverse__
>    translation = self.getTranslation(cookie_lang)
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 139, in getTranslation
>    l = self.getTranslations().get(language, None)
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 176, in getTranslations
>    return self.getCanonical().getTranslations()
>  File "/home/www/Zope-2.8.5-0/Products/LinguaPlone/I18NBaseObject.py", 
> line 168, in getTranslations
>    for obj in self.getBRefs(config.RELATIONSHIP):
>  File "/home/www/Zope-2.8.5-0/Products/Archetypes/Referenceable.py", 
> line 91, in getBRefs
>    refs = tool.getBackReferences(self, relationship, 
> targetObject=targetObject)
>  File "/home/www/Zope-2.8.5-0/Products/Archetypes/ReferenceEngine.py", 
> line 594, in getBackReferences
>    brains = self._queryFor(tid=sID, relationship=relationship, sid=tID)
>  File "/home/www/Zope-2.8.5-0/Products/Archetypes/ReferenceEngine.py", 
> line 688, in _queryFor
>    brains = self.searchResults(query, merge=merge)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/ZCatalog/ZCatalog.py", 
> line 690, in searchResults
>    return self._catalog.searchResults(REQUEST, used, **kw)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/ZCatalog/Catalog.py", 
> line 733, in searchResults
>    return self.search(args, sort_index, reverse, sort_limit, _merge)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/ZCatalog/Catalog.py", 
> line 476, in search
>    r = _apply_index(request)
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/PluginIndexes/common/UnIndex.py", 
> line 372, in _apply_index
>    if record.get('usage',None):
>  File 
> "/usr/local/mypackages/Zope-2.8.5-final/lib/python/Products/PluginIndexes/common/util.py", 
> line 133, in get
>    def get(self,k,default_v=None):
> 
> _______________________________________________
> Zope maillist  -  Zope-CWUwpEBWKX0 at public.gmane.org
> http://mail.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope-dev )
> 


-- 
Florent Guillaume, Nuxeo (Paris, France)   Director of R&D
+33 1 40 33 71 59   http://nuxeo.com   fg at nuxeo.com


More information about the Zope mailing list