diff options
author | Alexander Barkov <bar@mnogosearch.org> | 2013-10-16 17:37:11 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mnogosearch.org> | 2013-10-16 17:37:11 +0400 |
commit | de4ca539b896abfb2888ce7dee6f7de39d2e9657 (patch) | |
tree | 7fc71dec89c69e10684d7caf11525027e7505255 | |
parent | 6dd9f049ab2c8771feabec447cff66b703392046 (diff) | |
download | mariadb-git-de4ca539b896abfb2888ce7dee6f7de39d2e9657.tar.gz |
MDEV-4890 Valgrind warnings on shutdown on a build with openSSL
-rw-r--r-- | mysql-test/valgrind.supp | 12 | ||||
-rw-r--r-- | sql/mysqld.cc | 4 | ||||
-rw-r--r-- | sql/slave.cc | 2 | ||||
-rw-r--r-- | vio/vio.c | 6 |
4 files changed, 24 insertions, 0 deletions
diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp index e7f5a7880d2..26c0424ba58 100644 --- a/mysql-test/valgrind.supp +++ b/mysql-test/valgrind.supp @@ -1004,6 +1004,18 @@ } { + OpenSSL still reachable. + Memcheck:Leak + fun:*alloc + fun:CRYPTO_malloc + fun:sk_new + obj:*libssl* + fun:SSL_COMP_get_compression_methods + fun:SSL_library_init +} + + +{ Problem with udf and libresolve Memcheck:Cond obj:*/libresolv*.so diff --git a/sql/mysqld.cc b/sql/mysqld.cc index f322cd1bb01..b709d71f817 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2094,6 +2094,9 @@ bool one_thread_per_connection_end(THD *thd, bool put_in_cache) /* It's safe to broadcast outside a lock (COND... is not deleted here) */ DBUG_PRINT("signal", ("Broadcasting COND_thread_count")); DBUG_LEAVE; // Must match DBUG_ENTER() +#ifndef EMBEDDED_LIBRARY + ERR_remove_state(0); +#endif my_thread_end(); (void) pthread_cond_broadcast(&COND_thread_count); @@ -3750,6 +3753,7 @@ static void init_ssl() opt_ssl_ca, opt_ssl_capath, opt_ssl_cipher, &error); DBUG_PRINT("info",("ssl_acceptor_fd: 0x%lx", (long) ssl_acceptor_fd)); + ERR_remove_state(0); if (!ssl_acceptor_fd) { sql_print_warning("Failed to setup SSL"); diff --git a/sql/slave.cc b/sql/slave.cc index d401eacc9df..202e624ce71 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -2854,6 +2854,7 @@ err: DBUG_LEAVE; // Must match DBUG_ENTER() my_thread_end(); + ERR_remove_state(0); pthread_exit(0); return 0; // Avoid compiler warnings } @@ -3250,6 +3251,7 @@ the slave SQL thread with \"SLAVE START\". We stopped at log \ DBUG_LEAVE; // Must match DBUG_ENTER() my_thread_end(); + ERR_remove_state(0); pthread_exit(0); return 0; // Avoid compiler warnings } diff --git a/vio/vio.c b/vio/vio.c index 486fe63da05..7b2cf45142f 100644 --- a/vio/vio.c +++ b/vio/vio.c @@ -250,5 +250,11 @@ void vio_end(void) { #ifdef HAVE_YASSL yaSSL_CleanUp(); +#elif defined(HAVE_OPENSSL) + // This one is needed on the client side + ERR_remove_state(0); + ERR_free_strings(); + EVP_cleanup(); + CRYPTO_cleanup_all_ex_data(); #endif } |