I'm trying to remediate a couple of memory leaks on shutdown. I'm
having trouble: (1) locating a definitive guide that lists what should
be called during cleanup; and (2) what order they should be called in.
The closest I've find to answering the questions are (1) OpenSSL
source code; and (2)
http://marc.info/?l=openssl-dev&m=104999183723322&w=2. OpenSSL source
code is a bit confusing because the various programs and demos mostly
do things differently. The openssl-dev posting is good, but I've still
got some leaks.
I start the application with:
CRYPTO_malloc_debug_init();
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
SSL_library_init();
SSL_load_error_strings();
FIPS_mode_set(1);
// Install static locks
// Create Client Context
// Create Server Context
// Load DH params
I shutdown the application with the following (in this order):
FIPS_mode_set(0);
// Remove static locks
// Destroy Client Context
// Destroy Server Context
// Unload DH params
ENGINE_cleanup();
CONF_modules_unload(1);
EVP_cleanup();
CRYPTO_cleanup_all_ex_data();
ERR_remove_state(0);
ERR_free_strings();
Then I dump state:
CRYPTO_mem_leaks_fp(stderr);
This results in the following (in addition to a Valgrind complaint):
Debug: dumping OpenSSL memory state
4206 file=err.c, line=1019, number=600, address=065CFDC0
4120 file=lhash.c, line=119, number=176, address=065BEFA0
> thread=67351016, file=err.c, line=449, info="int_thread_get (err.c)"
4207 file=lhash.c, line=193, number=24, address=065D0150
4121 file=lhash.c, line=121, number=128, address=065BF180
> thread=67351016, file=err.c, line=449, info="int_thread_get (err.c)"
928 bytes leaked in 4 chunks
What order are these functions supposed to be called in to cleanup the
leak in "err.c"?
Thanks in advance
______________________________________________________________________
OpenSSL Project
http://www.openssl.org
User Support Mailing List
openss...@openssl.org
Automated List Manager
majo...@openssl.org