diff --git a/NEWS b/NEWS index 6a6b491a16c15c080d58c5791335f276e026c7ea..af51778dc51995fa5df414ab884ba35a5716fda1 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,7 @@ documents those changes that are of interest to users and admins. responding in a timely fashion) then send a registration RPC to slurmctld -- Add "slurm_" prefix to slurm's hostlist_ function man pages. + -- More AIX support added. * Changes in SLURM 0.3.1 ======================== diff --git a/auxdir/Makefile.am b/auxdir/Makefile.am index 605caddb5e50866afc3f6795fde30e567a3c84d9..917a22d47db4cc76ff4c1926c2c489a599b5fb7f 100644 --- a/auxdir/Makefile.am +++ b/auxdir/Makefile.am @@ -12,6 +12,7 @@ EXTRA_DIST = \ x_ac_debug.m4 \ x_ac_elan.m4 \ x_ac_gpl_licensed.m4 \ + x_ac_ptrace.m4 \ x_ac_readline.m4 \ x_ac_setproctitle.m4 \ x_ac_slurm_ssl.m4 diff --git a/auxdir/x_ac_ptrace.m4 b/auxdir/x_ac_ptrace.m4 new file mode 100644 index 0000000000000000000000000000000000000000..c952656ebdd763ec67da25212d421d78dcbc5776 --- /dev/null +++ b/auxdir/x_ac_ptrace.m4 @@ -0,0 +1,26 @@ +##***************************************************************************** +# $Id$ +##***************************************************************************** +# AUTHOR: +# Morris Jette <jette1@llnl.gov> +# +# SYNOPSIS: +# X_AC_PTRACE +# +# DESCRIPTION: +# Test argument count of ptrace function. +# +# WARNINGS: +# This macro must be placed after AC_PROG_CC or equivalent. +##***************************************************************************** + +AC_DEFUN([X_AC_PTRACE], [ + AC_TRY_COMPILE( + [#include <sys/reg.h> + #include <sys/ptrace.h> + #include <sys/ldr.h>], + [ptrace(PT_TRACE_ME,0,0,0,0);], + [AC_DEFINE(PTRACE_FIVE_ARGS, 1, + [Define to 1 if ptrace takes five arguments.])]) +]) + diff --git a/configure.ac b/configure.ac index bea8f763a3ed8c9f8223d8abc27b8e8ab0d01604..749e7e8f3257823837bfc1ef3d6646a41e4f4eae 100644 --- a/configure.ac +++ b/configure.ac @@ -58,6 +58,9 @@ dnl check to see if glibc's program_invocation_short_name is available: dnl X_AC_SLURM_PROGRAM_INVOCATION_SHORT_NAME +dnl Check if ptrace takes four or five arguments +dnl +X_AC_PTRACE dnl Checks for types. dnl diff --git a/src/slurmd/smgr.c b/src/slurmd/smgr.c index b0c51aaa9af7549b3e27047fd9dc7abf556cf399..604bac3503deae19153599df1ab5e4d39e68e142 100644 --- a/src/slurmd/smgr.c +++ b/src/slurmd/smgr.c @@ -562,7 +562,11 @@ _pdebug_trace_process(slurmd_job_t *job, pid_t pid) waitpid(pid, &status, WUNTRACED); if (kill(pid, SIGSTOP) < 0) error("kill(%lu): %m", (unsigned long) pid); +#ifdef PTRACE_FIVE_ARGS + if (ptrace(PTRACE_DETACH, (long) pid, NULL, 0, NULL)) +#else if (ptrace(PTRACE_DETACH, (long) pid, NULL, NULL)) +#endif error("ptrace(%lu): %m", (unsigned long) pid); } } @@ -577,6 +581,10 @@ _pdebug_stop_current(slurmd_job_t *job) * Stop the task on exec for TotalView to connect */ if ( (job->task_flags & TASK_PARALLEL_DEBUG) +#ifdef PTRACE_FIVE_ARGS + && (ptrace(PTRACE_TRACEME, 0, NULL, 0, NULL) < 0) ) +#else && (ptrace(PTRACE_TRACEME, 0, NULL, NULL) < 0) ) +#endif error("ptrace: %m"); }