Skip to content

Commit

Permalink
Don't clobber postmaster sigmask in dsm_impl_resize.
Browse files Browse the repository at this point in the history
Commit 4518c79 intended to block signals in regular backends that
allocate DSM segments, but dsm_impl_resize() is also reached by
dsm_postmaster_startup().  It's not OK to clobber the postmaster's
signal mask, so only manipulate the signal mask when under the
postmaster.

Back-patch to all releases, like 4518c79.

Discussion: https://postgr.es/m/CA%2BhUKGKNpK%3D2OMeea_AZwpLg7Bm4%3DgYWk7eDjZ5F6YbozfOf8w%40mail.gmail.com
  • Loading branch information
macdice committed Jul 14, 2022
1 parent 53cfe40 commit e26024b
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/backend/storage/ipc/dsm_impl.c
Expand Up @@ -416,7 +416,8 @@ dsm_impl_posix_resize(int fd, off_t size)
* allowed SIGUSR1 to interrupt us repeatedly (for example, due to recovery
* conflicts), the retry loop might never succeed.
*/
PG_SETMASK(&BlockSig);
if (IsUnderPostmaster)
PG_SETMASK(&BlockSig);

/* Truncate (or extend) the file to the requested size. */
do
Expand Down Expand Up @@ -454,9 +455,12 @@ dsm_impl_posix_resize(int fd, off_t size)
}
#endif /* HAVE_POSIX_FALLOCATE && __linux__ */

save_errno = errno;
PG_SETMASK(&UnBlockSig);
errno = save_errno;
if (IsUnderPostmaster)
{
save_errno = errno;
PG_SETMASK(&UnBlockSig);
errno = save_errno;
}

return rc;
}
Expand Down

0 comments on commit e26024b

Please sign in to comment.