diff --git a/NEWS b/NEWS
index 643ba71d7afe596bf0e232ecb20a3f7fbe7a8846..136ed67a2040905cd095c016dabe0f71361ac703 100644
--- a/NEWS
+++ b/NEWS
@@ -262,6 +262,7 @@ documents those changes that are of interest to users and administrators.
     random crashing in db2 when the slurmctld is exiting.
  -- Make full node reservations display correctly the core count instead of
     cpu count.
+ -- Preserve original errno on execve() failure in task plugin.
 
 * Changes in Slurm 14.11.6
 ==========================
diff --git a/doc/html/team.shtml b/doc/html/team.shtml
index a47da652fef6d778602e9d37bee5fcb3c5abcd95..59748e90f1349c2adffa9312c02d4cff84e73f5a 100644
--- a/doc/html/team.shtml
+++ b/doc/html/team.shtml
@@ -154,6 +154,7 @@ Lead Slurm developers are:
 <li>Pere Munt (Barcelona Supercomputing Center, Spain)</li>
 <br>
 <li>Denis Nadeau</li>
+<li>Jon Nelson (Dyn)</li>
 <li>Mark Nelson (IBM)</li>
 <li>Jim Nordby (Cray)</li>
 <li>Michal Novotny (Masaryk University, Czech Republic)</li>
diff --git a/src/slurmd/slurmstepd/task.c b/src/slurmd/slurmstepd/task.c
index 479b2b6bf926051381ef32ec1e1b11de71359085..8ba32ec739bc6f7b4813d8cea80175f394ed7fd1 100644
--- a/src/slurmd/slurmstepd/task.c
+++ b/src/slurmd/slurmstepd/task.c
@@ -367,6 +367,7 @@ exec_task(stepd_step_rec_t *job, int i)
 	int fd, j;
 	stepd_step_task_info_t *task = job->task[i];
 	char **tmp_env;
+	int saved_errno;
 
 	if (i == 0)
 		_make_tmpdir(job);
@@ -495,6 +496,7 @@ exec_task(stepd_step_rec_t *job, int i)
 	}
 
 	execve(task->argv[0], task->argv, job->env);
+	saved_errno = errno;
 
 	/*
 	 * print error message and clean up if execve() returns:
@@ -510,10 +512,12 @@ exec_task(stepd_step_rec_t *job, int i)
 				eol[0] = '\0';
 			else
 				buf[sizeof(buf)-1] = '\0';
+			slurm_seterrno(saved_errno);
 			error("execve(): bad interpreter(%s): %m", buf+2);
 			exit(errno);
 		}
 	}
+	slurm_seterrno(saved_errno);
 	error("execve(): %s: %m", task->argv[0]);
 	exit(errno);
 }