From 23937a239f50d1487e89f3184e4f4b933d6842c6 Mon Sep 17 00:00:00 2001 From: zhushengle Date: Thu, 10 Jun 2021 19:18:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=203518=E5=B9=B3=E5=8F=B0,=20=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=B5=8B=E8=AF=95=E8=BF=9B=E7=A8=8B=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E9=80=80=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit  用户态线程在用户态处于while(1), 在中断处理时使该线程处于READY状态, 此时进程退出时该线程无法被正常回收,导致进程无法合理退出。 Close #I3V8R5 Change-Id: I7f83f5f7fe41c03eb602bf78cfd33fff1b0acdb7 Signed-off-by: zhushengle --- kernel/base/core/los_task.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/base/core/los_task.c b/kernel/base/core/los_task.c index 8361459c..2d00d589 100644 --- a/kernel/base/core/los_task.c +++ b/kernel/base/core/los_task.c @@ -1452,7 +1452,8 @@ LITE_OS_SEC_TEXT VOID OsTaskExitGroup(UINT32 status) LOS_DL_LIST *head = list; do { LosTaskCB *taskCB = LOS_DL_LIST_ENTRY(list->pstNext, LosTaskCB, threadList); - if ((taskCB->taskStatus & (OS_TASK_STATUS_INIT | OS_TASK_STATUS_EXIT)) && + if ((taskCB->taskStatus & (OS_TASK_STATUS_INIT | OS_TASK_STATUS_EXIT) || + ((taskCB->taskStatus & OS_TASK_STATUS_READY) && !taskCB->sig.sigIntLock)) && !(taskCB->taskStatus & OS_TASK_STATUS_RUNNING)) { OsTaskDeleteInactive(processCB, taskCB); } else { -- GitLab