diff options
author | Alexey Yurchenko <ayurchen@gmail.com> | 2014-12-10 23:29:28 +0200 |
---|---|---|
committer | Nirbhay Choubey <nirbhay@mariadb.com> | 2015-05-08 17:41:05 -0400 |
commit | 9d15689d1f529b493cd9f01fbd2271c3ff81497d (patch) | |
tree | 20257d2b37cfbf79e73041f5fffc7b62bbac85c0 /sql/wsrep_utils.cc | |
parent | 14b6172075eda88675d8b34951e0ee5f3f5874e3 (diff) | |
download | mariadb-git-9d15689d1f529b493cd9f01fbd2271c3ff81497d.tar.gz |
Refs #25 - made sure signals that may be set to ignored in mysqld were set to default in the child process.
Diffstat (limited to 'sql/wsrep_utils.cc')
-rw-r--r-- | sql/wsrep_utils.cc | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/sql/wsrep_utils.cc b/sql/wsrep_utils.cc index f30b3dcf702..a62fc4ec2ed 100644 --- a/sql/wsrep_utils.cc +++ b/sql/wsrep_utils.cc @@ -150,7 +150,35 @@ process::process (const char* cmd, const char* type) goto cleanup_pipe; } - err_ = posix_spawnattr_setflags (&attr, POSIX_SPAWN_SETSIGDEF | + /* make sure that no signlas are masked in child process */ + sigset_t sigmask_empty; sigemptyset(&sigmask_empty); + err_ = posix_spawnattr_setsigmask(&attr, &sigmask_empty); + if (err_) + { + WSREP_ERROR ("posix_spawnattr_setsigmask() failed: %d (%s)", + err_, strerror(err_)); + goto cleanup_attr; + } + + /* make sure the following signals are not ignored in child process */ + sigset_t default_signals; sigemptyset(&default_signals); + sigaddset(&default_signals, SIGHUP); + sigaddset(&default_signals, SIGINT); + sigaddset(&default_signals, SIGQUIT); + sigaddset(&default_signals, SIGPIPE); + sigaddset(&default_signals, SIGTERM); + sigaddset(&default_signals, SIGCHLD); + err_ = posix_spawnattr_setsigdefault(&attr, &default_signals); + if (err_) + { + WSREP_ERROR ("posix_spawnattr_setsigdefault() failed: %d (%s)", + err_, strerror(err_)); + goto cleanup_attr; + } + + err_ = posix_spawnattr_setflags (&attr, POSIX_SPAWN_SETSIGDEF | + POSIX_SPAWN_SETSIGMASK | + /* start a new process group */ POSIX_SPAWN_SETPGROUP | POSIX_SPAWN_USEVFORK); if (err_) { |