Below is the list of changes that have just been committed into a local
5.0 repository of knielsen. When knielsen does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-07-07 07:46:17+02:00, knielsen@ymer.(none) +2 -0
Bug #29543 GCov information not written in case of crash.
For GCov builds, if the server crashes, the normal exit handler for writing
coverage information is not executed due to the abnormal termination.
Fix this by explicitly calling the __gcov_flush function in our crash handler.
BUILD/compile-pentium-gcov@stripped, 2007-07-07 07:46:13+02:00, knielsen@ymer.(none) +3 -2
Bug #29543 GCov information not written in case of crash.
For GCov builds, if the server crashes, the normal exit handler for writing
coverage information is not executed due to the abnormal termination.
Fix this by explicitly calling the __gcov_flush function in our crash handler.
sql/stacktrace.c@stripped, 2007-07-07 07:46:14+02:00, knielsen@ymer.(none) +9 -0
Bug #29543 GCov information not written in case of crash.
For GCov builds, if the server crashes, the normal exit handler for writing
coverage information is not executed due to the abnormal termination.
Fix this by explicitly calling the __gcov_flush function in our crash handler.
diff -Nrup a/BUILD/compile-pentium-gcov b/BUILD/compile-pentium-gcov
--- a/BUILD/compile-pentium-gcov 2006-12-14 23:51:28 +01:00
+++ b/BUILD/compile-pentium-gcov 2007-07-07 07:46:13 +02:00
@@ -13,8 +13,9 @@ export LDFLAGS="-fprofile-arcs -ftest-co
# The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
# code with profiling information used by gcov.
-# the -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
-extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM
$debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov"
+# The -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
+# The -DHAVE_gcov enables code to write out coverage info even when crashing.
+extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM
$debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov -DHAVE_gcov"
c_warnings="$c_warnings $debug_extra_warnings"
cxx_warnings="$cxx_warnings $debug_extra_warnings"
extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
diff -Nrup a/sql/stacktrace.c b/sql/stacktrace.c
--- a/sql/stacktrace.c 2006-12-23 20:04:28 +01:00
+++ b/sql/stacktrace.c 2007-07-07 07:46:14 +02:00
@@ -241,6 +241,15 @@ void write_core(int sig)
void write_core(int sig)
{
signal(sig, SIG_DFL);
+#ifdef HAVE_gcov
+ /*
+ For GCOV build, crashing will prevent the writing of code coverage
+ information from this process, causing gcov output to be incomplete.
+ So we force the writing of coverage information here before terminating.
+ */
+ extern void __gcov_flush(void);
+ __gcov_flush();
+#endif
pthread_kill(pthread_self(), sig);
#if defined(P_MYID) && !defined(SCO)
/* On Solaris, the above kill is not enough */
| Thread |
|---|
| • bk commit into 5.0 tree (knielsen:1.2519) BUG#29543 | knielsen | 7 Jul |