70 KB is nothing nowadays. Besides each thread has its memory requirements, and memory is supposed to increase the more threads you use. Even if the threads reduce (lower load) memory may not go all the way back, because of global structures that have grown due to the load. But after several cycles, memory should stabilize when releasing threads.
Best way is to put it through valgrind, but I expect that this is already been done by the developers in the group. BR, Nikos ----- Original Message ----- From: Fabian Bergmark To: openssl-users@openssl.org Sent: Thursday, May 07, 2009 4:49 PM Subject: Re: Openssl Memory leak After some investigation I've figured out that the memory leak isn't caused by running Openssl in threads. However, after about 200 connections, may vary, the used memory increases with around 70 kb. Is this normal? I guessed it's allocated by the openssl library 2009/5/6 Fabian Bergmark <fabian.bergm...@gmail.com> Okey. Now i got no more memory leaks when I put the SSL code in main. However, if i try to put the exact same code in a thread the memory leak is back. Here is the essential code I'm using; void lcserver::start() { SSL_library_init(); SSL_load_error_strings(); method = SSLv23_server_method(); ctx = SSL_CTX_new(method); Some windows socket code... while(acceptsocket = accept(listensocket,(sockaddr*)&sin,&len)) { struct clientinfo *client; client = new struct clientinfo(acceptsocket,sin.sin_addr.s_addr,clientid++,this,rooms[0]->getthis(),ctx); client->M1(); } } void clientinfo::M1() { CreateThread(0,0,(LPTHREAD_START_ROUTINE)M2,(LPVOID)this,0,0); } void clientinfo::M2(LPVOID param) { clientinfo* Call = (clientinfo*)param; Call->listenfor(); delete Call; return; } void clientinfo::listenfor() { SSL_set_bio(ssl,bio,bio); SSL_accept(ssl); while(SSL_shutdown(ssl) == 0) ; SSL_free(ssl); ERR_remove_state(0); } Just running this code which shouldn't leave any allocated memory, about 12 kb ram is still allocated. 2009/5/5 Nikos Balkanas <nbalka...@gmail.com> Hi, Check the return value of SSL_shutdown(ssl). Sometimes it needs up to 4 iterations to complete due to internal state machine. It completes when the value != 0. Hope it helps. BR, Nikos ----- Original Message ----- From: Fabian Bergmark To: openssl-users@openssl.org Sent: Tuesday, May 05, 2009 9:13 PM Subject: Openssl Memory leak Hi I am currently writing a Chat application using the Openssl library for encryption. It's a multi-thread application and every client is managed by a different thread. However, ever since I implemented Openssl there seams to be a memory leak of around 10 kb. My openssl-code code is looking like following: SSL_set_bio(ssl,bio,bio); SSL_accept(ssl); SSL_shutdown(ssl); SSL_free(ssl); where bio and ssl is class objects where BIO is set like bio = BIO_new_socket(s,BIO_NOCLOSE) The increased memory does not occur before SSL_accept(ssl). The first time a client connect about a 100 kb is allocated, which I suppose is due to some initialising function. For each new client about 0-20 kb are still allocated after SSL_shutdown(ssl); SSL_free(ssl); is issued. Is there some cleanup functions im forgetting? I am using windows btw.