fix memory leak

This commit is contained in:
Rongsong Shen 2025-12-10 15:25:05 +08:00
parent cf1dbdc07a
commit e001d4955c
3 changed files with 48 additions and 68 deletions

View file

@ -250,12 +250,28 @@ void job_obj_killer(job_t* job)
}
obj = TO_MYOBJ(job);
DEREF_OBJ(job->job.submit->queue);
DEREF_OBJ(job->job.submit->user);
DEREF_OBJ(job->job.submit->job_name);
DEREF_OBJ(job->job.submit->project_name);
DEREF_OBJ(job->job.submit->job_description);
DEREF_OBJ(job->job.submit->resreq);
if (job->job.submit != NULL) {
DEREF_OBJ(job->job.submit->queue);
DEREF_OBJ(job->job.submit->user);
DEREF_OBJ(job->job.submit->job_name);
DEREF_OBJ(job->job.submit->project_name);
DEREF_OBJ(job->job.submit->job_description);
DEREF_OBJ(job->job.submit->resreq);
if (job->job.submit->start_info != NULL) {
DEREF_OBJ(job->job.submit->start_info->cmdline);
DEREF_OBJ(job->job.submit->start_info->exechome);
DEREF_OBJ(job->job.submit->start_info->execcwd);
DEREF_OBJ(job->job.submit->start_info->execuser);
DEREF_OBJ(job->job.submit->start_info->exdata);
DEREF_OBJ(job->job.submit->start_info->launch_type);
DEREF_OBJ(job->job.submit->start_info->job_pre_exec);
DEREF_OBJ(job->job.submit->start_info->job_post_exec);
FREEUP(job->job.submit->start_info);
}
FREEUP(job->job.submit);
}
if (job->job.pidinfo != NULL) {
FREEUP(job->job.pidinfo->pids);
@ -268,22 +284,7 @@ void job_obj_killer(job_t* job)
}
if (job->job.allocs != NULL) {
for (int i = 0; i < job->job.allocs->nhosts; i++) {
FREEUP(job->job.allocs->allocs[i]->host);
for (int k = 0; k < job->job.allocs->allocs[i]->nallocs; k++) {
xce_alloc_t* alloc
= (xce_alloc_t*)job->job.allocs->allocs[i]->allocs[k];
if (alloc == NULL) {
continue;
}
FREEUP(alloc->resname);
FREEUP(alloc->reserve);
free(alloc);
}
FREEUP(job->job.allocs->allocs[i]);
}
FREEUP(job->job.allocs->allocs);
FREEUP(job->job.allocs);
free_JobAlloc_ptr(&(job->job.allocs));
}
if (job->job.run_usage != NULL) {
@ -295,18 +296,6 @@ void job_obj_killer(job_t* job)
FREEUP(job->job.run_usage);
}
if (job->job.submit->start_info != NULL) {
DEREF_OBJ(job->job.submit->start_info->cmdline);
DEREF_OBJ(job->job.submit->start_info->exechome);
DEREF_OBJ(job->job.submit->start_info->execcwd);
DEREF_OBJ(job->job.submit->start_info->execuser);
DEREF_OBJ(job->job.submit->start_info->exdata);
DEREF_OBJ(job->job.submit->start_info->launch_type);
DEREF_OBJ(job->job.submit->start_info->job_pre_exec);
DEREF_OBJ(job->job.submit->start_info->job_post_exec);
FREEUP(job->job.submit->start_info);
}
FREEUP(job->job.exit_info);
memset(obj, 0x0, sizeof(*obj));