]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Improve none/tests/double_close_range test and filter_fdleak
authorAlexandra Hájková <ahajkova@redhat.com>
Thu, 23 May 2024 08:46:26 +0000 (04:46 -0400)
committerMark Wielaard <mark@klomp.org>
Fri, 14 Jun 2024 23:39:49 +0000 (01:39 +0200)
Adjust none/tests/file_dclose, none/tests/fdleak_ipv4
and socket_close to fit the changes in filter_fdleak.

https://bugs.kde.org/show_bug.cgi?id=488441

none/tests/double_close_range.c
none/tests/double_close_range.stderr.exp
none/tests/double_close_range.vgtest
none/tests/fdleak_ipv4.stderr.exp
none/tests/file_dclose.stderr.exp
none/tests/filter_fdleak
none/tests/socket_close.stderr.exp

index 62395933017c8589c8cd963b3ccd9807e43808ec..5c593fd112287825df60cf4347a516148a77a2c8 100644 (file)
@@ -9,6 +9,8 @@
 
 int main ()
 {
+   // Create a new file descriptor that we immediately close.
+   // This is of course fine.
    int fd = dup (2);
    if (fd != -1){
       fprintf(stderr, "close fd %d\n", fd);
@@ -16,11 +18,18 @@ int main ()
    }
    
    // Shouldn't warn, we are closing everything
+   // This is a special case for close_range if the last
+   // argument is ~0U (infinity).
    fprintf(stderr, "Closing range (%d, %d).\n", fd, ~0U);
-   close_range(6, ~0U, 0);
+   close_range(fd, ~0U, 0);
 
-   // Should warn, we close a small range (but only for fd itself
-   fprintf(stderr, "Closing range (%d, %d).\n", fd, 7);
+   int fd5 = dup2(1, 5);
+   int fd7 = dup2(2, 7);
+   fprintf(stderr, "Closing range (%d, %d).\n", fd5, fd7);
+   close_range(5, 7, 0);
+
+   // Should warn, we close a small range
+   fprintf(stderr, "Double closing range (%d, %d).\n", fd5, fd7);
    close_range(5, 7, 0);
 
    return 0;
index f1b78ea1dddf2d40b59fd87db2ab89376b2d4994..eeb599bf247ec18fb700e8139cfcf510519d629d 100644 (file)
@@ -1,3 +1,22 @@
 close fd 3
 Closing range (3, -1).
-Closing range (3, 7).
+Closing range (5, 7).
+Double closing range (5, 7).
+File descriptor ...: ... is already closed
+   at 0x........: close_range (in /...libc...)
+   by 0x........: main
+ Previously closed
+   at 0x........: close_range (in /...libc...)
+   by 0x........: main
+ Originally opened
+   at 0x........: dup2 (in /...libc...)
+   by 0x........: main
+File descriptor ...: ... is already closed
+   at 0x........: close_range (in /...libc...)
+   by 0x........: main
+ Previously closed
+   at 0x........: close_range (in /...libc...)
+   by 0x........: main
+ Originally opened
+   at 0x........: dup2 (in /...libc...)
+   by 0x........: main
index 8320d03f9a38c30448d2621ee01a552edb375696..e47ee50d15073bb2624d84744831f8accf629c13 100644 (file)
@@ -1,3 +1,4 @@
 prog: double_close_range
 prereq: test -x double_close_range
+stderr_filter: filter_fdleak
 vgopts: -q --track-fds=yes
index 9612ef72ac9a897474e5e2aa5db4e12735a9c7cd..801b0279f811f8a28bf70851877718fcf6065d72 100644 (file)
@@ -1,5 +1,5 @@
 
-File descriptor 4: AF_INET socket 4: 127.0.0.1:... <-> 127.0.0.1:... is already closed
+File descriptor ...: ... is already closed
    at 0x........: close (in /...libc...)
    by 0x........: client (fdleak_ipv4.c:70)
    by 0x........: main
index 26721e6f56c83b44afe342abeaf56663d9088f38..c2c8c80ed253e09ed517cb683f796f1402f4853a 100644 (file)
@@ -1,6 +1,6 @@
 close 3
 time passes and we close 3 again
-File descriptor 3: file_dclose.tmp is already closed
+File descriptor ...: ... is already closed
    at 0x........: close (in /...libc...)
    by 0x........: closefile (file_dclose.c:17)
    by 0x........: main
index f7cb026ed577842e907ba6b3f667a81d3ecb8744..d26937bccd385e91a90c9c600ba188b6ada83921 100755 (executable)
@@ -13,6 +13,7 @@ perl -p -e 's/^Open (AF_UNIX socket|file descriptor) [0-9]*: \/devices\/pseudo\/
 perl -p -e 's/^Open (AF_UNIX socket|file descriptor) [0-9]*: (\/private)?\/tmp\/(sock|data1|data2|file)\.[0-9]*/Open $1 ...: \/tmp\/$3/' |
 perl -p -e 's/^Open file descriptor [0-9]*: .*/Open file descriptor ...: .../' |
 perl -p -e 's/^Open file descriptor [0-9]*:$/Open file descriptor ...:/' |
+perl -p -e 's/File descriptor [0-9]*: .* is already closed/File descriptor ...: ... is already closed/' |
 perl -p -e 's/127.0.0.1:[0-9]*/127.0.0.1:.../g' |
 perl -p -e 's/socket\.c:[1-9][0-9]*/in \/...libc.../' |
 # arm systems substitute open for creat
@@ -42,7 +43,9 @@ perl -p -0 -e 's/(Open[^\n]*\n)(   (at|by)[^\n]*\n)+/$1   ...\n/gs' |
 sed "s/by 0x........: (below main)/by 0x........: main/" |
 sed "s/by 0x........: main (.*)/by 0x........: main/" |
 
-# With glibc debuginfo installed we might see syscall-template.S, close.c or creat64.c
+# With glibc debuginfo installed we might see syscall-template.S,
+# dup2.c close.c or creat64.c
 perl -p -e "s/\(syscall-template.S:[0-9]*\)/(in \/...libc...)/" |
 perl -p -e "s/\(close.c:[0-9]*\)/(in \/...libc...)/" |
-perl -p -e "s/\(creat(?:64)?.c:[0-9]*\)/(in \/...libc...)/"
+perl -p -e "s/\(creat(?:64)?.c:[0-9]*\)/(in \/...libc...)/" |
+perl -p -e "s/\(dup2.c:[0-9]*\)/(in \/...libc...)/"
index 5352390dd97911a9670b1ae9127f908e5fe52da6..e7435e8aa6a44d99f9318a9ee30e5dbb31718776 100644 (file)
@@ -1,7 +1,7 @@
 Open socket 3
 close socket_fd 3
 and close the socket again 3
-File descriptor 3: AF_UNIX socket 3: /tmp/vgtest-foofrob is already closed
+File descriptor ...: ... is already closed
    at 0x........: close (in /...libc...)
    by 0x........: main
  Previously closed