]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Don't count closed inherited file descriptors
authorMark Wielaard <mark@klomp.org>
Tue, 13 May 2025 22:13:06 +0000 (00:13 +0200)
committerMark Wielaard <mark@klomp.org>
Tue, 13 May 2025 22:13:06 +0000 (00:13 +0200)
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

NEWS
coregrind/m_syswrap/syswrap-generic.c
none/tests/Makefile.am
none/tests/fdleak_cat.stderr.exp [new file with mode: 0644]
none/tests/fdleak_cat.vgtest [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 460eb56569b212b70817d41fdd53325610bf640b..a1833ad409e39b1d69b9160cb0b5f1d227187646 100644 (file)
--- 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
index 82a682a5ce554935e03a25c78ecd90a18be827b8..81c8fc028d8834ee6a5b1a741f767357c589ee0c 100644 (file)
@@ -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++;
    }
 
index 043454828a993ed6ec3f21daeeff5110f30c36cb..bebc2f4dd1954c8e63b7afb3e90362e1f93e736b 100644 (file)
@@ -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 (file)
index 0000000..e69de29
diff --git a/none/tests/fdleak_cat.vgtest b/none/tests/fdleak_cat.vgtest
new file mode 100644 (file)
index 0000000..11a618d
--- /dev/null
@@ -0,0 +1,3 @@
+prog: /usr/bin/cat
+vgopts: -q --track-fds=yes
+args: /dev/null