Too many open (leaking?) File Descriptors and "cannot import name SHA"

[email protected] Mon, 30 Nov 2009 23:56:15 -0000
Newsgroups gmane.comp.python.twisted.bugs
Message-ID <[email protected]>
New submission from cb <None>:

Hello
 my name is Christian Bahls
 i am an anti-censorship activist from germany
 
 we have this new law on internet-censorhip that
 would oblige providers to filter dns

 so i set out and implement a dns-(json+http)-dns-tunnel

My Resolver looks like this:
    resolvers=[]
    cacheResolver = cache.CacheResolver(verbose=True)
    resolvers.append(cacheResolver)
    hostResolver = hosts.Resolver(file='named.root.txt')
    #clientResolver = client.Resolver(servers=[('139.30.8.7',53)])
    rootResolver = root.bootstrap(hostResolver)
    resolvers.append(rootResolver)
    #resolvers.append(hostResolver)
    #resolvers.append(clientResolver)
    theResolver = resolve.ResolverChain(resolvers)

it gets called like this:
    def render_GET(self,request):
        DNSLogger.info("REQUEST: %s" % (request))
        d=theResolver.typeToMethod[self.typeKey](self.query)
        d.addCallback(self.returnResults,request)
        d.addErrback(self.returnError,request)
        #request.notifyFinish().addErrback(self.cancelRequest, d, request)
        return NOT_DONE_YET

   where typeKey would be '1' for type 'IN'

Under heavy Pressure .. I get:

Unhandled error in Deferred:
Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/internet/defer.py", line 238, in callback
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/internet/defer.py", line 307, in _startRunCallbacks
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/internet/defer.py", line 323, in _runCallbacks
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/internet/defer.py", line 625, in gotResult
    
--- <exception caught here> ---
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/internet/defer.py", line 600, in _deferGenerator
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/root.py", line 120, in discoverAuthority
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/root.py", line 67, in lookupNameservers
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/root.py", line 31, in retry
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/dns.py", line 1730, in query
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/dns.py", line 1577, in pickID
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/dns.py", line 44, in randomSource
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/python/randbytes.py", line 113, in secureRandom
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/python/randbytes.py", line 92, in _cryptoRandom
    
  File "/usr/lib/python2.5/site-packages/Crypto/Util/randpool.py", line 57, in __init__
    
exceptions.ImportError: cannot import name SHA

####### AND AFTERWARDS #########
Unhandled error in Deferred:
Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/internet/defer.py", line 600, in _deferGenerator
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/root.py", line 120, in discoverAuthority
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/root.py", line 67, in lookupNameservers
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/root.py", line 31, in retry
    
--- <exception caught here> ---
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/dns.py", line 1725, in query
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/names/dns.py", line 1666, in startListening
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/internet/posixbase.py", line 248, in listenUDP
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/internet/udp.py", line 83, in startListening
    
  File "/usr/lib/python2.5/site-packages/Twisted-9.0.0-py2.5-linux-x86_64.egg/twisted/internet/udp.py", line 91, in _bindSocket
    
twisted.internet.error.CannotListenError: Couldn't listen on any:0: (24, 'Too many open files').

I saw a similar Bug arround here ..
.. but it was supposed to be fixed?

.. as i have only the Deferred to play around with
 i am not so sure how to get rid of the open UDP ports

yours Christian Bahls

----------
Type     : defect
Component: names
Keywords : 
Priority : normal
Nosy     : 
----------
http://twistedmatrix.com/trac/ticket/4141