diff --git a/src/slurmd/slurmstepd/io.c b/src/slurmd/slurmstepd/io.c
index 2796c99e3e3367bf0ff845bd507f9e1a4c8cdf73..0f177ea258e50aec0b2627e3277e2dec0fd9b9a8 100644
--- a/src/slurmd/slurmstepd/io.c
+++ b/src/slurmd/slurmstepd/io.c
@@ -893,6 +893,7 @@ io_close_task_fds(slurmd_job_t *job)
 void 
 io_close_all(slurmd_job_t *job)
 {
+	int devnull;
 #if 0
 	int i;
 	for (i = 0; i < job->ntasks; i++)
@@ -902,7 +903,17 @@ io_close_all(slurmd_job_t *job)
 	/* No more debug info will be received by client after this point
 	 */
 	debug("Closing debug channel");
-	close(STDERR_FILENO);
+
+	/*
+	 * Send stderr to /dev/null since debug channel is closing
+	 *  and log facility may still try to write to stderr.
+	 */
+	if ((devnull = open("/dev/null", O_RDWR)) < 0) {
+		error("Unable to open /dev/null: %m");
+	} else {
+		if (dup2(devnull, STDERR_FILENO) < 0)
+			error("Unable to dup /dev/null onto stderr\n");
+	}
 
 	/* Signal IO thread to close appropriate 
 	 * client connections