diff --git a/src/slurmd/req.c b/src/slurmd/req.c
index f4f150edd4545a4e1b82353cfb373060a6b0adbf..9b58c175171a41305403b1fb125cd361d39f8bce 100644
--- a/src/slurmd/req.c
+++ b/src/slurmd/req.c
@@ -688,11 +688,12 @@ _rpc_kill_tasks(slurm_msg_t *msg, slurm_addr *cli_addr)
 		kill_proc_tree(step->sid, req->signal);
 		rc = SLURM_SUCCESS;
 	} else {
-		if (kill(-step->sid, req->signal) < 0)
+		if (step->sid
+		&&  (kill(-step->sid, req->signal) < 0))
 			rc = errno;
 
-		if (step->task_list
-		&& (kill (-step->task_list->pid, req->signal) < 0))
+		if (step->task_list && step->task_list->pid
+		&&  (kill (-step->task_list->pid, req->signal) < 0))
 			rc = errno;
  
 		if (rc == SLURM_SUCCESS)
@@ -961,10 +962,11 @@ _kill_all_active_steps(uint32_t jobid, int sig, bool batch)
 		} else {
 			debug2("signal %d to job %u (pg:%d)",
 			       sig, jobid, s->sid);
-			if (kill(-s->sid, sig) < 0)
+			if (s->sid
+			&&  (kill(-s->sid, sig) < 0))
 				error("kill jid %d sid %d: %m",
 				      s->jobid, s->sid);
-			if (s->task_list
+			if (s->task_list && s->task_list->pid
 			&& (kill(-s->task_list->pid, sig) < 0))
 				error("kill jid %d pgrp %d: %m",
 					s->jobid, s->task_list->pid);