From: Joerg Bruehe Date: November 8 2012 6:35pm Subject: bzr push into mysql-5.5 branch (joerg.bruehe:4044 to 4045) List-Archive: http://lists.mysql.com/commits/145205 Message-Id: <20121108183543.12263.6651.4045@trift-6core.fambruehe> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 4045 Joerg Bruehe 2012-11-08 [merge] Merge the ULN RPM fix into main. modified: packaging/rpm-uln/mysql-chain-certs.patch packaging/rpm-uln/mysql.spec.sh 4044 Aditya A 2012-11-08 [merge] Bug#14234028 - CRASH DURING SHUTDOWN WITH BACKGROUND PURGE THREAD Analysis --------- my_stat() calls stat() and if the stat() call fails we try to set the variable my_errno which is actually a thread specific data . We try to get the address of this thread specific data using my_pthread_getspecifc(),but for the purge thread we have not defined any thread specific data so it returns null and when dereferencing null we get a segmentation fault. init_available_charsets() seen in the core stack is invoked through pthread_once() .pthread_once is used for one time initialization.Since free_charsets() is called before innodb plugin shutdown ,purge thread calls init_avaliable_charsets() which leads to the crash. Fix --- Call free_charsets() after the innodb plugin shutdown,since purge threads are still using the charsets. modified: sql/mysqld.cc === modified file 'packaging/rpm-uln/mysql-chain-certs.patch' --- a/packaging/rpm-uln/mysql-chain-certs.patch 2012-06-08 17:44:06 +0000 +++ b/packaging/rpm-uln/mysql-chain-certs.patch 2012-11-08 14:49:28 +0000 @@ -9,19 +9,23 @@ Fedora builds, I'm not feeling motivated See RH bug #598656. Filed upstream at http://bugs.mysql.com/bug.php?id=54158 + === -diff -Naur mysql-5.1.47.orig/vio/viosslfactories.c mysql-5.1.47/vio/viosslfactories.c ---- mysql-5.1.47.orig/vio/viosslfactories.c 2010-05-06 11:28:07.000000000 -0400 -+++ mysql-5.1.47/vio/viosslfactories.c 2010-05-26 23:23:46.000000000 -0400 -@@ -100,7 +100,7 @@ - (long) ctx, cert_file, key_file)); - if (cert_file) +Joerg Bruehe, MySQL Build Team at Oracle: First patch adapted to code changes in MySQL 5.5 + + +diff -Naur mysql-5.5.29.orig/vio/viosslfactories.c mysql-5.5.29/vio/viosslfactories.c +--- mysql-5.5.29.orig/vio/viosslfactories.c 2010-05-06 11:28:07.000000000 -0400 ++++ mysql-5.5.29/vio/viosslfactories.c 2010-05-26 23:23:46.000000000 -0400 +@@ -106,7 +106,7 @@ + key_file= cert_file; + + if (cert_file && +- SSL_CTX_use_certificate_file(ctx, cert_file, SSL_FILETYPE_PEM) <= 0) ++ SSL_CTX_use_certificate_chain_file(ctx, cert_file) <= 0) { -- if (SSL_CTX_use_certificate_file(ctx, cert_file, SSL_FILETYPE_PEM) <= 0) -+ if (SSL_CTX_use_certificate_chain_file(ctx, cert_file) <= 0) - { - *error= SSL_INITERR_CERT; - DBUG_PRINT("error",("%s from file '%s'", sslGetErrString(*error), cert_file)); + *error= SSL_INITERR_CERT; + DBUG_PRINT("error",("%s from file '%s'", sslGetErrString(*error), cert_file)); diff -Naur mysql-5.1.47.orig/extra/yassl/src/ssl.cpp mysql-5.1.47/extra/yassl/src/ssl.cpp --- mysql-5.1.47.orig/extra/yassl/src/ssl.cpp 2010-05-06 11:24:26.000000000 -0400 +++ mysql-5.1.47/extra/yassl/src/ssl.cpp 2010-05-26 23:29:13.000000000 -0400 === modified file 'packaging/rpm-uln/mysql.spec.sh' --- a/packaging/rpm-uln/mysql.spec.sh 2012-11-07 19:32:54 +0000 +++ b/packaging/rpm-uln/mysql.spec.sh 2012-11-08 14:49:28 +0000 @@ -244,8 +244,7 @@ Patch13: mysql-expired-certs.patch # Will not be used by MySQL # Patch14: mysql-missing-string-code.patch Undecided, will not work in 5.5 (cmake) # Patch15: mysql-lowercase-bug.patch Fixed in MySQL 5.1.54 and 5.5.9 -# Patch16: mysql-chain-certs.patch Currently, this patch is broken -# by server code changes to "vio/viosslfactories.c" +Patch16: mysql-chain-certs.patch Patch17: mysql-5.5-libdir.patch Patch18: mysql-5.5-fix-tests.patch Patch19: mysql-5.5-mtr1.patch @@ -400,8 +399,7 @@ cd %{src_dir} # read about "%setup -n" # %patch10 -p1 # %patch13 -p1 # %patch14 -p1 -# %patch16 -p1 Currently, this patch is broken -# by server code changes to "vio/viosslfactories.c" +%patch16 -p1 %patch17 -p1 %patch18 -p1 %patch19 -p1 No bundle (reason: useless for push emails).