diff --git a/tests/sigchld.c b/tests/sigchld.c
index 5e8a9ce2dfabe1f21a4a148ead62acf9f2c680da..455f9981dfa7a65247beafce41ce90929608daa7 100644
--- a/tests/sigchld.c
+++ b/tests/sigchld.c
@@ -26,13 +26,18 @@ void handler(int sig) {
 }
 
 int main(void) {
-    int child = fork();
-    ERROR_IF(fork, child, == -1);
-
     int fds[2];
     int status = pipe(fds);
     ERROR_IF(pipe, status, == -1);
 
+    int child = fork();
+    ERROR_IF(fork, child, == -1);
+
+    sigset_t set;
+    sigemptyset(&set);
+    status = sigprocmask(SIG_SETMASK, &set, NULL);
+    ERROR_IF(sigprocmask, status, == -1);
+
     struct sigaction sa;
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = 0;
@@ -75,6 +80,9 @@ int main(void) {
         assert(WSTOPSIG(waitpid_stat) == SIGSTOP);
         puts("Correct, sending SIGCONT...");
 
+        status = write(fds[1], "C", 1);
+        ERROR_IF(write, status, == -1);
+
         status = kill(child, SIGCONT);
         ERROR_IF(kill, status, == -1);
 
@@ -91,7 +99,7 @@ int main(void) {
         puts("Child exited.");
 
         puts("Writing to (broken) pipe.");
-        status = write(fds[1], "C", 1);
+        status = write(fds[1], "B", 1);
         ERROR_IF(write, status, != -1);
         assert(errno == EPIPE);