- pp = pfind(t->p_oppid);
- proc_reparent(t, pp ? pp : initproc);
+ proc_unlock(t);
+ pp = proc_find(t->p_oppid);
+ if (pp != PROC_NULL) {
+ proc_reparentlocked(t, pp, 1, 0);
+ proc_rele(pp);
+ } else {
+ /* original parent exited while traced */
+ proc_list_lock();
+ t->p_listflag |= P_LIST_DEADPARENT;
+ proc_list_unlock();
+ proc_reparentlocked(t, initproc, 1, 0);
+ }
+ proc_lock(t);