summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/cortex-m/task.c3
-rw-r--r--core/cortex-m0/task.c3
-rw-r--r--core/minute-ia/task.c3
-rw-r--r--core/nds32/task.c8
-rw-r--r--core/riscv-rv32i/task.c8
5 files changed, 16 insertions, 9 deletions
diff --git a/core/cortex-m/task.c b/core/cortex-m/task.c
index 336cafc99a..f42b4f9dc0 100644
--- a/core/cortex-m/task.c
+++ b/core/cortex-m/task.c
@@ -301,7 +301,8 @@ void svc_handler(int desched, task_id_t resched)
current = current_task;
#ifdef CONFIG_DEBUG_STACK_OVERFLOW
- if (*current->stack != STACK_UNUSED_VALUE) {
+ if (*current->stack != STACK_UNUSED_VALUE &&
+ task_enabled(current - tasks)) {
panic_printf("\n\nStack overflow in %s task!\n",
task_names[current - tasks]);
software_panic(PANIC_SW_STACK_OVERFLOW, current - tasks);
diff --git a/core/cortex-m0/task.c b/core/cortex-m0/task.c
index f63e9824db..315b8d6d16 100644
--- a/core/cortex-m0/task.c
+++ b/core/cortex-m0/task.c
@@ -231,7 +231,8 @@ task_ __attribute__((noinline)) * __svc_handler(int desched, task_id_t resched)
current = current_task;
#ifdef CONFIG_DEBUG_STACK_OVERFLOW
- if (*current->stack != STACK_UNUSED_VALUE) {
+ if (*current->stack != STACK_UNUSED_VALUE &&
+ task_enabled(current - tasks)) {
panic_printf("\n\nStack overflow in %s task!\n",
task_names[current - tasks]);
software_panic(PANIC_SW_STACK_OVERFLOW, current - tasks);
diff --git a/core/minute-ia/task.c b/core/minute-ia/task.c
index 3e072344df..6322125247 100644
--- a/core/minute-ia/task.c
+++ b/core/minute-ia/task.c
@@ -221,7 +221,8 @@ uint32_t switch_handler(int desched, task_id_t resched)
current = current_task;
if (IS_ENABLED(CONFIG_DEBUG_STACK_OVERFLOW) &&
- *current->stack != STACK_UNUSED_VALUE) {
+ *current->stack != STACK_UNUSED_VALUE &&
+ task_enabled(current - tasks)) {
panic_printf("\n\nStack overflow in %s task!\n",
task_get_name(current - tasks));
diff --git a/core/nds32/task.c b/core/nds32/task.c
index 201c8731fc..bbfc5f79c7 100644
--- a/core/nds32/task.c
+++ b/core/nds32/task.c
@@ -309,9 +309,11 @@ task_ *next_sched_task(void)
#ifdef CONFIG_DEBUG_STACK_OVERFLOW
if (*current_task->stack != STACK_UNUSED_VALUE) {
int i = task_get_current();
-
- panic_printf("\n\nStack overflow in %s task!\n", task_names[i]);
- software_panic(PANIC_SW_STACK_OVERFLOW, i);
+ if (task_enabled(i)) {
+ panic_printf("\n\nStack overflow in %s task!\n",
+ task_names[i]);
+ software_panic(PANIC_SW_STACK_OVERFLOW, i);
+ }
}
#endif
diff --git a/core/riscv-rv32i/task.c b/core/riscv-rv32i/task.c
index 977987277b..48244bc1b2 100644
--- a/core/riscv-rv32i/task.c
+++ b/core/riscv-rv32i/task.c
@@ -289,9 +289,11 @@ task_ *__ram_code next_sched_task(void)
#ifdef CONFIG_DEBUG_STACK_OVERFLOW
if (*current_task->stack != STACK_UNUSED_VALUE) {
int i = task_get_current();
-
- panic_printf("\n\nStack overflow in %s task!\n", task_names[i]);
- software_panic(PANIC_SW_STACK_OVERFLOW, i);
+ if (task_enabled(i)) {
+ panic_printf("\n\nStack overflow in %s task!\n",
+ task_names[i]);
+ software_panic(PANIC_SW_STACK_OVERFLOW, i);
+ }
}
#endif