From 7778e05aa42e7fa8c6f0e2aee1924f3c2df64ec8 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Sat, 9 Nov 2024 11:06:36 +0000 Subject: [PATCH] Fix deadlock by release of lock and semaphore in the wrong order --- src/userprog/process.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/userprog/process.c b/src/userprog/process.c index 370a216..3943b21 100644 --- a/src/userprog/process.c +++ b/src/userprog/process.c @@ -262,8 +262,8 @@ process_exit (void) struct process_result *, and may be waiting so call sema_up */ else { - sema_up (&cur->result->sema); lock_release (&cur->result->lock); + sema_up (&cur->result->sema); } } @@ -283,8 +283,8 @@ process_exit (void) /* Child is still alive, signal via sema that parent has died. */ else { - sema_up (&result->sema); lock_release (&result->lock); + sema_up (&result->sema); } }