diff --git a/mxqd.c b/mxqd.c index 1519a92e..23ee106d 100644 --- a/mxqd.c +++ b/mxqd.c @@ -997,7 +997,7 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, char *mxq_job_tmpdir = mx_asprintf_forever("%s/%lu", MXQ_JOB_TMPDIR_MNTDIR, job->job_id); mx_setenv_forever("MXQ_JOB_TMPDIR", mxq_job_tmpdir); mx_setenv_forever("TMPDIR", mxq_job_tmpdir); - free(mxq_job_tmpdir); + // not needed before exec() or exit(): free(mxq_job_tmpdir); } if (group->job_gpu) { char *argv[] = { @@ -1013,9 +1013,7 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, exit(1); } mx_setenv_forever("CUDA_VISIBLE_DEVICES", gpu_uuid); - free(gpu_uuid); - free(argv[2]); - free(argv[3]); + // not needed before exec() or exit(): free(gpu_uuid); free(argv[2]); free(argv[3]); } int fh = open("/proc/self/loginuid", O_WRONLY|O_TRUNC); @@ -1124,6 +1122,7 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, for (int i = 0; i < argc ; i++) new_argv[i+4] = argv[i]; new_argv[argc+4] = NULL; + // not needed before exec() or exit: free(argv); free(argv[1]); free(argv[2]); if (setuid(0) == -1) { mx_log_err("job=%s(%d):%lu:%lu setuid(0) failed: %m", @@ -1209,19 +1208,8 @@ static unsigned long start_job(struct mxq_group_list *glist) return 0; } else if (pid == 0) { job->host_pid = getpid(); - mx_log_debug("starting reaper process."); - mx_funlock_nodelete(server->flock); - server->flock = NULL; - mx_mysql_finish(&server->mysql); - exec_reaper(server, glist, job); - - mxq_job_free_content(job); - - mx_log_debug("shutting down reaper, bye bye."); - mx_log_finish(); - server_free(server); _exit(EX__MAX+1); }