• Tom Lane's avatar
    In count_usable_fds(), duplicate stderr not stdin. · 6b54f123
    Tom Lane authored
    We had a complaint that the postmaster fails to start if the invoking
    program closes stdin.  That happens because count_usable_fds expects
    to be able to dup(0), and if it can't, we conclude there are no free
    FDs and go belly-up.  So far as I can find, though, there is no other
    place in the server that touches stdin, and it's not unreasonable to
    expect that a daemon wouldn't use that file.
    
    As a simple improvement, let's dup FD 2 (stderr) instead.  Unlike stdin,
    it *is* reasonable for us to expect that stderr be open; even if we are
    configured not to touch it, common libraries such as libc might try to
    write error messages there.
    
    Per gripe from Mario Emmenlauer.  Given the lack of previous complaints,
    I'm not excited about pushing this into stable branches, but it seems
    OK to squeeze it into v14.
    
    Discussion: https://postgr.es/m/48bafc63-c30f-3962-2ded-f2e985d93e86@emmenlauer.de
    6b54f123
fd.c 99.4 KB