diff --git a/src/slurmctld/fed_mgr.c b/src/slurmctld/fed_mgr.c index 7b3f6cccc81d4cf0c8f831ff802da11fa71dd3c1..a767913b2b945ba6db20dd66e8c6decb170efed0 100644 --- a/src/slurmctld/fed_mgr.c +++ b/src/slurmctld/fed_mgr.c @@ -714,10 +714,14 @@ extern int fed_mgr_fini() lock_slurmctld(fed_write_lock); - slurm_persist_conn_recv_server_fini(); - + /* Call _leave_federation() before slurm_persist_conn_recv_server_fini() + * as this will NULL out the cluster's recv persistent connection before + * _server_fini() actually destroy's it. That way the cluster's recv + * connection won't be pointing to bad memory. */ _leave_federation(); + slurm_persist_conn_recv_server_fini(); + unlock_slurmctld(fed_write_lock); return SLURM_SUCCESS;