diff --git a/NEWS b/NEWS
index 9c4a8661d633e99ea4957f97784bc6f6ae1d6f56..5a7c5dfc508230ac1b41b49a5d874b942ed83290 100644
--- a/NEWS
+++ b/NEWS
@@ -55,6 +55,8 @@ documents those changes that are of interest to users and admins.
     into a reservation.
  -- In task/affinity plugin, add layer of abstraction to logic translating
     block masks to physical machine masks. Patch from Matthieu Hautreux, CEA.
+ -- Fix for setting the node_bitmap in a job to NULL if the job does not 
+    start correctly when expected to start.
 
 * Changes in SLURM 2.0.2
 ========================
diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c
index 49a9e33b6c3d9e716b73c06adec47c55420d91a3..c0eb5f64fc4b1b898206122fe292f5d5a663c408 100644
--- a/src/slurmctld/node_scheduler.c
+++ b/src/slurmctld/node_scheduler.c
@@ -1109,6 +1109,7 @@ extern int select_nodes(struct job_record *job_ptr, bool test_only,
 		job_ptr->start_time = 0;
 		job_ptr->time_last_active = 0;
 		job_ptr->end_time = 0;
+		job_ptr->node_bitmap = NULL;
 		goto cleanup;
 	}
 
diff --git a/src/slurmd/slurmstepd/io.c b/src/slurmd/slurmstepd/io.c
index 061c14b8cbe1aa9f7a6342ba4eb06c5a076ee8b1..680faec492ed51624536dad7123befbac0040278 100644
--- a/src/slurmd/slurmstepd/io.c
+++ b/src/slurmd/slurmstepd/io.c
@@ -1028,15 +1028,16 @@ _init_task_stdio_fds(slurmd_task_info_t *task, slurmd_job_t *job)
 #ifdef HAVE_PTY_H
 	if (job->pty) {
 		if (task->gtid == 0) {
+			/* Make a file descriptor for the task to write to, but
+			   don't make a separate one read from, because in pty 
+			   mode we can't distinguish between stdout and stderr
+			   coming from the remote shell.  Both streams from the
+			   shell will go to task->stdout_fd, which is okay in 
+			   pty mode because any output routed through the stepd
+			   will be displayed. */
 			task->stderr_fd = dup(task->stdin_fd);
 			fd_set_close_on_exec(task->stderr_fd);
-			task->from_stderr = dup(task->to_stdin);
-			fd_set_close_on_exec(task->from_stderr);
-			fd_set_nonblocking(task->from_stderr);
-			task->err = _create_task_out_eio(task->from_stderr,
-						 SLURM_IO_STDERR, job, task);
-			list_append(job->stderr_eio_objs, (void *)task->err);
-			eio_new_initial_obj(job->eio, (void *)task->err);
+			task->from_stderr = -1;
 		} else {
 			xfree(task->efname);
 			task->efname = xstrdup("/dev/null");