diff options
author | unknown <knielsen@ymer.(none)> | 2007-07-07 07:46:17 +0200 |
---|---|---|
committer | unknown <knielsen@ymer.(none)> | 2007-07-07 07:46:17 +0200 |
commit | 87e1a302c3bbd0f956883321358da8d1dec0591e (patch) | |
tree | 32285961b70624005969288f9d547f4d126db07f /sql/stacktrace.c | |
parent | b1dce946cc87620b2c9b522585e3150ffd981a12 (diff) | |
download | mariadb-git-87e1a302c3bbd0f956883321358da8d1dec0591e.tar.gz |
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.
Diffstat (limited to 'sql/stacktrace.c')
-rw-r--r-- | sql/stacktrace.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/stacktrace.c b/sql/stacktrace.c index d8e9b7fd883..c947beafac3 100644 --- a/sql/stacktrace.c +++ b/sql/stacktrace.c @@ -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 */ |