diff --git a/src/srun/io.c b/src/srun/io.c
index d0e000b47780fcc1318083c07f4a32a18106c642..40cdf1a1ddf8f4c7b146489a840a55882080f3a3 100644
--- a/src/srun/io.c
+++ b/src/srun/io.c
@@ -538,7 +538,7 @@ io_thr_create(job_t *job)
 
 	xsignal(SIGTTIN, SIG_IGN);
 
-	pthread_attr_init(&attr);
+	slurm_attr_init(&attr);
 	if ((errno = pthread_create(&job->ioid, &attr, &io_thr, (void *) job)))
 		return SLURM_ERROR;
 
diff --git a/src/srun/launch.c b/src/srun/launch.c
index 43c60e89913586020d913561ac8ce693500ace96..8ed4f6ad9ea65da6cea5b4d41ee13946ec09c561 100644
--- a/src/srun/launch.c
+++ b/src/srun/launch.c
@@ -36,6 +36,7 @@
 #include <sys/param.h>
 
 #include "src/common/log.h"
+#include "src/common/macros.h"
 #include "src/common/slurm_protocol_api.h"
 #include "src/common/xmalloc.h"
 #include "src/common/xsignal.h"
@@ -81,7 +82,7 @@ launch_thr_create(job_t *job)
 	int e;
 	pthread_attr_t attr;
 
-	pthread_attr_init(&attr);
+	slurm_attr_init(&attr);
 	if ((e = pthread_create(&job->lid, &attr, &launch, (void *) job))) 
 		slurm_seterrno_ret(e);
 
@@ -210,19 +211,11 @@ static void _spawn_launch_thr(thd_t *th)
 	pthread_attr_t attr;
 	int err = 0;
 
-	if ((err = pthread_attr_init (&attr)))
-		fatal ("pthread_attr_init: %s", slurm_strerror(err));
-
-
+	slurm_attr_init (&attr);
 	err = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
 	if (err)
 		error ("pthread_attr_setdetachstate: %s", slurm_strerror(err));
 
-#ifdef PTHREAD_SCOPE_SYSTEM
-	if ((err = pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)))
-		error ("pthread_attr_setscope: %s", slurm_strerror(err));
-#endif
-
 	err = pthread_create(&th->thread, &attr, _p_launch_task, (void *)th);
 	if (err) {
 		error ("pthread_create: %s", slurm_strerror(err));
diff --git a/src/srun/msg.c b/src/srun/msg.c
index 2c3691ef9d65b921d5d6e43efca10e32a28f8d82..b755e892055ff4b14d13ed6b2d2bac674f23dd01 100644
--- a/src/srun/msg.c
+++ b/src/srun/msg.c
@@ -46,6 +46,7 @@
 #include "src/common/fd.h"
 #include "src/common/hostlist.h"
 #include "src/common/log.h"
+#include "src/common/macros.h"
 #include "src/common/read_config.h"
 #include "src/common/slurm_auth.h"
 #include "src/common/slurm_protocol_api.h"
@@ -763,7 +764,7 @@ msg_thr_create(job_t *job)
 		      ntohs(((struct sockaddr_in)job->jaddr[i]).sin_port));
 	}
 
-	pthread_attr_init(&attr);
+	slurm_attr_init(&attr);
 	pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
 	if ((errno = pthread_create(&job->jtid, &attr, &msg_thr, 
 			            (void *)job)))
diff --git a/src/srun/reattach.c b/src/srun/reattach.c
index fc06f867a561426f863cdac617d7039c0013c74a..ee0f11e45d6dfcab33dd1241e1e9750cfff7f7c9 100644
--- a/src/srun/reattach.c
+++ b/src/srun/reattach.c
@@ -41,6 +41,7 @@
 #include "src/common/xsignal.h"
 #include "src/common/log.h"
 #include "src/common/list.h"
+#include "src/common/macros.h"
 #include "src/common/hostlist.h"
 #include "src/common/slurm_protocol_api.h"
 
@@ -328,30 +329,6 @@ _attach_to_job(job_t *job)
 	return SLURM_SUCCESS;
 }
 
-static int
-_attr_init(pthread_attr_t *attr)
-{
-	int detached = PTHREAD_CREATE_DETACHED;
-	if ((errno = pthread_attr_init(attr)) < 0) {
-		error("pthread_attr_init: %m");
-		return SLURM_ERROR;
-	}
-
-	if ((errno = pthread_attr_setdetachstate(attr, detached)) < 0) {
-		error("pthread_attr_setdetachstate: %m");
-		return SLURM_ERROR;
-	}
-
-#ifdef PTHREAD_SCOPE_SYSTEM
-	if (pthread_attr_setscope(attr, PTHREAD_SCOPE_SYSTEM) < 0) {
-		error("pthread_attr_setscope: %m");
-		return SLURM_ERROR;
-	}
-#endif
-
-	return SLURM_SUCCESS;
-}
-
 static void
 _p_reattach(slurm_msg_t *msg, job_t *job)
 {
@@ -370,8 +347,10 @@ _p_reattach(slurm_msg_t *msg, job_t *job)
 		thd[i].msg = &msg[i];
 		thd[i].job = job;
 
-		if (_attr_init(&thd[i].attr) < 0) 
-			exit(1);
+		slurm_attr_init(&thd[i].attr);
+		if (pthread_attr_setdetachstate(&thd[i].attr,
+				PTHREAD_CREATE_DETACHED ) < 0)
+			fatal("pthread_attr_setdetachstate: %m");
 
 		if (pthread_create( &thd[i].thread, &thd[i].attr,
 				    _p_reattach_task, (void *) &thd[i])) {
diff --git a/src/srun/signals.c b/src/srun/signals.c
index 959a852aefd35f36200cc988501b1466c19a6cbd..20035699a9fd46c2573bab5562692037fb941d9a 100644
--- a/src/srun/signals.c
+++ b/src/srun/signals.c
@@ -39,6 +39,7 @@
 #include <slurm/slurm_errno.h>
 
 #include "src/common/log.h"
+#include "src/common/macros.h"
 #include "src/common/slurm_protocol_api.h"
 #include "src/common/slurm_protocol_defs.h"
 #include "src/common/xmalloc.h"
@@ -119,7 +120,7 @@ sig_thr_create(job_t *job)
 	int e;
 	pthread_attr_t attr;
 
-	pthread_attr_init(&attr);
+	slurm_attr_init(&attr);
 
 	if ((e = pthread_create(&job->sigid, &attr, &_sig_thr, job)) != 0)
 		slurm_seterrno_ret(e);
@@ -283,17 +284,10 @@ static void _p_fwd_signal(slurm_msg_t *req, job_t *job)
 		tinfo->job_ptr  = job;
 		tinfo->host_inx = i;
 
-		if ((errno = pthread_attr_init(&thd[i].attr)))
-			error("pthread_attr_init failed");
-
+		slurm_attr_init(&thd[i].attr);
 		if (pthread_attr_setdetachstate(&thd[i].attr, 
 		                                PTHREAD_CREATE_DETACHED))
 			error ("pthread_attr_setdetachstate failed");
-
-#ifdef PTHREAD_SCOPE_SYSTEM
-		if (pthread_attr_setscope(&thd[i].attr, PTHREAD_SCOPE_SYSTEM))
-			error ("pthread_attr_setscope failed");
-#endif
 		if (pthread_create( &thd[i].thread, &thd[i].attr, 
 			            _p_signal_task, (void *) tinfo )) {
 			error ("pthread_create failed");