diff --git a/src/slurmd/slurmstepd/mgr.c b/src/slurmd/slurmstepd/mgr.c index c9ec17fdb9486f474cfd5dfa590c1234a3b8b23f..2cfedb1534f49f6f238f7134a7fdd4004fb3b686 100644 --- a/src/slurmd/slurmstepd/mgr.c +++ b/src/slurmd/slurmstepd/mgr.c @@ -484,12 +484,14 @@ job_manager(slurmd_job_t *job) (interconnect_init(job->switch_job, job->uid) < 0)) { /* error("interconnect_init: %m"); already logged */ rc = ESLURM_INTERCONNECT_FAILURE; + io_close_task_fds(job); goto fail2; } if (_fork_all_tasks(job) < 0) { debug("_fork_all_tasks failed"); rc = ESLURMD_EXECVE_FAILED; + io_close_task_fds(job); goto fail2; } @@ -578,15 +580,21 @@ _fork_all_tasks(slurmd_job_t *job) */ debug3("num tasks on this node = %d", job->ntasks); writefds = (int *) xmalloc (job->ntasks * sizeof(int)); - if (!writefds) + if (!writefds) { error("writefds xmalloc failed!"); + return SLURM_ERROR; + } readfds = (int *) xmalloc (job->ntasks * sizeof(int)); - if (!readfds) + if (!readfds) { error("readfds xmalloc failed!"); + return SLURM_ERROR; + } for (i = 0; i < job->ntasks; i++) { fdpair[0] = -1; fdpair[1] = -1; - if (pipe (fdpair) < 0) + if (pipe (fdpair) < 0) { error ("exec_all_tasks: pipe: %m"); + return SLURM_ERROR; + } debug("New fdpair[0] = %d, fdpair[1] = %d", fdpair[0], fdpair[1]); fd_set_close_on_exec(fdpair[0]); fd_set_close_on_exec(fdpair[1]); @@ -649,11 +657,6 @@ _fork_all_tasks(slurmd_job_t *job) error("slurm_container_create: %m"); exit(3); } - -/* task.id = i; */ -/* task.global_id = job->task[i]->gtid; */ -/* task.pid = job->task[i]->pid; */ -/* task.ppid = job->jmgr_pid; */ } /*