|From:||YONETANI Tomokazu <qhwt+dfly@xxxxxxxxxx>|
|Date:||Sun, 25 Jan 2009 18:06:33 +0900|
On Sun, Jan 25, 2009 at 12:24:26AM -0800, Matthew Dillon wrote: > > :I found a similar zombie process on a PC running -DEVELOPMENT > :(as of 89f297df...), with p_stat==SACTIVE and p_lock==1. The stuck > :process was git again. The previous ones were `git log', and this time > :`git show', all of which involve $PAGER. I tried issuing the same command > :several times, but I couldn't reproduce another zombie yet. > > Check p_xstat, see if it is SIGSTOP or SIGTSTP. I think it's going > from SZOMB -> SSTOP -> SACTIVE (on kill or cont) due to the signal. > The p_lock == 1 is due to the exiting LWP and is correct. Yes, that's SIGTSTP (attached `p *zombproc->lh_first' result). > I just made another commit which should catch zombied processes which > are improperly resurrected by a stop signal. However, I couldn't > reproduce it to test the fix... the window of opportunity is fairly > small. I found how I made the zombie: ---- $ unset PAGER (or unsetenv if you like *csh) $ cd /path/to/git/repo $ git show 55a9cd0fa2b75e61230e2802b78eaec8937a1e42 here the pager display 7 lines of commitlog and the patch, and `(END)' at the end. Suspend it by pressing ctrl+Z, then type fg to resume, and press `q' in the pager to leave it. $ ps x now you see another zombie. ---- I'll try this on the new kernel and see if I can still reproduce it. Thanks.
Description: Binary data