Revision: 23466 http://trac.macosforge.org/projects/launchd/changeset/23466 Author: zarzycki@apple.com Date: 2007-12-12 16:16:27 -0800 (Wed, 12 Dec 2007) Log Message: ----------- Misc logging updates. Modified Paths: -------------- trunk/launchd/src/launchd.c trunk/launchd/src/launchd.h trunk/launchd/src/launchd_core_logic.c trunk/launchd/src/launchd_runtime.c trunk/launchd/src/launchd_runtime.h Modified: trunk/launchd/src/launchd.c =================================================================== --- trunk/launchd/src/launchd.c 2007-12-12 21:54:32 UTC (rev 23465) +++ trunk/launchd/src/launchd.c 2007-12-13 00:16:27 UTC (rev 23466) @@ -99,8 +99,7 @@ static void *crash_addr; static pid_t crash_pid; -static bool shutdown_in_progress = false; -bool debug_shutdown_hangs = false; +bool shutdown_in_progress = false; bool network_up = false; int @@ -246,7 +245,6 @@ launchd_shutdown(void) { struct timeval tvnow; - struct stat sb; if (shutdown_in_progress) { return; @@ -254,14 +252,13 @@ shutdown_in_progress = true; - if (getpid() == 1 && stat("/var/db/debugShutdownHangs", &sb) != -1) { + if (getpid() == 1) { /* * When this changes to a more sustainable API, update this: * http://howto.apple.com/db.cgi?Debugging_Apps_Non-Responsive_At_Shutdown */ runtime_setlogmask(LOG_UPTO(LOG_DEBUG)); prep_shutdown_log_dir(); - debug_shutdown_hangs = true; } if (launchd_assumes(gettimeofday(&tvnow, NULL) != -1)) { Modified: trunk/launchd/src/launchd.h =================================================================== --- trunk/launchd/src/launchd.h 2007-12-12 21:54:32 UTC (rev 23465) +++ trunk/launchd/src/launchd.h 2007-12-13 00:16:27 UTC (rev 23466) @@ -31,7 +31,7 @@ struct kevent; struct conncb; -extern bool debug_shutdown_hangs; +extern bool shutdown_in_progress; extern bool network_up; bool init_check_pid(pid_t); Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2007-12-12 21:54:32 UTC (rev 23465) +++ trunk/launchd/src/launchd_core_logic.c 2007-12-13 00:16:27 UTC (rev 23466) @@ -710,7 +710,7 @@ } } - if (debug_shutdown_hangs && jm->parentmgr == NULL && getpid() == 1) { + if (do_apple_internal_logging() && jm->parentmgr == NULL && getpid() == 1) { runtime_set_timeout(still_alive_with_check, 5); } @@ -4294,7 +4294,7 @@ jobmgr_log_stray_children(jobmgr_t jm) { int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL }; - size_t i, kp_cnt, len = 10*1024*1024; + size_t i, kp_cnt = 0, kp_skipped = 0, len = 10*1024*1024; struct kinfo_proc *kp; if (jm->parentmgr || getpid() != 1) { @@ -4318,6 +4318,7 @@ const char *n = kp[i].kp_proc.p_comm; if (p_i == 0 || p_i == 1) { + kp_skipped++; continue; } @@ -4330,6 +4331,10 @@ } out: + if (kp_cnt == kp_skipped) { + jobmgr_log(jm, LOG_DEBUG, "No stray processes at shutdown"); + } + free(kp); } @@ -4766,7 +4771,7 @@ int wstatus; pid_t sp; - if (!debug_shutdown_hangs) { + if (!do_apple_internal_logging()) { return; } @@ -6702,7 +6707,7 @@ do_unmounts(void) { struct statfs buf[250]; - int i, found, returned; + int r, i, found, returned; do { returned = getfsstat(buf, sizeof(buf), MNT_NOWAIT); @@ -6720,8 +6725,11 @@ continue; } - runtime_syslog(LOG_DEBUG, "About to unmount: %s", buf[i].f_mntonname); - if (launchd_assumes(unmount(buf[i].f_mntonname, 0) != -1)) { + r = unmount(buf[i].f_mntonname, 0); + + runtime_syslog(LOG_DEBUG, "unmount(\"%s\", 0): %s", buf[i].f_mntonname, r == -1 ? strerror(errno) : "Success"); + + if (r != -1) { found++; } } Modified: trunk/launchd/src/launchd_runtime.c =================================================================== --- trunk/launchd/src/launchd_runtime.c 2007-12-12 21:54:32 UTC (rev 23465) +++ trunk/launchd/src/launchd_runtime.c 2007-12-13 00:16:27 UTC (rev 23466) @@ -1131,7 +1131,7 @@ int runtime_fsync(int fd) { - if (debug_shutdown_hangs) { + if (do_apple_internal_logging()) { return fcntl(fd, F_FULLFSYNC, NULL); } else { return fsync(fd); @@ -1169,19 +1169,13 @@ static pthread_mutex_t ourlock = PTHREAD_MUTEX_INITIALIZER; static struct timeval shutdown_start; static struct timeval prev_msg; - static int apple_internal_logging = 1; struct timeval tvnow, tvd_total, tvd_msg_delta = { 0, 0 }; - struct stat sb; int saved_errno = errno; char newmsg[10000]; size_t i, j; - if (apple_internal_logging == 1) { - apple_internal_logging = stat("/AppleInternal", &sb); - } - if (attr->priority == LOG_APPLEONLY) { - if (apple_internal_logging == 0) { + if (do_apple_internal_logging()) { attr->priority = LOG_NOTICE; } else { return; @@ -1192,7 +1186,7 @@ goto out; } - if (!(debug_shutdown_hangs && getpid() == 1)) { + if (getpid() != 1 || !shutdown_in_progress) { vsnprintf(newmsg, sizeof(newmsg), message, args); logmsg_add(attr, saved_errno, newmsg); goto out; @@ -1567,3 +1561,16 @@ launchd_mport_deallocate(mhs); } + +bool +do_apple_internal_logging(void) +{ + static int apple_internal_logging = 1; + struct stat sb; + + if (apple_internal_logging == 1) { + apple_internal_logging = stat("/AppleInternal", &sb); + } + + return (apple_internal_logging == 0); +} Modified: trunk/launchd/src/launchd_runtime.h =================================================================== --- trunk/launchd/src/launchd_runtime.h 2007-12-12 21:54:32 UTC (rev 23465) +++ trunk/launchd/src/launchd_runtime.h 2007-12-13 00:16:27 UTC (rev 23466) @@ -123,6 +123,7 @@ const char *reboot_flags_to_C_names(unsigned int flags); const char *proc_flags_to_C_names(unsigned int flags); +bool do_apple_internal_logging(void); int kevent_bulk_mod(struct kevent *kev, size_t kev_cnt); int kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata);
participants (1)
-
source_changes@macosforge.org