diff --git a/src/backend/port/sysv_sema.c b/src/backend/port/sysv_sema.c index 65f922e0230c1bdbba44c410291bd872f91261d4..2988561d0ae700311c9a0034b3bb6356f27c0969 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 1511e932afed13bb58520826a1d973abb6f69c7d..8c82c9371c0bbed1c1bd3615edf573650922d1b7 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;