[mpich2-commits] r4091 - in mpich2/trunk/src/pm/hydra: demux include launcher/mpiexec pm/central utils/launch utils/sock utils/string

balaji at mcs.anl.gov balaji at mcs.anl.gov
Mon Mar 16 14:13:18 CDT 2009


Author: balaji
Date: 2009-03-16 14:13:17 -0500 (Mon, 16 Mar 2009)
New Revision: 4091

Modified:
   mpich2/trunk/src/pm/hydra/demux/demux.c
   mpich2/trunk/src/pm/hydra/include/hydra_utils.h
   mpich2/trunk/src/pm/hydra/launcher/mpiexec/callback.c
   mpich2/trunk/src/pm/hydra/pm/central/proxy_cb.c
   mpich2/trunk/src/pm/hydra/utils/launch/launch.c
   mpich2/trunk/src/pm/hydra/utils/sock/sock.c
   mpich2/trunk/src/pm/hydra/utils/string/string.c
Log:
Use strerror where available for better error information.


Modified: mpich2/trunk/src/pm/hydra/demux/demux.c
===================================================================
--- mpich2/trunk/src/pm/hydra/demux/demux.c	2009-03-16 18:20:16 UTC (rev 4090)
+++ mpich2/trunk/src/pm/hydra/demux/demux.c	2009-03-16 19:13:17 UTC (rev 4091)
@@ -139,7 +139,8 @@
                 status = HYD_SUCCESS;
                 goto fn_exit;
             }
-            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "poll error (errno: %d)\n", errno);
+            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "poll error (%s)\n",
+                                 HYDU_String_error(errno));
         }
         break;
     }

Modified: mpich2/trunk/src/pm/hydra/include/hydra_utils.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2009-03-16 18:20:16 UTC (rev 4090)
+++ mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2009-03-16 19:13:17 UTC (rev 4091)
@@ -100,6 +100,7 @@
 HYD_Status HYDU_String_alloc_and_join(char **strlist, char **strjoin);
 HYD_Status HYDU_String_break(char *str, char **str1, char **str2);
 HYD_Status HYDU_String_int_to_str(int x, char **str);
+char *HYDU_String_error(int error);
 
 
 /* Signal utilities */

Modified: mpich2/trunk/src/pm/hydra/launcher/mpiexec/callback.c
===================================================================
--- mpich2/trunk/src/pm/hydra/launcher/mpiexec/callback.c	2009-03-16 18:20:16 UTC (rev 4090)
+++ mpich2/trunk/src/pm/hydra/launcher/mpiexec/callback.c	2009-03-16 19:13:17 UTC (rev 4091)
@@ -20,13 +20,13 @@
 
     /* Write output to fd 1 */
     status = HYDU_Sock_stdout_cb(fd, events, 1, &closed);
-    HYDU_ERR_SETANDJUMP2(status, status, "stdout callback error on fd %d (errno: %d)\n",
-                         fd, errno);
+    HYDU_ERR_SETANDJUMP2(status, status, "stdout callback error on fd %d: %s\n",
+                         fd, HYDU_String_error(errno));
 
     if (closed) {
         status = HYD_CSI_Close_fd(fd);
-        HYDU_ERR_SETANDJUMP2(status, status, "socket close error on fd %d (errno: %d)\n",
-                             fd, errno);
+        HYDU_ERR_SETANDJUMP2(status, status, "socket close error on fd %d: %s\n",
+                             fd, HYDU_String_error(errno));
         goto fn_exit;
     }
 
@@ -48,13 +48,13 @@
 
     /* Write output to fd 2 */
     status = HYDU_Sock_stdout_cb(fd, events, 2, &closed);
-    HYDU_ERR_SETANDJUMP2(status, status, "stdout callback error on %d (errno: %d)\n",
-                         fd, errno)
+    HYDU_ERR_SETANDJUMP2(status, status, "stdout callback error on %d (%s)\n",
+                         fd, HYDU_String_error(errno))
 
     if (closed) {
         status = HYD_CSI_Close_fd(fd);
-        HYDU_ERR_SETANDJUMP2(status, status, "socket close error on fd %d (errno: %d)\n",
-                             fd, errno);
+        HYDU_ERR_SETANDJUMP2(status, status, "socket close error on fd %d (%s)\n",
+                             fd, HYDU_String_error(errno));
         goto fn_exit;
     }
 

Modified: mpich2/trunk/src/pm/hydra/pm/central/proxy_cb.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/central/proxy_cb.c	2009-03-16 18:20:16 UTC (rev 4090)
+++ mpich2/trunk/src/pm/hydra/pm/central/proxy_cb.c	2009-03-16 19:13:17 UTC (rev 4091)
@@ -34,8 +34,8 @@
     else {      /* We got a command from mpiexec */
         count = read(fd, &cmd, HYD_TMPBUF_SIZE);
         if (count < 0) {
-            HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "read error on %d (errno: %d)\n",
-                                 fd, errno);
+            HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "read error on %d (%s)\n",
+                                 fd, HYDU_String_error(errno));
         }
         else if (count == 0) {
             /* The connection has closed */

Modified: mpich2/trunk/src/pm/hydra/utils/launch/launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/launch/launch.c	2009-03-16 18:20:16 UTC (rev 4090)
+++ mpich2/trunk/src/pm/hydra/utils/launch/launch.c	2009-03-16 19:13:17 UTC (rev 4091)
@@ -14,13 +14,16 @@
     HYDU_FUNC_ENTER();
 
     if (in && (pipe(inpipe) < 0))
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "pipe error (errno: %d)\n", errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "pipe error (%s)\n",
+                             HYDU_String_error(errno));
 
     if (out && (pipe(outpipe) < 0))
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "pipe error (errno: %d)\n", errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "pipe error (%s)\n",
+                             HYDU_String_error(errno));
 
     if (err && (pipe(errpipe) < 0))
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "pipe error (errno: %d)\n", errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "pipe error (%s)\n",
+                             HYDU_String_error(errno));
 
     /* Fork off the process */
     tpid = fork();
@@ -28,27 +31,24 @@
         close(outpipe[0]);
         close(1);
         if (dup2(outpipe[1], 1) < 0)
-            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "dup2 error (errno: %d)\n", errno);
+            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "dup2 error (%s)\n",
+                                 HYDU_String_error(errno));
 
         close(errpipe[0]);
         close(2);
         if (dup2(errpipe[1], 2) < 0)
-            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "dup2 error (errno: %d)\n", errno);
+            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "dup2 error (%s)\n",
+                                 HYDU_String_error(errno));
 
         close(inpipe[1]);
         close(0);
         if (in && (dup2(inpipe[0], 0) < 0))
-            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "dup2 error (errno: %d)\n", errno);
+            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "dup2 error (%s)\n",
+                                 HYDU_String_error(errno));
 
         if (execvp(client_arg[0], client_arg) < 0) {
-            if (errno == ENOENT) {
-                HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
-                                     "execvp error: file %s not found\n", client_arg[0]);
-            }
-            else {
-                HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR,
-                                     "execvp error (errno: %d)\n", errno);
-            }
+            HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR, "execvp error (%s)\n",
+                                 HYDU_String_error(errno));
         }
     }
     else {      /* Parent process */

Modified: mpich2/trunk/src/pm/hydra/utils/sock/sock.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/sock/sock.c	2009-03-16 18:20:16 UTC (rev 4090)
+++ mpich2/trunk/src/pm/hydra/utils/sock/sock.c	2009-03-16 19:13:17 UTC (rev 4091)
@@ -45,8 +45,8 @@
 
     *listen_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
     if (*listen_fd < 0)
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "cannot open socket (errno: %d)\n",
-                             errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "cannot open socket (%s)\n",
+                             HYDU_String_error(errno));
 
     if (setsockopt(*listen_fd, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(int)) < 0)
         HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "cannot set TCP_NODELAY\n");
@@ -70,7 +70,8 @@
             /* If the address is in use, we should try the next
              * port. Otherwise, it's an error. */
             if (errno != EADDRINUSE)
-                HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "bind error (errno: %d)\n", errno);
+                HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "bind error (%s)\n",
+                                     HYDU_String_error(errno));
         }
         else    /* We got a port */
             break;
@@ -81,7 +82,8 @@
         HYDU_ERR_SETANDJUMP(status, HYD_SOCK_ERROR, "no port to bind\n");
 
     if (listen(*listen_fd, -1) < 0)
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "listen error (errno: %d)\n", errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "listen error (%s)\n",
+                             HYDU_String_error(errno));
 
     /* We asked for any port, so we need to find out which port we
      * actually got. */
@@ -89,8 +91,8 @@
         socklen_t sinlen = sizeof(sa);
 
         if (getsockname(*listen_fd, (struct sockaddr *) &sa, &sinlen) < 0)
-            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "getsockname error (errno: %d)\n",
-                                 errno);
+            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "getsockname error (%s)\n",
+                                 HYDU_String_error(errno));
         *port = ntohs(sa.sin_port);
     }
 
@@ -119,20 +121,20 @@
     ht = gethostbyname(host);
     if (ht == NULL)
         HYDU_ERR_SETANDJUMP1(status, HYD_INVALID_PARAM,
-                             "unable to get host address (errno: %d)\n", errno);
+                             "unable to get host address (%s)\n", HYDU_String_error(errno));
     memcpy(&sa.sin_addr, ht->h_addr_list[0], ht->h_length);
 
     /* Create a socket and set the required options */
     *fd = socket(AF_INET, SOCK_STREAM, 0);
     if (*fd < 0)
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "cannot open socket (errno: %d)\n",
-                             errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "cannot open socket (%s)\n",
+                             HYDU_String_error(errno));
 
     /* Not being able to connect is not an error in all cases. So we
      * return an error, but only print a warning message. The upper
      * layer can decide what to do with the return status. */
     if (connect(*fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
-        HYDU_Warn_printf("connect error (errno: %d)\n", errno);
+        HYDU_Warn_printf("connect error (%s)\n", HYDU_String_error(errno));
         status = HYD_SOCK_ERROR;
         goto fn_fail;
     }
@@ -154,7 +156,8 @@
 
     *fd = accept(listen_fd, 0, 0);
     if (*fd < 0)
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "accept error (errno: %d)\n", errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "accept error (%s)\n",
+                             HYDU_String_error(errno));
 
   fn_exit:
     HYDU_FUNC_EXIT();
@@ -186,7 +189,8 @@
         else if (n < 0) {
             if (errno == EINTR)
                 continue;
-            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "read error (errno: %d)\n", errno);
+            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "read error (%s)\n",
+                                 HYDU_String_error(errno));
         }
 
         *linelen += n;
@@ -229,7 +233,8 @@
     } while (*count < 0 && errno == EINTR);
 
     if (*count < 0)
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "read errno (errno: %d)\n", errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "read errno (%s)\n",
+                             HYDU_String_error(errno));
 
   fn_exit:
     HYDU_FUNC_EXIT();
@@ -255,7 +260,8 @@
     } while (n < 0 && errno == EINTR);
 
     if (n < maxsize)
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "write error (errno: %d)\n", errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "write error (%s)\n",
+                             HYDU_String_error(errno));
 
   fn_exit:
     HYDU_FUNC_EXIT();
@@ -278,7 +284,8 @@
     } while (n < 0 && errno == EINTR);
 
     if (n < maxsize)
-        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "write error (errno: %d)\n", errno);
+        HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "write error (%s)\n",
+                             HYDU_String_error(errno));
 
   fn_exit:
     HYDU_FUNC_EXIT();
@@ -345,8 +352,8 @@
 
     count = read(fd, buf, HYD_TMPBUF_SIZE);
     if (count < 0) {
-        HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "read error on %d (errno: %d)\n",
-                             fd, errno);
+        HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "read error on %d (%s)\n",
+                             fd, HYDU_String_error(errno));
     }
     else if (count == 0) {
         /* The connection has closed */
@@ -358,8 +365,8 @@
     while (written != count) {
         ret = write(stdout_fd, buf + written, count - written);
         if (ret < 0 && errno != EAGAIN)
-            HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "write errnor on %d (errno: %d)\n",
-                                 stdout_fd, errno);
+            HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "write error on %d (%s)\n",
+                                 stdout_fd, HYDU_String_error(errno));
         if (ret > 0)
             written += ret;
     }
@@ -391,8 +398,8 @@
         if (*buf_count) {
             count = write(fd, buf + *buf_offset, *buf_count);
             if (count < 0)
-                HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR,
-                                     "write error on %d (errno: %d)\n", fd, errno)
+                HYDU_ERR_SETANDJUMP2(status, HYD_SOCK_ERROR, "write error on %d (%s)\n",
+                                     fd, HYDU_String_error(errno))
             *buf_offset += count;
             *buf_count -= count;
             break;
@@ -407,8 +414,8 @@
                 break;
             }
 
-            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "read error on 0 (errno: %d)\n",
-                                 errno);
+            HYDU_ERR_SETANDJUMP1(status, HYD_SOCK_ERROR, "read error on 0 (%s)\n",
+                                 HYDU_String_error(errno));
         }
         else if (count == 0) {
             /* The connection has closed */

Modified: mpich2/trunk/src/pm/hydra/utils/string/string.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/string/string.c	2009-03-16 18:20:16 UTC (rev 4090)
+++ mpich2/trunk/src/pm/hydra/utils/string/string.c	2009-03-16 19:13:17 UTC (rev 4091)
@@ -95,3 +95,17 @@
   fn_fail:
     goto fn_exit;
 }
+
+
+char *HYDU_String_error(int error)
+{
+    char *str;
+
+#if defined HAVE_STRERROR
+    str = strerror(error);
+#else
+    str = MPIU_Strdup("errno: %d", error);
+#endif /* HAVE_STRERROR */
+
+    return str;
+}



More information about the mpich2-commits mailing list