diff --git a/os/kernel/src/chthreads.c b/os/kernel/src/chthreads.c index 46039561b..73236c850 100644 --- a/os/kernel/src/chthreads.c +++ b/os/kernel/src/chthreads.c @@ -353,6 +353,7 @@ void chThdExit(msg_t msg) { REG_REMOVE(tp); #endif chSchGoSleepS(THD_STATE_FINAL); + chSysUnlock(); } #if CH_USE_WAITEXIT || defined(__DOXYGEN__) diff --git a/os/various/shell.c b/os/various/shell.c index 1fe03fc1e..8a247b9f4 100644 --- a/os/various/shell.c +++ b/os/various/shell.c @@ -206,6 +206,7 @@ static msg_t shell_thread(void *p) { } chSysLock(); chEvtBroadcastI(&shell_terminated); + chSysUnlock(); return msg; }