]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merged r9657 (fdleak fixes) from the DARWIN branch.
authorNicholas Nethercote <njn@valgrind.org>
Tue, 28 Apr 2009 05:35:53 +0000 (05:35 +0000)
committerNicholas Nethercote <njn@valgrind.org>
Tue, 28 Apr 2009 05:35:53 +0000 (05:35 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9658

22 files changed:
coregrind/m_libcfile.c
coregrind/m_syswrap/syswrap-generic.c
none/tests/fdleak.h
none/tests/fdleak_cmsg.c
none/tests/fdleak_cmsg.stderr.exp
none/tests/fdleak_creat.c
none/tests/fdleak_creat.stderr.exp
none/tests/fdleak_dup.c
none/tests/fdleak_dup.stderr.exp
none/tests/fdleak_dup2.c
none/tests/fdleak_dup2.stderr.exp
none/tests/fdleak_fcntl.c
none/tests/fdleak_fcntl.stderr.exp
none/tests/fdleak_ipv4.c
none/tests/fdleak_ipv4.stderr.exp
none/tests/fdleak_open.c
none/tests/fdleak_open.stderr.exp
none/tests/fdleak_pipe.c
none/tests/fdleak_pipe.stderr.exp
none/tests/fdleak_socketpair.c
none/tests/fdleak_socketpair.stderr.exp
none/tests/filter_fdleak

index 4d6cb4cded541ed29eebd9618393e5a3c29741aa..d60c552d136f94ddcb7910260c3a4c2b8ce4834c 100644 (file)
@@ -74,15 +74,20 @@ Int VG_(safe_fd)(Int oldfd)
    or if it doesn't exist, we return False. */
 Bool VG_(resolve_filename) ( Int fd, HChar* buf, Int n_buf )
 {
+#  if defined(VGO_linux)
    HChar tmp[64];
-
    VG_(sprintf)(tmp, "/proc/self/fd/%d", fd);
    VG_(memset)(buf, 0, n_buf);
-
    if (VG_(readlink)(tmp, buf, n_buf) > 0 && buf[0] == '/')
       return True;
    else
       return False;
+#  elif defined(VGO_aix5)
+   I_die_here; /* maybe just return False? */
+   return False;
+#  else
+#     error "need fd-to-filename for this OS"
+#  endif
 }
 
 SysRes VG_(open) ( const Char* pathname, Int flags, Int mode )
index 8c94971bf1327f5ca981787b1f7bfe92c3909fb2..3a2cf5d54842920bd1a3086df7e2664b68a4e74c 100644 (file)
@@ -704,13 +704,12 @@ void VG_(show_open_fds) (void)
    VG_(message)(Vg_UserMsg, "");
 }
 
-/* If /proc/self/fd doesn't exist for some weird reason (like you've
-   got a kernel that doesn't have /proc support compiled in), then we
-   need to find out what file descriptors we inherited from our parent
-   process the hard way - by checking each fd in turn. */
-
+/* If /proc/self/fd doesn't exist (e.g. you've got a Linux kernel that doesn't
+   have /proc support compiled in, or a non-Linux kernel), then we need to
+   find out what file descriptors we inherited from our parent process the
+   hard way - by checking each fd in turn. */
 static
-void do_hacky_preopened(void)
+void init_preopened_fds_without_proc_self_fd(void)
 {
    struct vki_rlimit lim;
    UInt count;
@@ -719,15 +718,15 @@ void do_hacky_preopened(void)
    if (VG_(getrlimit) (VKI_RLIMIT_NOFILE, &lim) == -1) {
       /* Hmm.  getrlimit() failed.  Now we're screwed, so just choose
          an arbitrarily high number.  1024 happens to be the limit in
-         the 2.4 kernels. */
+         the 2.4 Linux kernels. */
       count = 1024;
    } else {
       count = lim.rlim_cur;
    }
 
    for (i = 0; i < count; i++)
-      if(VG_(fcntl)(i, VKI_F_GETFL, 0) != -1)
-         ML_(record_fd_open_nameless)(-1, i);
+      if (VG_(fcntl)(i, VKI_F_GETFL, 0) != -1)
+         ML_(record_fd_open_named)(-1, i);
 }
 
 /* Initialize the list of open file descriptors with the file descriptors
@@ -735,13 +734,15 @@ void do_hacky_preopened(void)
 
 void VG_(init_preopened_fds)(void)
 {
+// Nb: AIX5 is handled in syswrap-aix5.c.
+#if defined(VGO_linux)
    Int ret;
    struct vki_dirent d;
    SysRes f;
 
    f = VG_(open)("/proc/self/fd", VKI_O_RDONLY, 0);
    if (f.isError) {
-      do_hacky_preopened();
+      init_preopened_fds_without_proc_self_fd();
       return;
    }
 
@@ -767,6 +768,10 @@ void VG_(init_preopened_fds)(void)
 
   out:
    VG_(close)(f.res);
+
+#else
+#  error Unknown OS
+#endif
 }
 
 static
@@ -1989,6 +1994,7 @@ PRE(sys_exit)
 
 PRE(sys_ni_syscall)
 {
+   // Nb: AIX5 is handled in syswrap-aix5.c.
    PRINT("non-existent syscall! (ni_syscall)");
    PRE_REG_READ0(long, "ni_syscall");
    SET_STATUS_Failure( VKI_ENOSYS );
index bbe94914b7c4921d82bba3f149040083452b51b8..66fd84e96f7539ecafae3e7c84addd77efe313b6 100644 (file)
@@ -1,6 +1,19 @@
 #ifndef _FDLEAK_H_
 #define _FDLEAK_H_
 
+#include <stdlib.h>
+#include <stdio.h>
+
+#define DO(op) \
+   ({ \
+      long res = op; \
+      if (res < 0) { \
+         perror(#op); \
+         exit(1); \
+      }; \
+      res; \
+   })
+
 /*
  * The macro below closes file descriptors inherited from the process
  * that forked the current process. Close these file descriptors right
index a061b23fdad1755440b2a8fd0e8c00e88bf3a1ad..3a36a96f5fc11c643254bf3c32a373baac72b7a1 100644 (file)
@@ -33,44 +33,22 @@ char filea[24];
 char fileb[24];
 char sock[24];
 
-void
-server (void)
+void server (void)
 {
    int s, fd1, fd2;
    struct sockaddr_un addr;
    
-   fd1 = open(filea, O_RDWR | O_CREAT | O_TRUNC, 0750);
-   if(fd1 == -1) {
-      perror("open");
-      exit(1);
-   }
-
-   fd2 = open(fileb, O_RDWR | O_CREAT | O_TRUNC, 0750);
-   if(fd2 == -1) {
-      perror("open");
-      exit(1);
-   }
-
-   s = socket(PF_UNIX, SOCK_STREAM, 0);
-   if(s == -1) {
-      perror("socket");
-      exit(1);
-   }
+   fd1 = DO( open(filea, O_RDWR | O_CREAT | O_TRUNC, 0750) );
+   fd2 = DO( open(fileb, O_RDWR | O_CREAT | O_TRUNC, 0750) );
+   s   = DO( socket(PF_UNIX, SOCK_STREAM, 0) );
 
    memset(&addr, 0, sizeof(addr));
    addr.sun_family = AF_UNIX;
    sprintf(addr.sun_path, "%s", sock);
 
-   unlink(addr.sun_path);
-   if(bind(s, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
-      perror("bind");
-      exit(1);
-   }
-
-   if(listen(s, 5) == -1) {
-      perror("listen");
-      exit(1);
-   }
+   unlink(sock);
+   DO( bind(s, (struct sockaddr *)&addr, sizeof(addr)) );
+   DO( listen(s, 5) );
 
    {
       int x;
@@ -82,11 +60,7 @@ server (void)
       struct iovec iov[1];
 
       memset(&baddr, 0, sizeof(baddr));
-      x = accept(s, (struct sockaddr *)&baddr, &baddrsize);
-      if(x == -1) {
-         perror("accept");
-         exit(1);
-      }
+      x = DO( accept(s, (struct sockaddr *)&baddr, &baddrsize) );
 
       msg.msg_control = buf;
       msg.msg_controllen = sizeof(buf);
@@ -103,15 +77,11 @@ server (void)
       msg.msg_iov = iov;
       msg.msg_iovlen = 1;
 
-      if(sendmsg(x, &msg, 0) == -1) {
-         perror("sendmsg");
-         exit(1);
-      }
+      DO( sendmsg(x, &msg, 0) );
    }
 }
 
-void
-client (void)
+void client (void)
 {
    int s, fd1 = -1, fd2 = -1, size, count = 0, ret;
    struct sockaddr_un addr;
@@ -129,7 +99,7 @@ client (void)
    iov[0].iov_len = sizeof(buf);
 
    s = socket(PF_UNIX, SOCK_STREAM, 0);
-   if(s == -1) {
+   if (s == -1) {
       perror("socket");
       exit(1);
    }
@@ -140,16 +110,16 @@ client (void)
    do {
      count++;
      ret = connect(s, (struct sockaddr *)&addr, sizeof(addr));
-     if(ret == -1) sleep(1);
+     if (ret == -1) sleep(1);
    } while (count < 10 && ret == -1);
 
-   if(ret == -1) {
+   if (ret == -1) {
       perror("connect");
       exit(1);
    }
 
   again:
-   if((size = recvmsg(s, &msg, 0)) == -1) {
+   if ((size = recvmsg(s, &msg, 0)) == -1) {
       if (errno == EINTR)
         goto again;            /* SIGCHLD from server exiting could interrupt */
       perror("recvmsg");
@@ -158,8 +128,8 @@ client (void)
 
 
    cmsg = CMSG_FIRSTHDR(&msg);
-   while(cmsg) {
-      if(cmsg->cmsg_level == SOL_SOCKET &&
+   while (cmsg) {
+      if (cmsg->cmsg_level == SOL_SOCKET &&
          cmsg->cmsg_type == SCM_RIGHTS &&
          cmsg->cmsg_len == CMSG_LEN(sizeof(int) * 2)) {
          fd1 = ((int *)CMSG_DATA(cmsg))[0];
@@ -169,21 +139,15 @@ client (void)
       cmsg = CMSG_NXTHDR(&msg, cmsg);
    }
 
-   if(fd1 != -1) write(fd1, "Yeah 1\n", 8);
-   if(fd2 != -1) write(fd2, "Yeah 2\n", 8);
+   if (fd1 != -1) write(fd1, "Yeah 1\n", 8);
+   if (fd2 != -1) write(fd2, "Yeah 2\n", 8);
 }
 
 
-int
-main (int argc, char **argv)
+int main (int argc, char **argv)
 {
    int pid, status;
 
-
-
-
-
-
    CLOSE_INHERITED_FDS;
 
    pid = getpid();
@@ -191,7 +155,7 @@ main (int argc, char **argv)
    sprintf(fileb, "/tmp/data2.%d", pid);
    sprintf(sock, "/tmp/sock.%d", pid);
 
-   if((pid = fork()) == 0) {
+   if ((pid = fork()) == 0) {
       server();
       return 0;
    }
@@ -200,8 +164,8 @@ main (int argc, char **argv)
 
    wait(&status);
 
-   unlink(filea);
-   unlink(fileb);
-   unlink(sock);
+   DO( unlink(filea) );
+   DO( unlink(fileb) );
+   DO( unlink(sock) );
    return 0;
 }
index d9328b97ffd6f4ae68b6810d8378139e075b073b..6e5a797b9f471659bc76b444a8d9cda7ddc247b2 100644 (file)
@@ -1,46 +1,46 @@
 
 
 FILE DESCRIPTORS: 7 open at exit.
-Open AF_UNIX socket .: /tmp/sock
+Open AF_UNIX socket ...: /tmp/sock
    ...
 
-Open AF_UNIX socket .: /tmp/sock
+Open AF_UNIX socket ...: /tmp/sock
    ...
 
-Open file descriptor .: /tmp/data2
+Open file descriptor ...: /tmp/data2
    ...
 
-Open file descriptor .: /tmp/data1
+Open file descriptor ...: /tmp/data1
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
 
 FILE DESCRIPTORS: 6 open at exit.
-Open file descriptor .: /tmp/data2
+Open file descriptor ...: /tmp/data2
    ...
 
-Open file descriptor .: /tmp/data1
+Open file descriptor ...: /tmp/data1
    ...
 
-Open AF_UNIX socket .: <unknown>
+Open AF_UNIX socket ...: <unknown>
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
index 7f3fd72e90735e4f654ed1788d6d92e63aff094b..c4debc4a684bd5e3152b2d2a259f1863918eb66d 100644 (file)
@@ -2,20 +2,15 @@
 #include <stdio.h>
 #include <fcntl.h>
 #include "fdleak.h"
-int
-main (int argc, char **argv)
+
+int main (int argc, char **argv)
 {
    char filename[24];
-   
-
-
-
-
 
    CLOSE_INHERITED_FDS;
 
    sprintf(filename, "/tmp/file.%d", getpid());
-   creat(filename, 0);
-   unlink(filename);
+   DO( creat(filename, 0) );
+   DO( unlink(filename) );
    return 0;
 }
index c3dcd75be43f7153e43a63960c197ab723085a65..e7a6e918af8fc6c79642f1eef287cd58223159ec 100644 (file)
@@ -1,16 +1,16 @@
 
 
 FILE DESCRIPTORS: 4 open at exit.
-Open file descriptor .: /tmp/file
+Open file descriptor ...: /tmp/file
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
index 5fbf41a9558f25c9cadb254d8e6c4159c182d04c..9136376176223d1a7016da2b5c18084ad8f46163 100644 (file)
@@ -1,19 +1,15 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include "fdleak.h"
-int
-main (int argc, char **argv)
+
+int main (int argc, char **argv)
 {
    int s;
 
-
-
-
-
-
    CLOSE_INHERITED_FDS;
 
-   s = open("/dev/null", O_RDONLY);
-   dup(s);
+   s = DO( open("/dev/null", O_RDONLY) );
+   DO( dup(s) );
+
    return 0;
 }
index 50c5cd4e08b6ad2ddc1324458537f6dddbbaa5ce..7737a7d9dc374fd4ddf21d340fa0376144a00587 100644 (file)
@@ -1,19 +1,19 @@
 
 
 FILE DESCRIPTORS: 5 open at exit.
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    ...
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
index 41b770cc75cb10d7c92b5202040899ff12a8c495..e78b48e1f239bdad64bf782f013c9dbc7afca7b2 100644 (file)
@@ -1,23 +1,19 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include "fdleak.h"
-int
-main (int argc, char **argv)
+
+int main (int argc, char **argv)
 {
    int s1;
    int s2;
 
-
-
-
-
-
    CLOSE_INHERITED_FDS;
 
-   s1 = open("/dev/null", O_RDONLY);
-   s2 = open("/dev/null", O_RDONLY);
+   s1 = DO( open("/dev/null", O_RDONLY) );
+   s2 = DO( open("/dev/null", O_RDONLY) );
+
+   DO( dup2(s1, 20) );  // dup s1 as fd 20
+   DO( dup2(s1, s2) );  // dup s1 as fd s2, which closes existing s2 fd
 
-   dup2(s1, 20);
-   dup2(s1, s2);
    return 0;
 }
index ab5bbba4019c8b04220cc4731bfb04fc5e6baa36..98d61a92a41b2df9156d2305cd705ee919b10deb 100644 (file)
@@ -1,22 +1,22 @@
 
 
 FILE DESCRIPTORS: 6 open at exit.
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    ...
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    ...
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
index 0a1f52d74af839c3ea9fbd60c17edf560dced14e..3d776b47a5e5c400e24762ae17dcd1387d598db6 100644 (file)
@@ -2,19 +2,15 @@
 #include <stdio.h>
 #include <fcntl.h>
 #include "fdleak.h"
-int
-main (int argc, char **argv)
+
+int main (int argc, char **argv)
 {
    int s1;
 
-
-
-
-
-
    CLOSE_INHERITED_FDS;
 
-   s1 = open("/dev/null", O_RDONLY);
-   if(fcntl(s1, F_DUPFD, s1) == -1) perror("fcntl");
+   s1 = DO( open("/dev/null", O_RDONLY) );
+   DO( fcntl(s1, F_DUPFD, s1) );
+
    return 0;
 }
index 50c5cd4e08b6ad2ddc1324458537f6dddbbaa5ce..7737a7d9dc374fd4ddf21d340fa0376144a00587 100644 (file)
@@ -1,19 +1,19 @@
 
 
 FILE DESCRIPTORS: 5 open at exit.
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    ...
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
index cdc550dfb746a34954a535c2c8b019e114a0a63e..f595d6f64f6252382eee897994c3b4ef822208ab 100644 (file)
@@ -9,59 +9,40 @@
 #include <stdlib.h>
 #include <string.h>
 #include "fdleak.h"
-void
-server ()
+
+void server ()
 {
    int s, x;
    struct sockaddr_in baddr;
    struct sockaddr_in addr;
-   int baddrsize = sizeof(baddr);
+   socklen_t baddrsize = sizeof(baddr);
    int one = 1;
    
-   s = socket(PF_INET, SOCK_STREAM, 0);
-   if(s == -1) {
-      perror("socket");
-      exit(1);
-   }
+   s = DO( socket(PF_INET, SOCK_STREAM, 0) );
 
-   setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int));
+   DO( setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int)) );
    memset(&addr, 0, sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    addr.sin_port = 12321;
 
-   if(bind(s, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
-      perror("bind");
-      exit(1);
-   }
+   DO( bind(s, (struct sockaddr *)&addr, sizeof(addr)) );
 
-   if(listen(s, 5) == -1) {
-      perror("listen");
-      exit(1);
-   }
+   DO( listen(s, 5) );
 
    memset(&baddr, 0, sizeof(baddr));
-   x = accept(s, (struct sockaddr *)&baddr, &baddrsize);
-   if(x == -1) {
-      perror("accept");
-      exit(1);
-   }
+   x = DO( accept(s, (struct sockaddr *)&baddr, &baddrsize) );
 
-   write(x, "hello", 6);
+   DO( write(x, "hello", 6) );
 }
 
-void
-client ()
+void client ()
 {
    int s, count = 0, ret;
    struct sockaddr_in addr;
    char buf[1024];
 
-   s = socket(PF_INET, SOCK_STREAM, 0);
-   if(s == -1) {
-      perror("socket");
-      exit(1);
-   }
+   s = DO( socket(PF_INET, SOCK_STREAM, 0) );
 
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
@@ -70,33 +51,27 @@ client ()
    do {
      count++;
      ret = connect(s, (struct sockaddr *)&addr, sizeof(addr));
-     if(ret == -1) sleep(1);
+     if (ret == -1) sleep(1);
    } while (count < 10 && ret == -1);
 
-   if(ret == -1) {
+   if (ret == -1) {
       perror("connect");
       exit(1);
    }
 
-   read(s, buf, sizeof(buf));
+   DO( read(s, buf, sizeof(buf)) );
 
    printf("%s\n", buf);
 }
 
 
-int
-main (int argc, char **argv)
+int main (int argc, char **argv)
 {
    int pid, status;
 
-
-
-
-
-
    CLOSE_INHERITED_FDS;
 
-   if((pid = fork()) == 0) {
+   if ((pid = fork()) == 0) {
       server();
       return 0;
    }
index 773080dcda0d17db9d2a72d6bada6499ebebcb38..80c62019f1e6cb8180cc7fdaab467421ce1be8da 100644 (file)
@@ -7,13 +7,13 @@ Open AF_INET socket 4: 127.0.0.1:... <-> 127.0.0.1:...
 Open AF_INET socket 3: 127.0.0.1:... <-> unbound
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
@@ -22,13 +22,13 @@ FILE DESCRIPTORS: 4 open at exit.
 Open AF_INET socket 3: 127.0.0.1:... <-> 127.0.0.1:...
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
index c09979886df54af27a23b08ba64a6e6d2b0c4e7c..d477b3be7af2c578b7db30fccfc03896ef1cccd0 100644 (file)
@@ -2,14 +2,11 @@
 #include <unistd.h>
 #include "fdleak.h"
 
-int
-main (int argc, char **argv)
+int main (int argc, char **argv)
 {
-
-
-
    CLOSE_INHERITED_FDS;
 
-   open("/dev/null", O_RDONLY);
+   DO( open("/dev/null", O_RDONLY) );
+
    return 0;
 }
index ae14b421d5f1fba370f8dbe23367455aef9aab3f..948ed97d4ec1fa367a24014239fafdeb6ccb4ace 100644 (file)
@@ -1,16 +1,16 @@
 
 
 FILE DESCRIPTORS: 4 open at exit.
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
index 870ba9d3a417b9a266ecffac1fd7924a82f5b1c5..bff4588d8f53735126b4fd6ce87a89cbf9f864a2 100644 (file)
@@ -1,17 +1,13 @@
 #include <unistd.h>
 #include "fdleak.h"
-int
-main (int argc, char **argv)
+
+int main (int argc, char **argv)
 {
    int fds[2];
 
-
-
-
-
-
    CLOSE_INHERITED_FDS;
 
-   pipe(fds);
+   DO( pipe(fds) );
+
    return 0;
 }
index a265af5c9c29814a0a157869a9e0b7000a1d7d20..832fd7e11c903ded058fda95ff91d4a384c0640b 100644 (file)
@@ -1,19 +1,19 @@
 
 
 FILE DESCRIPTORS: 5 open at exit.
-Open file descriptor .:
+Open file descriptor ...:
    ...
 
-Open file descriptor .:
+Open file descriptor ...:
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
index c2524eef2b157b90e43ae1a7c171a420d9b79945..45b75cce928e87326aa9329473cb4bb43d141056 100644 (file)
@@ -1,17 +1,15 @@
 #include <sys/socket.h>
 #include <unistd.h>
 #include "fdleak.h"
+#include <sys/errno.h>
 
-int
-main (int argc, char **argv)
+int main (int argc, char **argv)
 {
    int fds[2];
 
-
-
-
    CLOSE_INHERITED_FDS;
 
-   socketpair(AF_UNIX, SOCK_STREAM, PF_UNIX, fds);
+   DO( socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, fds) );
+
    return 0;
 }
index 666c56f805f31a36d7694df97ee999f8ca7e5aef..377b1318eef942cd7aa9734205e3f687fba3cf85 100644 (file)
@@ -1,19 +1,19 @@
 
 
 FILE DESCRIPTORS: 5 open at exit.
-Open AF_UNIX socket .: <unknown>
+Open AF_UNIX socket ...: <unknown>
    ...
 
-Open AF_UNIX socket .: <unknown>
+Open AF_UNIX socket ...: <unknown>
    ...
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor ..
+Open file descriptor ...: ...
    <inherited from parent>
 
-Open file descriptor .: /dev/null
+Open file descriptor ...: /dev/null
    <inherited from parent>
 
 
index 51f4b5f9fa5e442ba6157e1cbd3e0b5d9530d149..bb1ef42994b9ae6791c0f2080337693d2a0edacc 100755 (executable)
@@ -2,14 +2,16 @@
 
 dir=`dirname $0`
 
-./filter_stderr                    |
+./filter_stderr |
 
-sed s/"^Open AF_UNIX socket [0-9]*: <unknown>/Open AF_UNIX socket .: <unknown>/" |
-sed s/"^Open \(AF_UNIX socket\|file descriptor\) [0-9]*: \/dev\/null/Open \\1 .: \/dev\/null/" |
-sed s/"^Open \(AF_UNIX socket\|file descriptor\) [0-9]*: \/tmp\/\(sock\|data1\|data2\|file\)\.[0-9]*/Open \\1 .: \/tmp\/\\2/" |
-sed s/"^Open file descriptor [0-9]*: .*/Open file descriptor .: ./" |
-sed s/"^Open file descriptor [0-9]*:$/Open file descriptor .:/" |
-sed s/"127.0.0.1:[0-9]*/127.0.0.1:.../g" |
+perl -p -e 's/^Open AF_UNIX socket [0-9]*: <unknown>/Open AF_UNIX socket ...: <unknown>/' |
+perl -p -e 's/^Open (AF_UNIX socket|file descriptor) [0-9]*: \/dev\/null/Open $1 ...: \/dev\/null/' |
+# Nb: on Darwin, /tmp is a symlink to /private/tmp, so sometimes it's
+# necessary to filter out the "/private" part.
+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/127.0.0.1:[0-9]*/127.0.0.1:.../g' |
 
 # Stack traces showing where fds were created have lots of variations:
 # different numbers of entries, line numbers or not depending on whether