summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mnogosearch.org>2013-10-16 17:37:11 +0400
committerAlexander Barkov <bar@mnogosearch.org>2013-10-16 17:37:11 +0400
commitde4ca539b896abfb2888ce7dee6f7de39d2e9657 (patch)
tree7fc71dec89c69e10684d7caf11525027e7505255
parent6dd9f049ab2c8771feabec447cff66b703392046 (diff)
downloadmariadb-git-de4ca539b896abfb2888ce7dee6f7de39d2e9657.tar.gz
MDEV-4890 Valgrind warnings on shutdown on a build with openSSL
-rw-r--r--mysql-test/valgrind.supp12
-rw-r--r--sql/mysqld.cc4
-rw-r--r--sql/slave.cc2
-rw-r--r--vio/vio.c6
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
}