On Thu, 1 Oct 2015, Paul Goyette wrote:
Even before that, you might want to check whether the process truly is a zombie, or just dead - ps prints both as 'Z' - modifying (temporarily) ps to show dead processes differently (maybe just z instead of Z) might reveal that the zombie in question hasn't actually putrified yet, and is just a corpse.Interesting idea. I'm applying the following patch to ps/print.c so it will print a ZZ state for LSDEAD (vs only one Z for LSZOMB)Index: print.c =================================================================== RCS file: /cvsroot/src/bin/ps/print.c,v retrieving revision 1.123 diff -u -p -r1.123 print.c --- print.c 15 Nov 2014 01:58:34 -0000 1.123 +++ print.c 30 Sep 2015 22:44:08 -0000 @@ -513,6 +513,9 @@ state(void *arg, VARENT *ve, enum mode m *cp = 'O'; break; + case LSDEAD: + *cp++ = 'Z'; + /* FALLTHRU */ case LSZOMB: *cp = 'Z'; is_zombie = 1;
Well, I made the above change to ps, and re-ran some package builds.I had previously gone to single-user and then back to multi-user, so the latest set of package builds started with zero zombies. I now have TWO zombie processes, both of whom are showing PPID==1, and onlhy a single "Z" in the STATE field. Furthermore, the builds are still running, so the sandbox's original /bin/sh process is still running, and both zombie processes are showing a "Z+" in the STATE field - both zombies are "... in the foreground process group of [their] control terminal" (quoting from the ps(1) man page).
I'm going to let the package builds finish, then I will have a look at the process structures and see if anything else looks interesting.
+------------------+--------------------------+-------------------------+ | Paul Goyette | PGP Key fingerprint: | E-mail addresses: | | (Retired) | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com | | Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd.org | +------------------+--------------------------+-------------------------+