Re: unhash_pid and zombies ?

David S. Miller (davem@jenolan.rutgers.edu)
Fri, 10 Oct 1997 17:41:26 -0400


From: Peeter Joot <peeter@peeterj.torolab.ibm.com>
Date: Fri, 10 Oct 1997 01:05:43 +0000 (EST)

In exit.c where it occurs, it only occurs in release(), called by
wait4() when the process is found to be a zombie and p->p_opptr ==
p->p_pptr. Does this imply that all tasks reach this state at some
point, and this wait4 condition happens for all tasks at some point
as well.

Yes, it always goes this way. This is because even if a processes
parent disappears, it gets 'init' as it's new parent who will reap him
via wait4().

Would anybody be kind enough to tell me what all these task struct
pointers stand for:

p_opptr, p_pptr, p_cptr, p_ysptr, p_osptr

p_opptr "Old parent pointer" Used when a process gets attached to via
ptrace()

p_pptr "Parent pointer" Who the proc's current parent is

p_cptr "Child pointer" First child proc this task has

p_ysptr "Youngest Sibling pointer" Link to youngest sibling task in
this proc's "family" sorta speak

p_osptr "Oldest Sibling pointer" Oldest sibling task in this proc's
family

Here "sibling" means other tasks which have the same parent, and were
created by that parent via fork() or clone().

Later,
David "Sparc" Miller
davem@caip.rutgers.edu