diff --git a/src/plugins/select/bluegene/ba_bgq/block_allocator.c b/src/plugins/select/bluegene/ba_bgq/block_allocator.c
index dee8ef1dd026c877d4de20cc97af8dbec2941485..077f3621f891cd6b9bb49586a9dc4eee684dfb67 100644
--- a/src/plugins/select/bluegene/ba_bgq/block_allocator.c
+++ b/src/plugins/select/bluegene/ba_bgq/block_allocator.c
@@ -1519,6 +1519,7 @@ extern struct job_record *ba_remove_job_in_block_job_list(
 	select_jobinfo_t *jobinfo;
 	ba_mp_t *ba_mp;
 	char *tmp_char = NULL, *tmp_char2 = NULL, *tmp_char3 = NULL;
+	bool bad_magic = 0;
 
 	xassert(bg_record);
 
@@ -1534,7 +1535,7 @@ extern struct job_record *ba_remove_job_in_block_job_list(
 		      "a job with bad magic, you should "
 		      "probably reboot the block.",
 		      bg_record->bg_block_id);
-		return NULL;
+		bad_magic = 1;
 	}
 
 	itr = list_iterator_create(bg_record->job_list);
@@ -1544,7 +1545,8 @@ extern struct job_record *ba_remove_job_in_block_job_list(
 			      bg_record->bg_block_id);
 			list_delete_item(itr);
 			continue;
-		}
+		} else if (bad_magic)
+			continue;
 
 		if (!in_job_ptr) {
 			/* if there is not an in_job_ptr it is because
@@ -1567,7 +1569,9 @@ extern struct job_record *ba_remove_job_in_block_job_list(
 	}
 	list_iterator_destroy(itr);
 
-	if (in_job_ptr && !job_ptr) {
+	if (bad_magic)
+		return NULL;
+	else if (in_job_ptr && !job_ptr) {
 		if (bg_conf->slurm_debug_flags & DEBUG_FLAG_SELECT_TYPE) {
 			error("ba_remove_job_in_block_job_list: "
 			      "Couldn't remove sub-block job %u from "
diff --git a/src/plugins/select/bluegene/bl_bgq/bridge_linker.cc b/src/plugins/select/bluegene/bl_bgq/bridge_linker.cc
index f57b694024b61b56a1e2833e6aabd2dac7fae586..8b5c9a89cd7042768bf0fa25244ad47c0d1ae4b7 100644
--- a/src/plugins/select/bluegene/bl_bgq/bridge_linker.cc
+++ b/src/plugins/select/bluegene/bl_bgq/bridge_linker.cc
@@ -980,7 +980,7 @@ extern int bridge_block_sync_users(bg_record_t *bg_record)
 		return REMOVE_USER_ERR;
 	}
 
-	if (bg_record->job_ptr) {
+	if (bg_record->job_ptr && (bg_record->job_ptr->magic == JOB_MAGIC)) {
 		select_jobinfo_t *jobinfo = (select_jobinfo_t *)
 			bg_record->job_ptr->select_jobinfo->data;
 		BOOST_FOREACH(const std::string& user, vec) {
@@ -1003,7 +1003,14 @@ extern int bridge_block_sync_users(bg_record_t *bg_record)
 		 * name from the vector as we go.
 		 */
 		while ((job_ptr = (struct job_record *)list_next(itr))) {
-			select_jobinfo_t *jobinfo = (select_jobinfo_t *)
+			select_jobinfo_t *jobinfo;
+
+			if (job_ptr->magic != JOB_MAGIC) {
+				list_delete_item(itr);
+				continue;
+			}
+
+			jobinfo = (select_jobinfo_t *)
 				job_ptr->select_jobinfo->data;
 			iter = std::find(vec.begin(), vec.end(),
 					 jobinfo->user_name);