Re: File descriptors in exec'd subprocesses
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers@lists.postgresql.org, Thomas Munro <thomas.munro@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2023-02-05T16:40:30Z
Lists: pgsql-hackers
Hi, On 2023-02-05 11:06:13 -0500, Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: > > On February 5, 2023 1:00:50 AM GMT+01:00, Thomas Munro <thomas.munro@gmail.com> wrote: > >> Are there any more descriptors we need to think about? > > > Postmaster's listen sockets? > > I wonder whether O_CLOEXEC on that would be inherited by the > client-communication sockets, though. I'd be very suprised if it were. <hack> Nope, at least not on linux. Verified by looking at /proc/*/fdinfo/n after adding SOCK_CLOEXEC to just the socket() call. 'flags' changes from 02 -> 02000002 for the listen socket, but stays at 04002 for the client socket. If I add SOCK_CLOEXEC to accept() (well, accept4()), it does change from 04002 to 02004002. Greetings, Andres Freund
Commits
-
libpq: Use modern socket flags, if available.
- bfc9497ece01 16.0 landed
-
Don't leak descriptors into subprograms.
- 1da569ca1f1f 16.0 landed
-
Remove obsolete coding for early macOS.
- a1f45f69bbfc 16.0 landed
-
Adjust commit 2dbe8905 for ancient macOS.
- 04cad8f7bcd6 15.0 cited