diff --git a/src/backend/port/sysv_sema.c b/src/backend/port/sysv_sema.c index 65f922e023..2988561d0a 100644 --- a/src/backend/port/sysv_sema.c +++ b/src/backend/port/sysv_sema.c @@ -405,8 +405,8 @@ PGSemaphoreLock(PGSemaphore sema, bool interruptOK) * it's necessary for cancel/die interrupts to be serviced directly by the * signal handler. On these platforms the behavior is really the same * whether the signal arrives just before the semop() begins, or while it - * is waiting. The loop on EINTR is thus important only for other types - * of interrupts. + * is waiting. The loop on EINTR is thus important only for platforms + * without SA_RESTART. */ do { diff --git a/src/port/pqsignal.c b/src/port/pqsignal.c index 1511e932af..8c82c9371c 100644 --- a/src/port/pqsignal.c +++ b/src/port/pqsignal.c @@ -60,9 +60,7 @@ pqsignal(int signo, pqsigfunc func) act.sa_handler = func; sigemptyset(&act.sa_mask); - act.sa_flags = 0; - if (signo != SIGALRM) - act.sa_flags |= SA_RESTART; + act.sa_flags = SA_RESTART; #ifdef SA_NOCLDSTOP if (signo == SIGCHLD) act.sa_flags |= SA_NOCLDSTOP;