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 {