diff --git a/src/slurmd/slurmstepd/mgr.c b/src/slurmd/slurmstepd/mgr.c index 2cdd5a4cb2e775921941c7972e28cbbb628de36e..54f442b339f5d2491d0626e2cae01b9910c323d5 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 7c148ba2439df865bba63c7ed3a56a32f9ec2d10..a8d56debd3eb574073a0f2f7da253fe627f1c7cd 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