diff --git a/kernel-src/sys/syscalls/waitpid.c b/kernel-src/sys/syscalls/waitpid.c index fb1ab756..904e07d9 100644 --- a/kernel-src/sys/syscalls/waitpid.c +++ b/kernel-src/sys/syscalls/waitpid.c @@ -43,8 +43,6 @@ syscallret_t syscall_waitpid(context_t *context, pid_t pid, int *status, int opt bool continued = false; bool stopped = false; bool zombie = false; - eventlistener_t listener; - EVENT_INITLISTENER(&listener); for (;;) { if (iterator == NULL) { @@ -61,6 +59,8 @@ syscallret_t syscall_waitpid(context_t *context, pid_t pid, int *status, int opt return ret; } + eventlistener_t listener; + EVENT_INITLISTENER(&listener); EVENT_ATTACH(&listener, &proc->child_exit_event); MUTEX_RELEASE(&proc->mutex); @@ -133,9 +133,9 @@ syscallret_t syscall_waitpid(context_t *context, pid_t pid, int *status, int opt thread_t *freethread = threadlist; threadlist = threadlist->procnext; // wait until the thread can actually be unallocated - eventlistener_t listener; - EVENT_INITLISTENER(&listener); for (;;) { + eventlistener_t listener; + EVENT_INITLISTENER(&listener); EVENT_ATTACH(&listener, &iterator->thread_exit_event); if (freethread->flags & THREAD_FLAGS_DEAD) { EVENT_DETACHALL(&listener); diff --git a/recipes/astral b/recipes/astral index 8d7ec257..1e1b237f 100644 --- a/recipes/astral +++ b/recipes/astral @@ -1,5 +1,5 @@ name=astral -revision=10 +revision=11 from_source=astral imagedeps="build-essential nasm" hostdeps="xgcc xbinutils limine"