diff --git a/src/process/thread_group/builder.rs b/src/process/thread_group/builder.rs index 49b3d41..87f89e5 100644 --- a/src/process/thread_group/builder.rs +++ b/src/process/thread_group/builder.rs @@ -62,7 +62,12 @@ impl ThreadGroupBuilder { pub fn build(self) -> Arc { let ret = Arc::new(ThreadGroup { tgid: self.tgid, - pgid: SpinLock::new(Pgid(self.tgid.value())), + pgid: SpinLock::new( + self.parent + .as_ref() + .map(|x| *x.pgid.lock_save_irq()) + .unwrap_or_else(|| Pgid(self.tgid.value())), + ), sid: SpinLock::new(Sid(self.tgid.value())), parent: SpinLock::new(self.parent.as_ref().map(Arc::downgrade)), umask: SpinLock::new(self.umask.unwrap_or(0)),