From: Mark W. <ma...@so...> - 2025-05-14 18:38:47
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=46c50747724c70c4200257361b55ebb615a2fb35 commit 46c50747724c70c4200257361b55ebb615a2fb35 Author: Mark Wielaard <ma...@kl...> Date: Wed May 14 00:13:06 2025 +0200 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 (cherry picked from commit 29a5fcb3f6371584f89f9b54c793cc0f29802553) Diff: --- NEWS | 1 + coregrind/m_syswrap/syswrap-generic.c | 2 +- none/tests/Makefile.am | 1 + none/tests/fdleak_cat.stderr.exp | 0 none/tests/fdleak_cat.vgtest | 3 +++ 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 3f084a52be..533b008166 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ The following bugs have been fixed or resolved on this branch. 503641 close_range syscalls started failing with 3.25.0 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 82a682a5ce..81c8fc028d 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 043454828a..bebc2f4dd1 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 0000000000..e69de29bb2 diff --git a/none/tests/fdleak_cat.vgtest b/none/tests/fdleak_cat.vgtest new file mode 100644 index 0000000000..11a618d855 --- /dev/null +++ b/none/tests/fdleak_cat.vgtest @@ -0,0 +1,3 @@ +prog: /usr/bin/cat +vgopts: -q --track-fds=yes +args: /dev/null |