summaryrefslogtreecommitdiff
path: root/sql/mysqld.cc
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2006-05-19 13:07:24 +0200
committerunknown <msvensson@neptunus.(none)>2006-05-19 13:07:24 +0200
commit5ceb394fe22182055cb16b99bec3c6fe6b1dc3d8 (patch)
tree19df7c9973c569b5cc78b2f67a58e6f18c0c0aa2 /sql/mysqld.cc
parent1bdb7f7789f4c1b02a97210e3818d49f6e064bc2 (diff)
downloadmariadb-git-5ceb394fe22182055cb16b99bec3c6fe6b1dc3d8.tar.gz
Bug#15869 Cannot shutdown the server - it restarts
- A segfault occured when the function 'kill_server' called 'my_sigset' with signal number 0. 'my_sigset' is a macro which uses 'sigaction' to install the signal handler with an invalid signal number will on most platforms return EINVAL but yields a segfauilt on IRIX 6.5 - The server crash was detected by mysqld_safe and it was restarted although a shutdown was requested. - Semantics of kill_server(0) is not known, leaving it intact include/my_pthread.h: Check return value from sigaction with a DBUG_ASSERT Also DBUG_ASSERT if signal number 0 is passed sql/mysqld.cc: Don't call my_sigset if signo is 0
Diffstat (limited to 'sql/mysqld.cc')
-rw-r--r--sql/mysqld.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 740e1a419c7..9c1089dbdb2 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -884,7 +884,8 @@ static void __cdecl kill_server(int sig_ptr)
RETURN_FROM_KILL_SERVER;
kill_in_progress=TRUE;
abort_loop=1; // This should be set
- my_sigset(sig,SIG_IGN);
+ if (sig != 0) // 0 is not a valid signal number
+ my_sigset(sig,SIG_IGN);
if (sig == MYSQL_KILL_SIGNAL || sig == 0)
sql_print_information(ER(ER_NORMAL_SHUTDOWN),my_progname);
else