[mpich2-dev] smpd + mpiexec_rsh.c
Jeffrey Frey
frey at UDel.Edu
Tue Jan 13 13:19:47 CST 2009
Has anyone else has run into this bug before...it exists in 1.0.7 and
1.0.8 (at least) and affects smpd with the mpiexec_rsh startup.
In src/pm/smpd/mpiexec_rsh.c:475 the rsh command string is created as:
MPIU_Snprintf(pExe, SMPD_MAX_EXE_LENGTH - curLen, "
\"PMI_RANK=%d\" \"PMI_SIZE=%d\" \"PMI_KVS=%s\" \"PMI_ROOT_HOST=%s\"
\"PMI_ROOT_PORT=%d\" \"PMI_ROOT_LOCAL=0\" \"PMI_APPNUM=%d\" \"%s\"",
launch_node_ptr->iproc, launch_node_ptr->nproc,
smpd_process.kvs_name, root_host, root_port, launch_node_ptr->appnum,
exe);
Note the escaped quotes around the final argument [exe] in the format
string. This resulting string [pExe] is later re-parsed by
smpd_launch_process; if the string in [exe] contains any quote
characters then the parsing inside smpd_launch_process() will mangle
the argument list to be passed to the executable. E.g.
... "PMI_APPNUM=####" "/home/frey/mpitest "--x=y" testing"
gets parsed into an argv[] list of
argv[0] = "/home/frey/mpitest "
argv[1] = "--x"
argv[2] = "="
argv[3] = "y testing"
argv[4] = NULL
by smpd_launch_process(). Note that the quotes around "--x=y" were
introduced by mpiexec, since the argument contains an "=" which is
used as a delimiter character in the string utilities -- it was not
explicitly quoted in my invocation of mpiexec.
I think the quoting in the code cited above (src/pm/smpd/
mpiexec_rsh.c:475) was mistakenly introduced, since all three command-
building code sections coming before it in that source file do NOT
quote [exe] in the command string they create. Here's a diff for src/
pm/smpd/mpiexec_rsh.c:
== SNIP ====
475c475
< MPIU_Snprintf(pExe, SMPD_MAX_EXE_LENGTH - curLen, "
\"PMI_RANK=%d\" \"PMI_SIZE=%d\" \"PMI_KVS=%s\" \"PMI_ROOT_HOST=%s\"
\"PMI_ROOT_PORT=%d\" \"PMI_ROOT_LOCAL=0\" \"PMI_APPNUM=%d\" \"%s\"",
---
> MPIU_Snprintf(pExe, SMPD_MAX_EXE_LENGTH - curLen, "
\"PMI_RANK=%d\" \"PMI_SIZE=%d\" \"PMI_KVS=%s\" \"PMI_ROOT_HOST=%s\"
\"PMI_ROOT_PORT=%d\" \"PMI_ROOT_LOCAL=0\" \"PMI_APPNUM=%d\" %s",
==== SNIP ==
::::::::::::::::::::::::::::::::::::::::::::::::::::::
Jeffrey T. Frey, Ph.D.
Systems Programmer IV / Cluster Management
Network & Systems Services / College of Engineering
University of Delaware, Newark DE 19716
Office: (302) 831-6034 Mobile: (302) 419-4976
http://turin.nss.udel.edu/
99 A1 7F 5E 71 70 8A 38 3C 4A A2 B1 4D 0A B2 49
::::::::::::::::::::::::::::::::::::::::::::::::::::::
More information about the mpich2-dev
mailing list