From c9b162528d0dc6d29625a315fb7ccddda5fd5821 Mon Sep 17 00:00:00 2001 From: ChenRuiwei <1982833213@qq.com> Date: Mon, 19 Aug 2024 15:50:47 +0800 Subject: [PATCH] fix(task)!: work around, do not panic when arc parent can not upgrade --- kernel/src/task/task.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/kernel/src/task/task.rs b/kernel/src/task/task.rs index 57bdfd47..7807c3c7 100644 --- a/kernel/src/task/task.rs +++ b/kernel/src/task/task.rs @@ -619,15 +619,18 @@ impl Task { // NOTE: leader will be removed by parent calling `sys_wait4` if let Some(parent) = self.parent() { - let parent = parent.upgrade().unwrap(); - parent.receive_siginfo( - SigInfo { - sig: Sig::SIGCHLD, - code: SigInfo::CLD_EXITED, - details: SigDetails::None, - }, - false, - ); + if let Some(parent) = parent.upgrade() { + parent.receive_siginfo( + SigInfo { + sig: Sig::SIGCHLD, + code: SigInfo::CLD_EXITED, + details: SigDetails::None, + }, + false, + ) + } else { + log::error!("no arc parent"); + } } // Upon _exit(2), all attached shared memory segments are detached from the