I am writing an Imap client. The Imap server (Groupwise) I connect to is really slow at accepting logins. So I have made a connection pool where I store the open connections to the server. But once in a while I get a memory segment error on the server and it crashes. I suspect what happens is that a connection has been idle for to long, ad the connection dropped by the imap server. Which might cause some memory to be freed that is then accessed when I call noop(). It could also be be some kind of threading problem. Does any of you hav an ide as to how I can find out? I am not used to these kind of problems, having been spoiled by Python for too long. regards Max M I have attached the connection pool code in the bottom. ########################################## # a borg/singleton for pooling connections. # Necessary as login can take a looong time class ConnectionPool: __shared_state = {} def __init__(self): self.__dict__ = self.__shared_state def getConnection(self, server_uri, user, password): if not hasattr(self, 'connections'): self.connections = {} user_key = (server_uri, user, password) user_connections = self.connections.setdefault(user_key, []) # first try and return a connection from the pool for i in range(len(user_connections)-1, -1, -1): # a connection can be timed out, # try noop to see if it's still open connection = user_connections[i] try: connection.noop() return user_connections.pop(i) except: # else login again user_connections.pop(i) # if no usable connections in the pool, # create new one and return it return Imap4Connector(server_uri, user, password) def release(self, connection): # take the connection and put it in the pool user_key = (connection.server_uri, connection.user, \ connection.password) user_connections = self.connections.setdefault(user_key, []) user_connections.append(connection) -- hilsen/regards Max M, Denmark http://www.mxm.dk/ IT's Mad Science