diff --git a/src/plugins/select/bluegene/plugin/bg_job_run.c b/src/plugins/select/bluegene/plugin/bg_job_run.c
index b76a00ef619dd00af141d6d77c132a72f3cbaf47..6ec2d6f6a50866d53b6458d0136f09366d4f5ee1 100644
--- a/src/plugins/select/bluegene/plugin/bg_job_run.c
+++ b/src/plugins/select/bluegene/plugin/bg_job_run.c
@@ -532,6 +532,10 @@ static void *_block_agent(void *args)
 	}
 	slurm_mutex_lock(&agent_cnt_mutex);
 	agent_cnt--;
+	if (agent_cnt == 0) {
+		list_destroy(bg_update_list);
+		bg_update_list = NULL;
+	}
 	slurm_mutex_unlock(&agent_cnt_mutex);
 	return NULL;
 }
@@ -825,6 +829,7 @@ extern int sync_jobs(List job_list)
 		list_iterator_destroy(job_iterator);
 	} else {
 		error("sync_jobs: no job_list");
+		list_destroy(block_list);
 		return SLURM_ERROR;
 	}
 	/* Insure that all other blocks are free of users */
@@ -843,6 +848,8 @@ extern int sync_jobs(List job_list)
 		list_iterator_destroy(block_iterator);
 		list_destroy(block_list);
 	} else {
+		/* this should never happen, 
+		 * vestigial logic */
 		error("sync_jobs: no block_list");
 		return SLURM_ERROR;
 	}