Close race condition in ppoll test where SIGALRM was delivered before we actually reached ppoll

This seems to be what triggered the intermittent failure in https://buildkite.com/julialang/rr/builds/1395#018aad32-437b-4d71-ac76-a211b2c5dc18
diff --git a/src/test/ppoll.c b/src/test/ppoll.c
index 3fe055f..19af545 100644
--- a/src/test/ppoll.c
+++ b/src/test/ppoll.c
@@ -51,6 +51,15 @@
   pfd.events = POLLIN;
   for (i = 0; i < NUM_ITERATIONS; i++) {
     int ret;
+    sigset_t before_sigset;
+    sigset_t sigalrm_blocked_sigset;
+    sigemptyset(&sigalrm_blocked_sigset);
+    sigaddset(&sigalrm_blocked_sigset, SIGALRM);
+    /* Block SIGALRM before we call our_ualarm because we don't want it
+       to go off early. */
+    ret = sigprocmask(SIG_SETMASK, &sigalrm_blocked_sigset, &before_sigset);
+    test_assert(ret == 0);
+    test_assert(!sigismember(&before_sigset, SIGALRM));
 
     atomic_printf("iteration %d\n", i);
     if (i % 2 == 0) {
@@ -60,11 +69,6 @@
       return 0;
     }
 
-    sigset_t before_sigset;
-    ret = sigprocmask(SIG_BLOCK, NULL, &before_sigset);
-    test_assert(ret == 0);
-    test_assert(!sigismember(&before_sigset, SIGALRM));
-
     t.tv_sec = 1;
     t.tv_nsec = 0;
 
@@ -82,7 +86,7 @@
 
     /* Validate that the signal mask got reset */
     sigset_t after_sigset;
-    ret = sigprocmask(SIG_BLOCK, NULL, &after_sigset);
+    ret = sigprocmask(SIG_SETMASK, &before_sigset, &after_sigset);
     test_assert(ret == 0);
     test_assert(!sigismember(&after_sigset, SIGCHLD));
   }