From: Mark Wielaard Date: Tue, 13 May 2025 22:13:06 +0000 (+0200) Subject: Don't count closed inherited file descriptors X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=29a5fcb3f6371584f89f9b54c793cc0f29802553;p=thirdparty%2Fvalgrind.git Don't count closed inherited file descriptors Programs which close some inherited file descriptors and are run under valgrind with -q and --track-fds=yes would still show the FILE DESCRIPTORS banner even if there were no non-inherited file descriptors still open. Fix this by not counting already closed inherited file descriptors. Add a simple testcase to show /usr/bin/cat /dev/null doesn't produce any output running under valgrind -q --track-fds=yes. https://bugs.kde.org/show_bug.cgi?id=504177 --- diff --git a/NEWS b/NEWS index 460eb5656..a1833ad40 100644 --- a/NEWS +++ b/NEWS @@ -28,6 +28,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 503677 duplicated-cond compiler warning in dis_RV64M 503817 s390x: fix 'ordered comparison of pointer with integer zero' compiler warnings 503914 mount syscall param filesystemtype may be NULL +504177 FILE DESCRIPTORS banner shows when closing some inherited fds To see details of a given bug, visit https://bugs.kde.org/show_bug.cgi?id=XXXXXX diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index 82a682a5c..81c8fc028 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -987,7 +987,7 @@ void VG_(show_open_fds) (const HChar* when) int inherited = 0; for (i = allocated_fds; i; i = i->next) { - if (i->where == NULL) + if (i->where == NULL && !i->fd_closed) inherited++; } diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am index 043454828..bebc2f4dd 100644 --- a/none/tests/Makefile.am +++ b/none/tests/Makefile.am @@ -140,6 +140,7 @@ EXTRA_DIST = \ execve.vgtest execve.stdout.exp execve.stderr.exp \ faultstatus.vgtest faultstatus.stderr.exp faultstatus.stderr.exp-s390x \ fcntl_setown.vgtest fcntl_setown.stdout.exp fcntl_setown.stderr.exp \ + fdleak_cat.vgtest fdleak_cat.stderr.exp \ fdleak_cmsg.stderr.exp fdleak_cmsg.vgtest \ fdleak_cmsg_xml.stderr.exp-ppc64le \ fdleak_cmsg_xml.stderr.exp fdleak_cmsg_xml.vgtest \ diff --git a/none/tests/fdleak_cat.stderr.exp b/none/tests/fdleak_cat.stderr.exp new file mode 100644 index 000000000..e69de29bb diff --git a/none/tests/fdleak_cat.vgtest b/none/tests/fdleak_cat.vgtest new file mode 100644 index 000000000..11a618d85 --- /dev/null +++ b/none/tests/fdleak_cat.vgtest @@ -0,0 +1,3 @@ +prog: /usr/bin/cat +vgopts: -q --track-fds=yes +args: /dev/null