diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index ef3094db70d1c047f42445a7a413e15ea1f217a2..76e2553943fb654e0abdcc0c9751bc9af44b8da4 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -678,6 +678,12 @@ int main(int argc, char *argv[])
 			break;
 		sleep(1);
 	}
+	/* Always call slurm_select_fini() on some systems like
+	   BlueGene we need to make sure other processes are ended
+	   or we could get a random core from within it's
+	   underlying infrastructure.
+	*/
+        slurm_select_fini();
 #endif
 
 	xfree(slurmctld_cluster_name);