From 08fce8eebcebdae0eb1a53271ac80f9fb01a2ecc Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Thu, 19 Jan 2012 10:26:11 -0800
Subject: [PATCH] Minor improvement in slurmstepd signal handling

---
 src/slurmd/slurmstepd/mgr.c | 16 +++++-----------
 testsuite/expect/test7.15   |  3 +--
 2 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/src/slurmd/slurmstepd/mgr.c b/src/slurmd/slurmstepd/mgr.c
index 2cdd5a4cb2e..54f442b339f 100644
--- a/src/slurmd/slurmstepd/mgr.c
+++ b/src/slurmd/slurmstepd/mgr.c
@@ -169,7 +169,6 @@ typedef struct kill_thread {
  * Job manager related prototypes
  */
 static int  _access(const char *path, int modes, uid_t uid, gid_t gid);
-static void _block_signals(void);
 static void _send_launch_failure(launch_tasks_request_msg_t *,
 				 slurm_addr_t *, int);
 static int  _drain_node(char *reason);
@@ -999,7 +998,7 @@ job_manager(slurmd_job_t *job)
 
 	io_close_task_fds(job);
 
-	_block_signals();
+	xsignal_block (mgr_sigarray);
 	reattach_job = job;
 
 	job->state = SLURMSTEPD_STEP_RUNNING;
@@ -1209,21 +1208,16 @@ static void prepare_stdio (slurmd_job_t *job, slurmd_task_info_t *task)
 	return;
 }
 
-static void _block_signals (void)
-{
-	int i;
-
-	for (i = 0; mgr_sigarray[i]; i++)	/* eliminate pending signals */
-		xsignal(mgr_sigarray[i], SIG_IGN);
-	xsignal_block (mgr_sigarray);
-}
 static void _unblock_signals (void)
 {
 	sigset_t set;
 	int i;
 
-	for (i = 0; mgr_sigarray[i]; i++)	/* eliminate pending signals */
+	for (i = 0; mgr_sigarray[i]; i++) {
+		/* eliminate pending signals, then set to default */
+		xsignal(mgr_sigarray[i], SIG_IGN);
 		xsignal(mgr_sigarray[i], SIG_DFL);
+	}
 	sigemptyset(&set);
 	xsignal_set_mask (&set);
 }
diff --git a/testsuite/expect/test7.15 b/testsuite/expect/test7.15
index 7c148ba2439..a8d56debd3e 100755
--- a/testsuite/expect/test7.15
+++ b/testsuite/expect/test7.15
@@ -1,7 +1,6 @@
 #!/usr/bin/expect
 ############################################################################
-# Purpose: Verify the ability to modify the Derived Exit Code and Comment
-#          fields of a job record in the database.
+# Purpose: Verify signal mask of tasks have no ignored signals.
 #
 # Output:  "TEST: #.#" followed by "SUCCESS" if test was successful, OR
 #          "FAILURE: ..." otherwise with an explanation of the failure, OR
-- 
GitLab