[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