From bc665384c3a928e2e06e7a1215b010568d0793b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Thu, 21 Jul 2022 15:56:22 +0200 Subject: [PATCH] dde_linux: free stack on task destruction Issue #4575. --- repos/dde_linux/src/lib/lx_kit/task.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/repos/dde_linux/src/lib/lx_kit/task.cc b/repos/dde_linux/src/lib/lx_kit/task.cc index 1cf1102aa7..a6951b1918 100644 --- a/repos/dde_linux/src/lib/lx_kit/task.cc +++ b/repos/dde_linux/src/lib/lx_kit/task.cc @@ -41,6 +41,13 @@ static inline void * _alloc_stack(const char * name) } +static inline void _free_stack(void *addr) +{ + Genode::Thread * th = Genode::Thread::myself(); + th->free_secondary_stack(addr); +} + + Task::State Task::state() const { return _state; } @@ -152,4 +159,8 @@ Task::Task(int (* func)(void*), } -Task::~Task() { _scheduler.remove(*this); } +Task::~Task() +{ + _scheduler.remove(*this); + _free_stack(_stack); +}