summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2015-11-30 12:05:59 +0100
committerantirez <antirez@gmail.com>2015-11-30 12:05:59 +0100
commit077a196501e8e84cbfe5965c3bc99a173c680187 (patch)
tree5bb0c78d54a6bdcd63c8446b07b2f9cacd0b6e06
parent4f7d1e46cf267a1900d2abd8cf5df8f95f7f63d6 (diff)
downloadredis-waitpid-fix.tar.gz
Better SIGCHLD handling for #2897 debugging.waitpid-fix
-rw-r--r--src/bio.c1
-rw-r--r--src/redis.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/src/bio.c b/src/bio.c
index 4bd5a17c6..66e1afd7f 100644
--- a/src/bio.c
+++ b/src/bio.c
@@ -152,6 +152,7 @@ void *bioProcessBackgroundJobs(void *arg) {
* receive the watchdog signal. */
sigemptyset(&sigset);
sigaddset(&sigset, SIGALRM);
+ sigaddset(&sigset, SIGCHLD);
if (pthread_sigmask(SIG_BLOCK, &sigset, NULL))
redisLog(REDIS_WARNING,
"Warning: can't mask SIGALRM in bio.c thread: %s", strerror(errno));
diff --git a/src/redis.c b/src/redis.c
index 3afe1601d..203d8d780 100644
--- a/src/redis.c
+++ b/src/redis.c
@@ -1761,7 +1761,8 @@ void initServer(void) {
int j;
signal(SIGHUP, SIG_IGN);
- signal(SIGPIPE, SIG_IGN);
+ signal(SIGPIPE, SIG_IGN); /* No write(2) generated signals. */
+ signal(SIGCHLD, SIG_DFL); /* We want zombies to queue for waitpid(). */
setupSignalHandlers();
if (server.syslog_enabled) {