Boreas's K_SEM_DEFINE requires a runtime k_sem_init() call after the macro; upstream's produces a fully-initialized struct usable before main(). SYS_INIT-time and constructor-time consumers hit this as a silent (or crashing) ordering dependency.
Fix: a real compile-time initializer, the way K_TIMER_DEFINE already does it. Depends on whether StaticSemaphore_t can be made constructor-free (e.g. lazy xSemaphoreCreateCountingStatic on first use behind an init-flag, or init via a Boreas SYS_INIT at PRE_KERNEL priority as a stopgap).
Boreas's
K_SEM_DEFINErequires a runtimek_sem_init()call after the macro; upstream's produces a fully-initialized struct usable beforemain(). SYS_INIT-time and constructor-time consumers hit this as a silent (or crashing) ordering dependency.Fix: a real compile-time initializer, the way
K_TIMER_DEFINEalready does it. Depends on whetherStaticSemaphore_tcan be made constructor-free (e.g. lazyxSemaphoreCreateCountingStaticon first use behind an init-flag, or init via a Boreas SYS_INIT at PRE_KERNEL priority as a stopgap).