diff --git a/src/plugins/proctrack/cray/proctrack_cray.c b/src/plugins/proctrack/cray/proctrack_cray.c
index 906a1282a45603d5ff088751d4d1ef6358fd3a81..9dcc0751d7f94b453b38c35abb584063290cf181 100644
--- a/src/plugins/proctrack/cray/proctrack_cray.c
+++ b/src/plugins/proctrack/cray/proctrack_cray.c
@@ -282,10 +282,21 @@ int proctrack_p_plugin_get_pids(uint64_t cont_id, pid_t **pids, int *npids)
 		p = (pid_t *)xmalloc(bufsize);
 		pidcnt = job_getpidlist((jid_t)cont_id, p, bufsize);
 		if (pidcnt == -1) {
-			error("job_getpidlist() failed: %m");
+			int rc = SLURM_SUCCESS;
+			/* There is a possiblity for a race condition
+			   where if the last task in the job exits
+			   between job_getpidcnt and job_getpidlist.
+			   That is ok, so just return SUCCESS;
+			*/
+			if (errno != ENODATA) {
+				rc = SLURM_ERROR;
+				error("job_getpidlist() failed: %m");
+			}
+
 			*pids = NULL;
 			*npids = 0;
 			xfree(p);
+
 			return SLURM_ERROR;
 		}
 		*pids = p;