fix(controller): guard config push against NULL cluster_config on cold boot

Merge the scheduler-join NULL guard from the remote js branch: if the
controller's cluster config is not loaded yet (cold boot / config not
pushed yet), xcesched_push_configs would dereference a NULL cluster_config
and crash the controller (ASan SEGV on scheduler join). Skip the push; the
scheduler receives config on a later join once config is available.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
lei.chen 2026-08-11 03:19:02 +00:00
parent a9e6446b1e
commit 5657fca7f7

View file

@ -147,6 +147,17 @@ static int xcesched_push_configs(cluster_t* c)
memset(&configdata, 0x0, sizeof(configdata));
if (c->myconf == NULL || c->myconf->cluster_config == NULL) {
/* No cluster config loaded yet (cold boot / config not pushed yet).
* Pushing configs now would dereference a NULL cluster_config and
* crash the controller (ASan SEGV on scheduler join). Skip; the
* scheduler will receive config on a later join once config is
* available. */
WARN("%s: cluster_config not loaded yet, skipping config push",
__func__);
return 0;
}
configdata.data.conf4sched
= (xce_conf4sched_t*)calloc(1, sizeof(xce_conf4sched_t));
if (configdata.data.conf4sched == NULL) {