[launchd-changes] [23813] branches/PR-6562592/launchd/src/launchd_core_logic.c

source_changes at macosforge.org source_changes at macosforge.org
Tue Feb 17 12:21:48 PST 2009


Revision: 23813
          http://trac.macosforge.org/projects/launchd/changeset/23813
Author:   dsorresso at apple.com
Date:     2009-02-17 12:21:46 -0800 (Tue, 17 Feb 2009)
Log Message:
-----------
Minor tweaks.

Modified Paths:
--------------
    branches/PR-6562592/launchd/src/launchd_core_logic.c

Modified: branches/PR-6562592/launchd/src/launchd_core_logic.c
===================================================================
--- branches/PR-6562592/launchd/src/launchd_core_logic.c	2009-02-17 10:11:41 UTC (rev 23812)
+++ branches/PR-6562592/launchd/src/launchd_core_logic.c	2009-02-17 20:21:46 UTC (rev 23813)
@@ -371,7 +371,7 @@
 static bool jobmgr_label_test(jobmgr_t jm, const char *str);
 static void jobmgr_reap_bulk(jobmgr_t jm, struct kevent *kev);
 static void jobmgr_log_stray_children(jobmgr_t jm, bool kill_strays);
-static void jobmgr_kill_stray_child(jobmgr_t jm, pid_t *p, size_t np);
+static void jobmgr_kill_stray_children(jobmgr_t jm, pid_t *p, size_t np);
 static void jobmgr_remove(jobmgr_t jm);
 static void jobmgr_dispatch_all(jobmgr_t jm, bool newmounthack);
 static void jobmgr_dequeue_next_sample(jobmgr_t jm);
@@ -5585,7 +5585,7 @@
 }
 
 void
-jobmgr_kill_stray_child(jobmgr_t jm, pid_t *p, size_t np)
+jobmgr_kill_stray_children(jobmgr_t jm, pid_t *p, size_t np)
 {
 	struct timespec tts = { 2, 0 }; /* Wait 2 seconds for stray children to die after being SIGTERM'ed. */
 	struct timespec kts = { 1, 0 }; /* Wait 1 second for stray children to die after being SIGKILL'ed. */
@@ -5699,16 +5699,21 @@
 			jobmgr_log(jm, LOG_WARNING | LOG_CONSOLE, "Stray %s %s at shutdown: PID %u PPID %u PGID %u %s", z, j ? "anonymous job" : "process", p_i, pp_i, pg_i, n);
 			
 			int status = 0;
-			if( (kp[i].kp_proc.p_stat == SZOMB) && waitpid(p_i, &status, WNOHANG) == 0 ) {
-				jobmgr_log(jm, LOG_NOTICE | LOG_CONSOLE, "Unreaped zombie stray exited with status %i.", WEXITSTATUS(status));
+			if( (kp[i].kp_proc.p_stat == SZOMB) ) {
+				if( pp_i == getpid() && waitpid(p_i, &status, WNOHANG) == 0 ) {
+					jobmgr_log(jm, LOG_NOTICE | LOG_CONSOLE, "Unreaped zombie stray exited with status %i.", WEXITSTATUS(status));
+				}
+				kp_skipped++;
 			} else {
 				ps[i] = p_i;
 			}
+		} else {
+			kp_skipped++;
 		}
 	}
 
 	if( (kp_cnt - kp_skipped > 0) && kill_strays ) {
-		jobmgr_kill_stray_child(jm, ps, kp_cnt - kp_skipped);
+		jobmgr_kill_stray_children(jm, ps, kp_cnt - kp_skipped);
 	}
 
 	free(ps);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/launchd-changes/attachments/20090217/352d9b20/attachment.html>


More information about the launchd-changes mailing list