[launchd-changes] [23814] branches/PR-6562592/launchd/src/launchd_core_logic.c
source_changes at macosforge.org
source_changes at macosforge.org
Tue Feb 17 13:00:19 PST 2009
Revision: 23814
http://trac.macosforge.org/projects/launchd/changeset/23814
Author: dsorresso at apple.com
Date: 2009-02-17 13:00:17 -0800 (Tue, 17 Feb 2009)
Log Message:
-----------
More 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 20:21:46 UTC (rev 23813)
+++ branches/PR-6562592/launchd/src/launchd_core_logic.c 2009-02-17 21:00:17 UTC (rev 23814)
@@ -5598,23 +5598,24 @@
}
start = runtime_get_opaque_time();
- size_t i = 0, ns = 0;
+ size_t i = 0, n2t = 0;
for( i = 0; i < np; i++ ) {
if( p[i] != 0 ) {
EV_SET(&kev, p[i], EVFILT_PROC, EV_ADD, NOTE_EXIT, 0, 0);
if( jobmgr_assumes(jm, kevent(kq, &kev, 1, NULL, 0, NULL) != -1) ) {
- ns++;
+ jobmgr_assumes(jm, runtime_kill(p[i], SIGTERM) != -1);
+ n2t++;
+ } else {
+ jobmgr_log(jm, LOG_DEBUG | LOG_CONSOLE, "Disregarding PID %u and continuing.", p[i]);
+ p[i] = 0;
}
- jobmgr_assumes(jm, runtime_kill(p[i], SIGTERM) != -1);
}
}
- size_t nd = 0;
- while( (r = kevent(kq, NULL, 0, &kev, 1, &tts)) ) {
+ while( n2t > 0 && (r = kevent(kq, NULL, 0, &kev, 1, &tts)) ) {
int status = 0;
waitpid((pid_t)kev.ident, &status, WNOHANG);
- nd++;
end = runtime_get_opaque_time();
nanosec = runtime_opaque_time_to_nano(end - start);
@@ -5625,21 +5626,17 @@
}
}
+ size_t n2k = 0;
for( i = 0; i < np; i++ ) {
if( p[i] != 0 ) {
- EV_SET(&kev, p[i], EVFILT_PROC, EV_ADD, NOTE_EXIT, 0, 0);
-
- if( jobmgr_assumes(jm, kevent(kq, &kev, 1, NULL, 0, NULL) != -1) ) {
- ns++;
- }
jobmgr_assumes(jm, runtime_kill(p[i], SIGKILL) != -1);
+ n2k++;
}
}
- while( (r = kevent(kq, NULL, 0, &kev, 1, &kts)) ) {
+ while( n2k > 0 && (r = kevent(kq, NULL, 0, &kev, 1, &kts)) ) {
int status = 0;
waitpid((pid_t)kev.ident, &status, WNOHANG);
- nd++;
end = runtime_get_opaque_time();
nanosec = runtime_opaque_time_to_nano(end - start);
@@ -5652,7 +5649,7 @@
for( i = 0; i < np; i++ ) {
if( p[i] != 0 ) {
- jobmgr_log(jm, LOG_DEBUG | LOG_CONSOLE, "Disregarding PID %u and continuing.", p[i]);
+ jobmgr_log(jm, LOG_NOTICE | LOG_CONSOLE, "PID %u did not die after being SIGKILL'ed 1 second ago.", p[i]);
}
}
}
@@ -5699,8 +5696,8 @@
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) ) {
- if( pp_i == getpid() && waitpid(p_i, &status, WNOHANG) == 0 ) {
+ if( pp_i == getpid() && !jobmgr_assumes(jm, kp[i].kp_proc.p_stat != SZOMB) ) {
+ if( jobmgr_assumes(jm, waitpid(p_i, &status, WNOHANG) == 0) ) {
jobmgr_log(jm, LOG_NOTICE | LOG_CONSOLE, "Unreaped zombie stray exited with status %i.", WEXITSTATUS(status));
}
kp_skipped++;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/launchd-changes/attachments/20090217/2a9cfd75/attachment.html>
More information about the launchd-changes
mailing list