Thanks for the response! :)

Nope, they're in there, in shutdown():

    ERR_free_strings();
    for_each(_threadIdCache.begin(), _threadIdCache.end(),
ERR_remove_state);

We actually maintain a cache of all threads that access the plugin and
remove the error state for them.

Unless we have to do an ERR_remove_state(0) as well?

-Anthony

Fred Crable wrote:

> You are missing calls to:
>
>     ERR_free_strings();
>     ERR_remove_state(0);
>
> -----Original Message-----
> From: Anthony Neal [mailto:[EMAIL PROTECTED]
> Sent: Friday, December 12, 2003 9:32 AM
> To: [EMAIL PROTECTED]
> Subject: OpenSSL 0.9.7a - Small (585 byte) memory leak
>
> Hi there,
>
> One of our projects uses an OpenSSL based plug-in which, according to
> the OpenSSL memory debug logs, is leaking about 585 bytes.  The log is
> as follows:
>
> [10:57:19]  1856 file=err.c, line=949, thread=16384, number=332,
> address=08087550
> [10:57:19]  1859 file=lhash.c, line=193, thread=16384, number=12,
> address=08087C78
> [10:57:19] 10692 file=err.c, line=1003, thread=16384, number=81,
> address=08119160
> [10:57:19]  1857 file=lhash.c, line=119, thread=16384, number=96,
> address=08087C88
> > thread=16384, file=err.c, line=415, info="int_thread_get (err.c)"
> [10:57:19]  1858 file=lhash.c, line=121, thread=16384, number=64,
> address=08087768
> > thread=16384, file=err.c, line=415, info="int_thread_get (err.c)"
> 585 bytes leaked in 5 chunks
>
> The plugin starts up as follows:
>
> void init()
> {
>     if(_memDebug != 0)
>     {
>         CRYPTO_malloc_debug_init();
>         CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL);
>         CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
>     }
>     else
>     {
>         CRYPTO_set_mem_debug_functions(0, 0, 0, 0, 0);
>     }
>
>     SSL_library_init();
>     SSL_load_error_strings();
>     OpenSSL_add_ssl_algorithms();
> }
>
> and shuts down as follows:
>
> void shutdown()
> {
>     ENGINE_cleanup();
>     CRYPTO_cleanup_all_ex_data();
>
>     ERR_free_strings();
>     for_each(_threadIdCache.begin(), _threadIdCache.end(),
> ERR_remove_state);
>
>     EVP_cleanup();
>
>     if(_memDebug != 0)
>     {
>         CRYPTO_mem_leaks_fp(stderr);
>     }
> }
>
> Does anyone see anything glaring that could be causing this leak?  I
> know some of you are much better at interpretting as to what these leaks
> could be attributed.  Any help would be greatly appreciated.
>
> Interestingly, the memory debug messages come to about 579 bytes - could
> this lead be the memory used to report this error?
>
> -Anthony
>
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    [EMAIL PROTECTED]
> Automated List Manager                           [EMAIL PROTECTED]
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> User Support Mailing List                    [EMAIL PROTECTED]
> Automated List Manager                           [EMAIL PROTECTED]

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to