diff --git a/svr-chansession.c b/svr-chansession.c
index 0b3e8333298d280c7e0cf223e33e01d10429c2b6..e6ad713cf7df03d9c38e8725a6ef8402d4588742 100644
--- a/svr-chansession.c
+++ b/svr-chansession.c
@@ -137,6 +137,7 @@ static void sesssigchild_handler(int UNUSED(dummy)) {
 
 	sa_chld.sa_handler = sesssigchild_handler;
 	sa_chld.sa_flags = SA_NOCLDSTOP;
+	sa_chld.sa_mask = 0;
 	sigaction(SIGCHLD, &sa_chld, NULL);
 	TRACE(("leave sigchld handler"))
 }
diff --git a/svr-main.c b/svr-main.c
index d3fa9afc5079545ea0210e19ad476e6e546f3957..ff3691fef2dcf6e402a2d1a0c86a6510eebfd75d 100644
--- a/svr-main.c
+++ b/svr-main.c
@@ -370,6 +370,7 @@ static void commonsetup() {
 	/* catch and reap zombie children */
 	sa_chld.sa_handler = sigchld_handler;
 	sa_chld.sa_flags = SA_NOCLDSTOP;
+	sa_chld.sa_mask = 0;
 	if (sigaction(SIGCHLD, &sa_chld, NULL) < 0) {
 		dropbear_exit("signal() error");
 	}