pgsql: Do ClosePostmasterPorts() earlier in SubPostmasterMain().

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Do ClosePostmasterPorts() earlier in SubPostmasterMain().
Date: 2016-10-01 21:15:32
Message-ID: E1bqRd6-00067B-Bw@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Do ClosePostmasterPorts() earlier in SubPostmasterMain().

In standard Unix builds, postmaster child processes do ClosePostmasterPorts
immediately after InitPostmasterChild, that is almost immediately after
being spawned. This is important because we don't want children holding
open the postmaster's end of the postmaster death watch pipe.

However, in EXEC_BACKEND builds, SubPostmasterMain was postponing this
responsibility significantly, in order to make it slightly more convenient
to pass the right flag value to ClosePostmasterPorts. This is bad,
particularly seeing that process_shared_preload_libraries() might invoke
nearly-arbitrary code. Rearrange so that we do it as soon as we've
fetched the socket FDs via read_backend_variables().

Also move the comment explaining about randomize_va_space to before the
call of PGSharedMemoryReAttach, which is where it's relevant. The old
placement was appropriate when the reattach happened inside
CreateSharedMemoryAndSemaphores, but that was a long time ago.

Back-patch to 9.3; the patch doesn't apply cleanly before that, and
it doesn't seem worth a lot of effort given that we've had no actual
field complaints traceable to this.

Discussion: <4157(dot)1475178360(at)sss(dot)pgh(dot)pa(dot)us>

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/3b90e38c5d592ea8ec8236287dd5c749fc041728

Modified Files
--------------
src/backend/postmaster/postmaster.c | 57 ++++++++++++-------------------------
1 file changed, 18 insertions(+), 39 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2016-10-02 12:49:48 Re: pgsql: Add putenv support for msvcrt from Visual Studio 2013
Previous Message Tom Lane 2016-10-01 20:33:02 pgsql: Fix bugs in contrib/pg_visibility.