diff --git a/libs/libc/stdlib/lib_exit.c b/libs/libc/stdlib/lib_exit.c index 1eee064e0bb..562cae251a8 100644 --- a/libs/libc/stdlib/lib_exit.c +++ b/libs/libc/stdlib/lib_exit.c @@ -108,6 +108,10 @@ void exit(int status) atexit_call_exitfuncs(status, false); +#if defined(CONFIG_TLS_TASK_NELEM) && CONFIG_TLS_TASK_NELEM > 0 + task_tls_destruct(); +#endif + #ifdef CONFIG_FILE_STREAM /* Flush all streams */ diff --git a/sched/group/group_leave.c b/sched/group/group_leave.c index 6d2a8c10126..6dfef6c1ccd 100644 --- a/sched/group/group_leave.c +++ b/sched/group/group_leave.c @@ -128,10 +128,6 @@ static void group_remove(FAR struct task_group_s *group) static inline void group_release(FAR struct task_group_s *group) { -#if defined(CONFIG_TLS_TASK_NELEM) && CONFIG_TLS_TASK_NELEM > 0 - task_tls_destruct(); -#endif - task_uninit_info(group); #if defined(CONFIG_SCHED_HAVE_PARENT) && defined(CONFIG_SCHED_CHILD_STATUS)