• Tom Lane's avatar
    Do ClosePostmasterPorts() earlier in SubPostmasterMain(). · 3b90e38c
    Tom Lane authored
    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.1475178360@sss.pgh.pa.us>
    3b90e38c
postmaster.c 171 KB