From 6f278a123caa395f0f487a2b04d7992e573a5fc6 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Thu, 9 Aug 2018 15:38:17 +0530 Subject: [PATCH 1/4] Use portable close-on-exec syscalls. --- src/backend/postmaster/postmaster.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 135aa29bfeb..42134d4ed28 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -6458,7 +6458,7 @@ static void InitFsyncFdSocketPair(void) { Assert(MyProcPid == PostmasterPid); - if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, fsync_fds) < 0) + if (socketpair(AF_UNIX, SOCK_STREAM, 0, fsync_fds) < 0) ereport(FATAL, (errcode_for_file_access(), errmsg_internal("could not create fsync sockets: %m"))); @@ -6470,11 +6470,19 @@ InitFsyncFdSocketPair(void) ereport(FATAL, (errcode_for_socket_access(), errmsg_internal("could not set fsync process socket to nonblocking mode: %m"))); + if (fcntl(fsync_fds[FSYNC_FD_PROCESS], F_SETFD, FD_CLOEXEC) == -1) + ereport(FATAL, + (errcode_for_socket_access(), + errmsg_internal("could not set fsync process socket to close-on-exec mode: %m"))); if (fcntl(fsync_fds[FSYNC_FD_SUBMIT], F_SETFL, O_NONBLOCK) == -1) ereport(FATAL, (errcode_for_socket_access(), errmsg_internal("could not set fsync submit socket to nonblocking mode: %m"))); + if (fcntl(fsync_fds[FSYNC_FD_SUBMIT], F_SETFD, FD_CLOEXEC) == -1) + ereport(FATAL, + (errcode_for_socket_access(), + errmsg_internal("could not set fsync submit socket to close-on-exec mode: %m"))); /* * FIXME: do DuplicateHandle dance for windows - can that work -- 2.17.0