bool kill_remote_of_intercomm)
{
int count = 0, i;
- char *msg, *host, hostname[MAXHOSTNAMELEN];
+ char *msg, *host = NULL;
pid_t pid = 0;
orte_process_name_t *abort_procs;
orte_std_cntr_t nabort_procs;
+ bool free_host = false;
/* Protection for recursive invocation */
if (have_been_invoked) {
if (orte_initialized) {
host = orte_process_info.nodename;
} else {
- gethostname(hostname, sizeof(hostname));
- host = hostname;
+ size_t host_length = 128;
+ do {
+ host_length *= 2;
+ host = realloc(host, host_length);
+ } while ((gethostname(host, host_length) == -1) && (errno == ENAMETOOLONG));
+ free_host = true;
}
pid = getpid();
/* Note that if we're already finalized, we cannot raise an
MPI exception. The best that we can do is write something
to stderr. */
- char hostname[MAXHOSTNAMELEN];
+ char *hostname = NULL;
+ size_t hostname_length = 128;
pid_t pid = getpid();
- gethostname(hostname, sizeof(hostname));
+ do {
+ hostname_length *= 2;
+ hostname = realloc(hostname, hostname_length);
+ } while ((gethostname(hostname, hostname_length) == -1) && (errno == ENAMETOOLONG));
orte_show_help("help-mpi-runtime.txt",
"mpi_finalize:invoked_multiple_times",
true, hostname, pid);
+ free(hostname);
return MPI_ERR_OTHER;
}
}
if (opal_list_get_end(found_components) == item) {
- char h[MAXHOSTNAMELEN];
- gethostname(h, sizeof(h));
+ char *h = NULL;
+ size_t h_length = 128;
+ do {
+ h_length *= 2;
+ h = realloc(h, h_length);
+ } while ((gethostname(h, h_length) == -1) && (errno == ENAMETOOLONG));
opal_show_help("help-mca-base.txt",
"find-available:not-valid", true,
h, type, requested_component_names[i]);
+ free(h);
return OPAL_ERR_NOT_FOUND;
}
}
home = (char*)opal_home_directory();
if(NULL == cwd) {
+#if !defined(MAXPATHLEN) && defined(__GLIBC__)
+ cwd = get_current_dir_name();
+ if( NULL == cwd)
+#else
cwd = (char *) malloc(sizeof(char) * MAXPATHLEN);
- if( NULL == (cwd = getcwd(cwd, MAXPATHLEN) )) {
+ if( NULL == (cwd = getcwd(cwd, MAXPATHLEN) ))
+#endif
+ {
opal_output(0, "Error: Unable to get the current working directory\n");
cwd = strdup(".");
}
[memory_linux_ptmalloc2_happy=yes
memory_linux_ummu_happy=no])])
+ AS_IF([echo "$host_os" | grep '^gnu' >/dev/null 2>/dev/null],
+ [memory_linux_ptmalloc2_happy=no
+ memory_linux_ummu_happy=no])
+
######################################################################
# ptmalloc2
######################################################################
# -----------------------------------------------------------
AC_DEFUN([MCA_pstat_darwin_CONFIG],[
OMPI_VAR_SCOPE_PUSH([paff_darwin_happy])
- # check to see if we have <mach/mach_host.h>
+ # check to see if we have <mach/clock.h>
# as this is a Darwin-specific thing
- AC_CHECK_HEADER([mach/mach_host.h], [paff_darwin_happy=yes], [paff_darwin_happy=no])
+ AC_CHECK_HEADER([mach/clock.h], [paff_darwin_happy=yes], [paff_darwin_happy=no])
AS_IF([test "$paff_darwin_happy" = "yes"], [$1], [$2])
OMPI_VAR_SCOPE_POP
/* for tons of debug output: -mca shmem_base_verbose 70 */
+#ifndef MAXHOSTNAMELEN
+# define MAXHOSTNAMELEN 256
+#endif
+
/* ////////////////////////////////////////////////////////////////////////// */
/*local functions */
/* local functions */
OPAL_DECLSPEC extern int shmem_posix_shm_open(char *posix_file_name_buff,
size_t size);
+#ifndef MAXHOSTNAMELEN
+# define MAXHOSTNAMELEN 256
+#endif
+
END_C_DECLS
#endif /* OPAL_SHMEM_POSIX_COMMON_UTILS_H */
/* for tons of debug output: -mca shmem_base_verbose 70 */
+#ifndef MAXHOSTNAMELEN
+# define MAXHOSTNAMELEN 256
+#endif
+
/* ////////////////////////////////////////////////////////////////////////// */
/* local functions */
static int
# -----------------------------------------------------------
AC_DEFUN([MCA_sysinfo_darwin_CONFIG],[
OMPI_VAR_SCOPE_PUSH([sysinfo_darwin_happy])
- # check to see if we have <mach/mach_host.h>
+ # check to see if we have <mach/clock.h>
# as this is a Darwin-specific thing
- AC_CHECK_HEADER([mach/mach_host.h], [sysinfo_darwin_happy=yes], [sysinfo_darwin_happy=no])
+ AC_CHECK_HEADER([mach/clock.h], [sysinfo_darwin_happy=yes], [sysinfo_darwin_happy=no])
AS_IF([test "$sysinfo_darwin_happy" = "yes"], [$1], [$2])
OMPI_VAR_SCOPE_POP
mca_base_param_lookup_string (param, &string_value);
memset(&act, 0, sizeof(act));
+#ifdef SA_SIGINFO
act.sa_sigaction = show_stackframe;
act.sa_flags = SA_SIGINFO;
+#else
+ act.sa_handler = show_stackframe_handler;
+#endif
#ifdef SA_ONESHOT
act.sa_flags |= SA_ONESHOT;
#else
orte_local_rank_t local_rank;
orte_node_rank_t node_rank;
char *pathenv = NULL, *mpiexec_pathenv = NULL;
+#if !defined(MAXPATHLEN) && defined(__GLIBC__)
+ char *basedir=NULL;
+ char *dir=NULL;
+#else
char basedir[MAXPATHLEN];
char dir[MAXPATHLEN];
+#endif
char **argvptr;
char *full_search;
char **argvsav=NULL;
* bouncing around as we execute various apps, but we will always return
* to this place as our default directory
*/
+#if !defined(MAXPATHLEN) && defined(__GLIBC__)
+ basedir = get_current_dir_name();
+#else
getcwd(basedir, sizeof(basedir));
+#endif
/* find the jobdat for this job */
jobdat = NULL;
* again not match getcwd! This is beyond our control - we are only
* ensuring they start out matching.
*/
+#if !defined(MAXPATHLEN) && defined(__GLIBC__)
+ dir = get_current_dir_name();
+#else
getcwd(dir, sizeof(dir));
+#endif
opal_setenv("PWD", dir, true, &app->env);
/* Search for the OMPI_exec_path and PATH settings in the environment. */
GETOUT:
opal_condition_signal(&orte_odls_globals.cond);
OPAL_THREAD_UNLOCK(&orte_odls_globals.mutex);
+#if !defined(MAXPATHLEN) && defined(__GLIBC__)
+ free(basedir);
+ free(dir);
+#endif
return rc;
}
int ret = 0;
int fd;
opal_cmd_line_t *cmd_line = NULL;
- char log_file[PATH_MAX];
+ char *log_file = NULL;
+ size_t log_file_len;
char *jobidstring;
char *rml_uri;
int i;
}
/* define a log file name in the session directory */
- snprintf(log_file, PATH_MAX, "output-orted-%s-%s.log",
+ log_file_len = 13 + strlen(jobidstring) + 1 + strlen(orte_process_info.nodename) + 4 + 1;
+ log_file = malloc(log_file_len);
+ snprintf(log_file, log_file_len, "output-orted-%s-%s.log",
jobidstring, orte_process_info.nodename);
log_path = opal_os_path(false,
orte_process_info.tmpdir_base,
orte_process_info.top_session_dir,
log_file,
NULL);
+ free(log_file);
fd = open(log_path, O_RDWR|O_CREAT|O_TRUNC, 0640);
if (fd < 0) {
{
bool good = true;
const char *tmp;
+#if 0 /* 'hostname' looks unused... */
char hostname[MAXHOSTNAMELEN];
/* Use hostname in a few messages below */
gethostname(hostname, sizeof(hostname));
+#endif
/* If we want to chdir and the chdir fails (for any reason -- such
as if the dir doesn't exist, it isn't a dir, we don't have