summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-06-09 16:09:42 -0400
committerIan Moffett <ian@osmora.org>2025-06-09 16:09:42 -0400
commitaf8ee74012876b5e59f2cb6d414c570b204aa319 (patch)
tree30f3c3625d62df3f6d84ec5809de187d81fb8d5c /sys
parent4be8822bf3eb4b9f1004d898deb4d26b7ee93eec (diff)
kernel: spawn: Wait on both PROC_SLEEP + PROC_ZOMB
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_spawn.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/kern/kern_spawn.c b/sys/kern/kern_spawn.c
index c554cca..60d8e22 100644
--- a/sys/kern/kern_spawn.c
+++ b/sys/kern/kern_spawn.c
@@ -169,11 +169,12 @@ spawn(struct proc *cur, void(*func)(void), void *p, int flags, struct proc **new
if (ISSET(flags, SPAWN_WAIT)) {
cur->flags |= PROC_SLEEP;
- sched_yield();
- if (!ISSET(newproc->flags, PROC_ZOMB)) {
- pr_error("spawn: fatal: %d not zombie\n", newproc->pid);
- panic("possibly memory corruption\n");
+ while (ISSET(cur->flags, PROC_SLEEP)) {
+ sched_yield();
+ }
+ while (!ISSET(newproc->flags, PROC_ZOMB)) {
+ sched_yield();
}
if (newproc->exit_status < 0) {