Commit 83836455 authored by Thomas Munro's avatar Thomas Munro

Don't clobber postmaster sigmask in dsm_impl_resize.

Commit 4518c798 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 4518c798.

Discussion: https://postgr.es/m/CA%2BhUKGKNpK%3D2OMeea_AZwpLg7Bm4%3DgYWk7eDjZ5F6YbozfOf8w%40mail.gmail.com
parent 2019e6ec
...@@ -362,6 +362,7 @@ dsm_impl_posix_resize(int fd, off_t size) ...@@ -362,6 +362,7 @@ dsm_impl_posix_resize(int fd, off_t size)
* allowed SIGUSR1 to interrupt us repeatedly (for example, due to recovery * allowed SIGUSR1 to interrupt us repeatedly (for example, due to recovery
* conflicts), the retry loop might never succeed. * conflicts), the retry loop might never succeed.
*/ */
if (IsUnderPostmaster)
PG_SETMASK(&BlockSig); PG_SETMASK(&BlockSig);
/* Truncate (or extend) the file to the requested size. */ /* Truncate (or extend) the file to the requested size. */
...@@ -402,9 +403,12 @@ dsm_impl_posix_resize(int fd, off_t size) ...@@ -402,9 +403,12 @@ dsm_impl_posix_resize(int fd, off_t size)
} }
#endif /* HAVE_POSIX_FALLOCATE && __linux__ */ #endif /* HAVE_POSIX_FALLOCATE && __linux__ */
if (IsUnderPostmaster)
{
save_errno = errno; save_errno = errno;
PG_SETMASK(&UnBlockSig); PG_SETMASK(&UnBlockSig);
errno = save_errno; errno = save_errno;
}
return rc; return rc;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment