--- src/sys/kern/kern_proc.c 2005/11/14 18:50:05 1.21 +++ src/sys/kern/kern_proc.c 2005/12/01 18:30:08 1.22 @@ -312,7 +312,7 @@ fixjobc(struct proc *p, struct pgrp *pgr LIST_FOREACH(p, &p->p_children, p_sibling) if ((hispgrp = p->p_pgrp) != pgrp && hispgrp->pg_session == mysession && - p->p_stat != SZOMB) { + (p->p_flag & P_ZOMBIE) == 0) { if (entering) hispgrp->pg_jobc++; else if (--hispgrp->pg_jobc == 0) @@ -421,7 +421,8 @@ fill_eproc(struct proc *p, struct eproc if (p->p_procsig) { ep->e_procsig = *p->p_procsig; } - if (p->p_stat != SIDL && p->p_stat != SZOMB && p->p_vmspace != NULL) { + if (p->p_stat != SIDL && (p->p_flag & P_ZOMBIE) == 0 && + p->p_vmspace != NULL) { struct vmspace *vm = p->p_vmspace; ep->e_vm = *vm; ep->e_vm.vm_rssize = vmspace_resident_count(vm); /*XXX*/ @@ -493,6 +494,8 @@ sysctl_out_proc(struct proc *p, struct t */ if (p->p_stat == SSLEEP && (p->p_flag & P_STOPPED)) xproc.p_stat = SSTOP; + if (p->p_flag & P_ZOMBIE) + xproc.p_stat = SZOMB; } else if (td) { fill_eproc_td(td, &eproc, &xproc); }