Merge branch 'process-wait' into 'userprog-merge'
Fix race-condition in process result (memory leak), fix infinite loop in donors_list See merge request lab2425_autumn/pintos_22!33
This commit is contained in:
@@ -326,11 +326,12 @@ process_exit (void)
|
||||
struct process_result *, and may be waiting so call sema_up */
|
||||
else
|
||||
{
|
||||
lock_release (&cur->result->lock);
|
||||
sema_up (&cur->result->sema);
|
||||
lock_release (&cur->result->lock);
|
||||
}
|
||||
}
|
||||
|
||||
/* Free child process results or signal parent's death. */
|
||||
struct list_elem *e;
|
||||
for (e = list_begin (&cur->child_results);
|
||||
e != list_end (&cur->child_results); e = list_next (e))
|
||||
@@ -347,8 +348,8 @@ process_exit (void)
|
||||
/* Child is still alive, signal via sema that parent has died. */
|
||||
else
|
||||
{
|
||||
lock_release (&result->lock);
|
||||
sema_up (&result->sema);
|
||||
lock_release (&result->lock);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user