RFR: 8361873: [GCC static analyzer] exec_md.c forkedChildProcess potential double 'close' of file descriptor '3'

Thomas Stuefe stuefe at openjdk.org
Sun Jul 27 06:41:01 UTC 2025


On Fri, 25 Jul 2025 23:09:48 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:

> Fix gcc warning about double close. forkedChildProcess() calls closeDescriptors(), which always closes STDERR_FILENO + 1 and STDERR_FILENO + 2. However, if it fails at some point after that, then forkedChildProcess() will attempt to close these same two files again. Fixed by making forkedChildProcess() no longer attempt to close these two files.
> 
> I first verified the warning by configuring with --with-extra-cflags=-fanalyzer, and then verified the fix by doing the same.
> 
> Tested by running jdi nsk test. I'll add some more CI testing.

Looks good to me.

Note that in the official Runtime.exec layer over in libjava, we switched to setting the filedescriptors to FD_CLOEXEC, which seems more elegant and circumvents this and some other problems.

-------------

Marked as reviewed by stuefe (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/26487#pullrequestreview-3059284460


More information about the serviceability-dev mailing list