On Sun, Oct 11, 2015 at 04:39:55AM +0700, Robert Elz wrote: > This in spawn_return() [kern_exec.c] > > There the status of the process is set to SSTOP without incrementing > the parent's p_nstopchild, violating the definition of that field. > But then it is (fairly soon after) set back again .. if no error occurred. > > If there was an error, spawn_return() calls exit1(), which (eventually) > sets the process state to SDEAD and increments the parent's p_nstopchild > (regardless of the state of the process when exit1() was called). > (Before SDEAD the state is set to SDYING, where p_nstopchild should not > count it.) > > Hence if p_nstopchild had been incremented in spawn_return() and not > decremented again (as the state is left at SSTOP in the error case), > then exit1() would cause the process to be counted twice.
We should still fix this error path! Martin
