diff --git a/kernel/src/process/exit.rs b/kernel/src/process/exit.rs index 0f6deee49..1b327bfc8 100644 --- a/kernel/src/process/exit.rs +++ b/kernel/src/process/exit.rs @@ -82,8 +82,10 @@ fn move_process_children( ) -> core::result::Result<(), ()> { // Take the lock first to avoid the race when the `reaper_process` is exiting concurrently. let mut reaper_process_children = reaper_process.children().lock(); + + let is_init = is_init_process(&reaper_process); let is_zombie = reaper_process.status().is_zombie(); - if is_zombie { + if !is_init && is_zombie { return Err(()); }