$ mpirun -n 1 ls
--------------------------------------------------------------------------
mpirun was unable to launch the specified application as it encountered an 
error:

Error: pipe function call failed when setting up I/O forwarding subsystem
Node: xxxxx.xxxxxxxxxx.xxxxxxxx.xx

while attempting to start process rank 0.
--------------------------------------------------------------------------

I receive this error constantly. I tracked it down so far that it  
appears now certain that the 'tcgetattr' and 'tcsetattr' calls in 
'orte/mca/iof/base/iof_base_setup.c' are responsible. 'errno' is 
set to 22 each, which means 'invalid argument'. We can simply 
ignore the return values of these calls and continue, as done in 
the attached patch. Some simple tests suggest that everything 
else is fine, but I haven't tested thoroughly yet.

On another system, this problem is absent. The main difference 
are GCC and Glibc versions. The problematic system uses GCC 4.3.4 
and Glibc 2.11.1 -- which is the newest Glibc release and maybe 
untested yet with OpenMPI.

Let me know which additional information I can provide to further 
analyze this issue.
diff -u -r openmpi-1.4.1/orte/mca/iof/base/iof_base_setup.c 
openmpi-1.4.1-patched/orte/mca/iof/base/iof_base_setup.c
--- openmpi-1.4.1/orte/mca/iof/base/iof_base_setup.c    2009-12-08 
21:36:41.000000000 +0100
+++ openmpi-1.4.1-patched/orte/mca/iof/base/iof_base_setup.c    2010-03-09 
17:45:32.383100000 +0100
@@ -137,7 +137,9 @@
             /* disable echo */
             struct termios term_attrs;
             if (tcgetattr(opts->p_stdout[1], &term_attrs) < 0) {
-                return ORTE_ERR_PIPE_SETUP_FAILURE;
+                               printf("tcgetattr failed: %i\n", errno);
+                               printf("carrying on with fingers crossed\n");
+                /* return ORTE_ERR_PIPE_SETUP_FAILURE; */
             }
             term_attrs.c_lflag &= ~ (ECHO | ECHOE | ECHOK |
                                      ECHOCTL | ECHOKE | ECHONL);
@@ -150,7 +152,9 @@
 #endif
                                      ONLCR);
             if (tcsetattr(opts->p_stdout[1], TCSANOW, &term_attrs) == -1) {
-                return ORTE_ERR_PIPE_SETUP_FAILURE;
+                               printf("tcsetattr failed: %i\n", errno);
+                               printf("carrying on with fingers crossed\n");
+                /* return ORTE_ERR_PIPE_SETUP_FAILURE; */
             }
 #endif
         ret = dup2(opts->p_stdout[1], fileno(stdout));

Attachment: pgppC0BYqonaA.pgp
Description: PGP signature

Reply via email to