Prevent a race condition between fork1() and whatever changes the pgrp by
setting the new process' p_pgrp again before inserting it in the p_pglist. Without it we can get the new process to be inserted in a different p_pglist than the one p2->p_pgrp points to, and this is not something we want to happen. This is not a fix, merely a bandaid, but it will work until someone finds a better way to do it. Discussed with: jhb (a long time ago)
This commit is contained in:
parent
9478f5db75
commit
ced43cb5e7
@ -591,6 +591,7 @@ again:
|
||||
if (flags & RFPPWAIT)
|
||||
p2->p_flag |= P_PPWAIT;
|
||||
|
||||
p2->p_pgrp = p1->p_pgrp;
|
||||
LIST_INSERT_AFTER(p1, p2, p_pglist);
|
||||
PGRP_UNLOCK(p1->p_pgrp);
|
||||
LIST_INIT(&p2->p_children);
|
||||
|
Loading…
x
Reference in New Issue
Block a user