diff --git a/sched/init/nx_start.c b/sched/init/nx_start.c index 7840387e7f9..33573a1741b 100644 --- a/sched/init/nx_start.c +++ b/sched/init/nx_start.c @@ -801,18 +801,21 @@ void nx_start(void) for (; ; ) { #if defined(CONFIG_STACK_COLORATION) && defined(CONFIG_DEBUG_MM) - irqstate_t flags; /* Check stack in idle thread */ - for (i = 0; i < CONFIG_MAX_TASKS && g_pidhash[i].tcb; i++) + for (i = 0; i < CONFIG_MAX_TASKS; i++) { + FAR struct tcb_s *tcb; + irqstate_t flags; + flags = enter_critical_section(); - if (up_check_tcbstack_remain(g_pidhash[i].tcb) <= 0) + tcb = g_pidhash[i].tcb; + if (tcb && up_check_tcbstack_remain(tcb) <= 0) { _alert("Stack check failed, pid %d, name %s\n", - g_pidhash[i].tcb->pid, g_pidhash[i].tcb->name); + tcb->pid, tcb->name); PANIC(); }