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