From source_changes at macosforge.org Wed Apr 2 09:43:07 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 2 09:44:37 2008 Subject: [launchd-changes] [23582] trunk/launchd/src/libvproc_internal.h Message-ID: <20080402164307.43CB3154387F@beta.macosforge.org> Revision: 23582 http://trac.macosforge.org/projects/launchd/changeset/23582 Author: zarzycki@apple.com Date: 2008-04-02 09:43:05 -0700 (Wed, 02 Apr 2008) Log Message: ----------- 10A35: Stalled NetInstall of 10A35 Modified Paths: -------------- trunk/launchd/src/libvproc_internal.h Modified: trunk/launchd/src/libvproc_internal.h =================================================================== --- trunk/launchd/src/libvproc_internal.h 2008-03-28 23:01:07 UTC (rev 23581) +++ trunk/launchd/src/libvproc_internal.h 2008-04-02 16:43:05 UTC (rev 23582) @@ -94,7 +94,7 @@ const char *msg; uint64_t msg_offset; }; - size_t obj_sz; + uint64_t obj_sz; char data[0]; }; -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080402/bcbfb1b8/attachment.html From source_changes at macosforge.org Wed Apr 2 10:31:17 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 2 10:33:06 2008 Subject: [launchd-changes] [23583] trunk/launchd/src/StartupItems.c Message-ID: <20080402173117.CC5D51543B6A@beta.macosforge.org> Revision: 23583 http://trac.macosforge.org/projects/launchd/changeset/23583 Author: zarzycki@apple.com Date: 2008-04-02 10:31:16 -0700 (Wed, 02 Apr 2008) Log Message: ----------- 10A41: SystemStarter crashes when FORTIFY is enabled Modified Paths: -------------- trunk/launchd/src/StartupItems.c Modified: trunk/launchd/src/StartupItems.c =================================================================== --- trunk/launchd/src/StartupItems.c 2008-04-02 16:43:05 UTC (rev 23582) +++ trunk/launchd/src/StartupItems.c 2008-04-02 17:31:16 UTC (rev 23583) @@ -286,7 +286,7 @@ while ((aState = NSGetNextSearchPathEnumeration(aState, aPath))) { DIR *aDirectory; - strcpy(aPath + strlen(aPath), kStartupItemsPath); + strlcat(aPath, kStartupItemsPath, sizeof(aPath)); ++aDomainIndex; /* 5485016 @@ -923,29 +923,18 @@ anError = 0; } else { CFStringRef aBundlePathString = CFDictionaryGetValue(anItem, kBundlePathKey); - size_t aBundlePathCLength = - CFStringGetMaximumSizeForEncoding(CFStringGetLength(aBundlePathString), kCFStringEncodingUTF8) + 1; - char *aBundlePath = (char *)malloc(aBundlePathCLength); - char anExecutable[PATH_MAX] = ""; + char aBundlePath[PATH_MAX]; + char anExecutable[PATH_MAX]; + char *tmp; - if (!aBundlePath) { - syslog(LOG_EMERG, "malloc() failed; out of memory while running item %s", aBundlePathString); - return (anError); - } - if (!CFStringGetCString(aBundlePathString, aBundlePath, aBundlePathCLength, kCFStringEncodingUTF8)) { + if (!CFStringGetCString(aBundlePathString, aBundlePath, sizeof(aBundlePath), kCFStringEncodingUTF8)) { CF_syslog(LOG_EMERG, CFSTR("Internal error while running item %@"), aBundlePathString); return (anError); } /* Compute path to excecutable */ - { - char *tmp; - strncpy(anExecutable, aBundlePath, sizeof(anExecutable)); /* .../foo */ - tmp = rindex(anExecutable, '/'); /* /foo */ - strncat(anExecutable, tmp, strlen(tmp)); /* .../foo/foo */ - } + tmp = rindex(aBundlePath, '/'); + snprintf(anExecutable, sizeof(anExecutable), "%s%s", aBundlePath, tmp); - free(aBundlePath); - /** * Run the bundle **/ -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080402/763bd6b7/attachment.html From source_changes at macosforge.org Wed Apr 2 10:48:27 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 2 10:49:57 2008 Subject: [launchd-changes] [23584] trunk/launchd/src/launchd_core_logic.c Message-ID: <20080402174827.519991543C07@beta.macosforge.org> Revision: 23584 http://trac.macosforge.org/projects/launchd/changeset/23584 Author: zarzycki@apple.com Date: 2008-04-02 10:48:25 -0700 (Wed, 02 Apr 2008) Log Message: ----------- Work around Unix (environmental variables and credentials are copied, not referenced) Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-02 17:31:16 UTC (rev 23583) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-02 17:48:25 UTC (rev 23584) @@ -428,6 +428,7 @@ static bool job_setup_machport(job_t j); static void job_setup_fd(job_t j, int target_fd, const char *path, int flags); static void job_postfork_become_user(job_t j); +static void job_postfork_test_user(job_t j); static void job_log_pids_with_weird_uids(job_t j); static void job_force_sampletool(job_t j); static void job_setup_exception_port(job_t j, task_t target_task); @@ -3109,6 +3110,77 @@ } void +job_postfork_test_user(job_t j) +{ + /* This function is all about 5201578 */ + + const char *shell_env_var = getenv("SHELL"); + const char *home_env_var = getenv("HOME"); + const char *user_env_var = getenv("USER"); + const char *logname_env_var = getenv("LOGNAME"); + uid_t tmp_uid, local_uid = getuid(); + gid_t tmp_gid, local_gid = getgid(); + char shellpath[PATH_MAX]; + char homedir[PATH_MAX]; + char loginname[2000]; + struct passwd *pwe; + + + if (!job_assumes(j, shell_env_var && home_env_var && user_env_var && logname_env_var + && strcmp(user_env_var, logname_env_var) == 0)) { + goto out_bad; + } + + if ((pwe = getpwnam(user_env_var)) == NULL) { + job_log(j, LOG_ERR, "The account \"%s\" has been deleted out from under us!", user_env_var); + goto out_bad; + } + + /* + * We must copy the results of getpw*(). + * + * Why? Because subsequent API calls may call getpw*() as a part of + * their implementation. Since getpw*() returns a [now thread scoped] + * global, we must therefore cache the results before continuing. + */ + + tmp_uid = pwe->pw_uid; + tmp_gid = pwe->pw_gid; + + strlcpy(shellpath, pwe->pw_shell, sizeof(shellpath)); + strlcpy(loginname, pwe->pw_name, sizeof(loginname)); + strlcpy(homedir, pwe->pw_dir, sizeof(homedir)); + + if (strcmp(shellpath, shell_env_var) != 0) { + job_log(j, LOG_ERR, "The %s environmental variable changed out from under us!", "SHELL"); + goto out_bad; + } + if (strcmp(loginname, logname_env_var) != 0) { + job_log(j, LOG_ERR, "The %s environmental variable changed out from under us!", "USER"); + goto out_bad; + } + if (strcmp(homedir, home_env_var) != 0) { + job_log(j, LOG_ERR, "The %s environmental variable changed out from under us!", "HOME"); + goto out_bad; + } + if (local_uid != tmp_uid) { + job_log(j, LOG_ERR, "The %cID of the account (%u) changed out from under us (%u)!", + 'U', tmp_uid, local_uid); + goto out_bad; + } + if (local_gid != tmp_gid) { + job_log(j, LOG_ERR, "The %cID of the account (%u) changed out from under us (%u)!", + 'G', tmp_gid, local_gid); + goto out_bad; + } + + return; +out_bad: + job_assumes(j, runtime_kill(getppid(), SIGTERM) != -1); + _exit(EXIT_FAILURE); +} + +void job_postfork_become_user(job_t j) { char loginname[2000]; @@ -3121,7 +3193,7 @@ uid_t desired_uid = -1; if (getuid() != 0) { - return; + return job_postfork_test_user(j); } /* -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080402/21abbd8c/attachment-0001.html From source_changes at macosforge.org Wed Apr 2 13:18:53 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 2 13:20:24 2008 Subject: [launchd-changes] [23585] branches/SULeopard/launchd/src/launchd_core_logic.c Message-ID: <20080402201853.CA64C1546622@beta.macosforge.org> Revision: 23585 http://trac.macosforge.org/projects/launchd/changeset/23585 Author: zarzycki@apple.com Date: 2008-04-02 13:18:49 -0700 (Wed, 02 Apr 2008) Log Message: ----------- 10.5.3 Regression: Failure to shutdown in 9D11 with zombie shutdown Modified Paths: -------------- branches/SULeopard/launchd/src/launchd_core_logic.c Modified: branches/SULeopard/launchd/src/launchd_core_logic.c =================================================================== --- branches/SULeopard/launchd/src/launchd_core_logic.c 2008-04-02 17:48:25 UTC (rev 23584) +++ branches/SULeopard/launchd/src/launchd_core_logic.c 2008-04-02 20:18:49 UTC (rev 23585) @@ -3884,7 +3884,7 @@ } else if (j->removal_pending) { job_log(j, LOG_DEBUG, "Exited while removal was pending."); return true; - } else if (j->mgr->shutting_down && j->mgr->hopefully_first_cnt == 0) { + } else if (j->mgr->shutting_down && (j->hopefully_exits_first || j->mgr->hopefully_first_cnt == 0)) { job_log(j, LOG_DEBUG, "Exited while shutdown in progress. Processes remaining: %lu/%lu", total_children, total_anon_children); return true; } else if (j->legacy_mach_job) { @@ -3910,13 +3910,17 @@ struct stat sb; bool good_exit = (WIFEXITED(j->last_exit_status) && WEXITSTATUS(j->last_exit_status) == 0); + if (j->mgr->shutting_down) { + return false; + } + /* * 5066316 * * We definitely need to revisit this after Leopard ships. Please see * launchctl.c for the other half of this hack. */ - if ((j->mgr->shutting_down || j->mgr->global_on_demand_cnt > 0) && strcmp(j->label, "com.apple.kextd") != 0) { + if (j->mgr->global_on_demand_cnt > 0 && strcmp(j->label, "com.apple.kextd") != 0) { return false; } -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080402/5842e977/attachment.html From source_changes at macosforge.org Wed Apr 2 13:22:03 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 2 13:23:32 2008 Subject: [launchd-changes] [23586] trunk/launchd/src/launchd_core_logic.c Message-ID: <20080402202203.E5E611546782@beta.macosforge.org> Revision: 23586 http://trac.macosforge.org/projects/launchd/changeset/23586 Author: zarzycki@apple.com Date: 2008-04-02 13:22:03 -0700 (Wed, 02 Apr 2008) Log Message: ----------- 10.5.3 Regression: Failure to shutdown in 9D11 with zombie shutdown Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-02 20:18:49 UTC (rev 23585) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-02 20:22:03 UTC (rev 23586) @@ -4175,7 +4175,7 @@ } else if (j->removal_pending) { job_log(j, LOG_DEBUG, "Exited while removal was pending."); return true; - } else if (j->mgr->shutting_down && j->mgr->hopefully_first_cnt == 0) { + } else if (j->mgr->shutting_down && (j->hopefully_exits_first || j->mgr->hopefully_first_cnt == 0)) { job_log(j, LOG_DEBUG, "Exited while shutdown in progress. Processes remaining: %lu/%lu", total_children, total_anon_children); return true; } else if (j->legacy_mach_job) { @@ -4202,13 +4202,17 @@ bool good_exit = (WIFEXITED(j->last_exit_status) && WEXITSTATUS(j->last_exit_status) == 0); bool is_not_kextd = (do_apple_internal_logging || (strcmp(j->label, "com.apple.kextd") != 0)); + if (unlikely(j->mgr->shutting_down)) { + return false; + } + /* * 5066316 * * We definitely need to revisit this after Leopard ships. Please see * launchctl.c for the other half of this hack. */ - if (unlikely((j->mgr->shutting_down || j->mgr->global_on_demand_cnt > 0) && is_not_kextd)) { + if (unlikely((j->mgr->global_on_demand_cnt > 0) && is_not_kextd)) { return false; } -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080402/8d65dc0c/attachment.html From source_changes at macosforge.org Wed Apr 2 13:23:40 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 2 13:25:08 2008 Subject: [launchd-changes] [23587] tags/launchd-258.12/ Message-ID: <20080402202340.52E3E154687F@beta.macosforge.org> Revision: 23587 http://trac.macosforge.org/projects/launchd/changeset/23587 Author: zarzycki@apple.com Date: 2008-04-02 13:23:40 -0700 (Wed, 02 Apr 2008) Log Message: ----------- "Tagging launchd-258.12 from https://svn.macosforge.org/repository/launchd/branches/SULeopard" Added Paths: ----------- tags/launchd-258.12/ Copied: tags/launchd-258.12 (from rev 23586, branches/SULeopard) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080402/54dd1680/attachment.html From source_changes at macosforge.org Wed Apr 2 13:26:27 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 2 13:28:34 2008 Subject: [launchd-changes] [23588] tags/launchd-268/ Message-ID: <20080402202627.574BF15469E3@beta.macosforge.org> Revision: 23588 http://trac.macosforge.org/projects/launchd/changeset/23588 Author: zarzycki@apple.com Date: 2008-04-02 13:26:26 -0700 (Wed, 02 Apr 2008) Log Message: ----------- "Tagging launchd-268 from https://svn.macosforge.org/repository/launchd/trunk" Added Paths: ----------- tags/launchd-268/ Copied: tags/launchd-268 (from rev 23587, trunk) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080402/032d48f9/attachment-0001.html From source_changes at macosforge.org Wed Apr 2 13:57:46 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 2 13:59:15 2008 Subject: [launchd-changes] [23589] trunk/launchd/src Message-ID: <20080402205746.28243154775E@beta.macosforge.org> Revision: 23589 http://trac.macosforge.org/projects/launchd/changeset/23589 Author: zarzycki@apple.com Date: 2008-04-02 13:57:44 -0700 (Wed, 02 Apr 2008) Log Message: ----------- Observably inaccurate logging during shutdown (exit duration) Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c trunk/launchd/src/launchd_runtime.c trunk/launchd/src/launchd_runtime.h Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-02 20:26:26 UTC (rev 23588) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-02 20:57:44 UTC (rev 23589) @@ -2326,13 +2326,12 @@ } if (j->sent_sigterm_time) { - uint64_t td_sec, td_usec, td = runtime_opaque_time_to_nano(runtime_get_opaque_time() - j->sent_sigterm_time); + uint64_t td_sec, td_usec, td = runtime_get_nanoseconds_since(j->sent_sigterm_time); td_sec = td / NSEC_PER_SEC; td_usec = (td % NSEC_PER_SEC) / NSEC_PER_USEC; - job_log(j, LOG_INFO, "Exited %lld.%06lld seconds after %s was sent", - td_sec, td_usec, signal_to_C_name(j->sent_sigkill ? SIGKILL : SIGTERM)); + job_log(j, LOG_INFO, "Exited %lld.%06lld seconds after %s was sent", td_sec, td_usec, signal_to_C_name(SIGTERM)); } #if DO_RUSAGE_SUMMATION @@ -2620,7 +2619,7 @@ job_dispatch(j, false); } else if (&j->exit_timeout == ident) { if (j->sent_sigkill) { - uint64_t td = runtime_opaque_time_to_nano(runtime_get_opaque_time() - j->sent_sigterm_time); + uint64_t td = runtime_get_nanoseconds_since(j->sent_sigterm_time); td /= NSEC_PER_SEC; td -= j->exit_timeout; @@ -2752,7 +2751,7 @@ void job_start(job_t j) { - uint64_t td, tnow = runtime_get_opaque_time(); + uint64_t td; int spair[2]; int execspair[2]; int oepair[2]; @@ -2770,14 +2769,12 @@ return; } - job_assumes(j, tnow > j->start_time); - /* * Some users adjust the wall-clock and then expect software to not notice. * Therefore, launchd must use an absolute clock instead of the wall clock * wherever possible. */ - td = runtime_opaque_time_to_nano(tnow - j->start_time); + td = runtime_get_nanoseconds_since(j->start_time); td /= NSEC_PER_SEC; if (j->start_time && (td < j->min_run_time) && !j->legacy_mach_job && !j->inetcompat) { @@ -2814,8 +2811,6 @@ job_assumes(j, kevent_mod(j->log_redirect_fd, EVFILT_READ, EV_ADD, 0, 0, j) != -1); } - j->start_time = tnow; - switch (c = runtime_fork(j->weird_bootstrap ? j->j_port : j->mgr->jm_port)) { case -1: job_log_error(j, LOG_ERR, "fork() failed, will try again in one second"); @@ -2852,6 +2847,8 @@ job_start_child(j); break; default: + j->start_time = runtime_get_opaque_time(); + job_log(j, LOG_DEBUG, "Started as PID: %u", c); j->start_pending = false; Modified: trunk/launchd/src/launchd_runtime.c =================================================================== --- trunk/launchd/src/launchd_runtime.c 2008-04-02 20:26:26 UTC (rev 23588) +++ trunk/launchd/src/launchd_runtime.c 2008-04-02 20:57:44 UTC (rev 23589) @@ -117,6 +117,7 @@ static void do_file_init(void) __attribute__((constructor)); static mach_timebase_info_data_t tbi; static uint64_t tbi_safe_math_max; +static uint64_t time_of_mach_msg_return; static double tbi_float_val; static const int sigigns[] = { SIGHUP, SIGINT, SIGPIPE, SIGALRM, SIGTERM, @@ -1025,6 +1026,8 @@ mr = mach_msg(&bufReply->Head, tmp_options, bufReply->Head.msgh_size, msg_size, ipc_port_set, to, MACH_PORT_NULL); + time_of_mach_msg_return = runtime_get_opaque_time(); + tmp_options = options; /* It looks like the compiler doesn't optimize switch(unlikely(...)) */ @@ -1639,11 +1642,23 @@ } INTERNAL_ABI uint64_t +runtime_get_opaque_time_of_event(void) +{ + return time_of_mach_msg_return; +} + +INTERNAL_ABI uint64_t +runtime_get_nanoseconds_since(uint64_t o) +{ + return runtime_opaque_time_to_nano(runtime_get_opaque_time_of_event() - o); +} + +INTERNAL_ABI uint64_t runtime_opaque_time_to_nano(uint64_t o) { -#if defined(__i386__) +#if defined(__i386__) || defined(__x86_64__) if (unlikely(tbi.numer != tbi.denom)) { -#elif defined(__ppc__) +#elif defined(__ppc__) || defined(__ppc64__) if (likely(tbi.numer != tbi.denom)) { #else if (tbi.numer != tbi.denom) { Modified: trunk/launchd/src/launchd_runtime.h =================================================================== --- trunk/launchd/src/launchd_runtime.h 2008-04-02 20:26:26 UTC (rev 23588) +++ trunk/launchd/src/launchd_runtime.h 2008-04-02 20:57:44 UTC (rev 23589) @@ -187,9 +187,11 @@ INTERNAL_ABI void runtime_vsyslog(struct runtime_syslog_attr *attr, const char *message, va_list args) __attribute__((format(printf, 2, 0))); INTERNAL_ABI void runtime_log_push(void); -INTERNAL_ABI int64_t runtime_get_wall_time(void); -INTERNAL_ABI uint64_t runtime_get_opaque_time(void); -INTERNAL_ABI uint64_t runtime_opaque_time_to_nano(uint64_t o); +INTERNAL_ABI int64_t runtime_get_wall_time(void) __attribute__((warn_unused_result)); +INTERNAL_ABI uint64_t runtime_get_opaque_time(void) __attribute__((warn_unused_result)); +INTERNAL_ABI uint64_t runtime_get_opaque_time_of_event(void) __attribute__((pure, warn_unused_result)); +INTERNAL_ABI uint64_t runtime_opaque_time_to_nano(uint64_t o) __attribute__((const, warn_unused_result)); +INTERNAL_ABI uint64_t runtime_get_nanoseconds_since(uint64_t o) __attribute__((pure, warn_unused_result)); INTERNAL_ABI kern_return_t launchd_set_bport(mach_port_t name); INTERNAL_ABI kern_return_t launchd_get_bport(mach_port_t *name); -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080402/5cd087dc/attachment.html From source_changes at macosforge.org Thu Apr 3 10:39:22 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Thu Apr 3 10:40:21 2008 Subject: [launchd-changes] [23590] trunk/launchd/src Message-ID: <20080403173922.E62E3154E431@beta.macosforge.org> Revision: 23590 http://trac.macosforge.org/projects/launchd/changeset/23590 Author: zarzycki@apple.com Date: 2008-04-03 10:39:19 -0700 (Thu, 03 Apr 2008) Log Message: ----------- Move _vproc_logv() from internal API to private API. Modified Paths: -------------- trunk/launchd/src/libvproc_internal.h trunk/launchd/src/libvproc_private.h Modified: trunk/launchd/src/libvproc_internal.h =================================================================== --- trunk/launchd/src/libvproc_internal.h 2008-04-02 20:57:44 UTC (rev 23589) +++ trunk/launchd/src/libvproc_internal.h 2008-04-03 17:39:19 UTC (rev 23590) @@ -99,7 +99,6 @@ }; -void _vproc_logv(int pri, int err, const char *msg, va_list ap); vproc_err_t _vprocmgr_log_forward(mach_port_t mp, void *data, size_t len); Modified: trunk/launchd/src/libvproc_private.h =================================================================== --- trunk/launchd/src/libvproc_private.h 2008-04-02 20:57:44 UTC (rev 23589) +++ trunk/launchd/src/libvproc_private.h 2008-04-03 17:39:19 UTC (rev 23590) @@ -67,6 +67,7 @@ void _vproc_log(int pri, const char *msg, ...) __attribute__((format(printf, 2, 3))); void _vproc_log_error(int pri, const char *msg, ...) __attribute__((format(printf, 2, 3))); +void _vproc_logv(int pri, int err, const char *msg, va_list ap) __attribute__((format(printf, 3, 0))); #define VPROCMGR_SESSION_LOGINWINDOW "LoginWindow" #define VPROCMGR_SESSION_BACKGROUND "Background" -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080403/bc244455/attachment.html From source_changes at macosforge.org Thu Apr 3 14:10:10 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Thu Apr 3 14:11:11 2008 Subject: [launchd-changes] [23591] tags/launchd-269/ Message-ID: <20080403211010.4616D154FA80@beta.macosforge.org> Revision: 23591 http://trac.macosforge.org/projects/launchd/changeset/23591 Author: zarzycki@apple.com Date: 2008-04-03 14:10:08 -0700 (Thu, 03 Apr 2008) Log Message: ----------- "Tagging launchd-269 from https://svn.macosforge.org/repository/launchd/trunk" Added Paths: ----------- tags/launchd-269/ Copied: tags/launchd-269 (from rev 23590, trunk) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080403/793f5240/attachment-0001.html From source_changes at macosforge.org Tue Apr 8 09:37:09 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Tue Apr 8 09:38:40 2008 Subject: [launchd-changes] [23592] trunk/launchd/src/launchd_core_logic.c Message-ID: <20080408163709.19106156EE71@beta.macosforge.org> Revision: 23592 http://trac.macosforge.org/projects/launchd/changeset/23592 Author: zarzycki@apple.com Date: 2008-04-08 09:37:06 -0700 (Tue, 08 Apr 2008) Log Message: ----------- A small text change. Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-03 21:10:08 UTC (rev 23591) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-08 16:37:06 UTC (rev 23592) @@ -2507,7 +2507,7 @@ job_assumes(j, kevent_mod((uintptr_t)&j->exit_timeout, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, LAUNCHD_SIGKILL_TIMER, j) != -1); - job_log(j, LOG_DEBUG, "Sent SIGKILL signal."); + job_log(j, LOG_DEBUG, "Sent SIGKILL signal"); } void -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080408/ad133c4d/attachment.html From source_changes at macosforge.org Tue Apr 8 13:37:28 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Tue Apr 8 13:38:57 2008 Subject: [launchd-changes] [23593] trunk/launchd/src Message-ID: <20080408203728.DF4771570284@beta.macosforge.org> Revision: 23593 http://trac.macosforge.org/projects/launchd/changeset/23593 Author: zarzycki@apple.com Date: 2008-04-08 13:37:28 -0700 (Tue, 08 Apr 2008) Log Message: ----------- Workaround 5225889 consistently Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c trunk/launchd/src/launchd_runtime.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-08 16:37:06 UTC (rev 23592) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-08 20:37:28 UTC (rev 23593) @@ -3447,9 +3447,6 @@ head_later = LIST_FIRST(&sorted_calendar_events)->when_next; - /* Workaround 5225889 */ - kevent_mod((uintptr_t)&sorted_calendar_events, EVFILT_TIMER, EV_DELETE, 0, 0, root_jobmgr); - if (job_assumes(j, kevent_mod((uintptr_t)&sorted_calendar_events, EVFILT_TIMER, EV_ADD, NOTE_ABSOLUTE|NOTE_SECONDS, head_later, root_jobmgr) != -1)) { char time_string[100]; size_t time_string_len; @@ -5867,9 +5864,6 @@ } else if (inval) { if (j->start_interval == 0) { runtime_add_weak_ref(); - } else { - /* Workaround 5225889 */ - job_assumes(j, kevent_mod((uintptr_t)&j->start_interval, EVFILT_TIMER, EV_DELETE, 0, 0, j) != -1); } j->start_interval = inval; job_assumes(j, kevent_mod((uintptr_t)&j->start_interval, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, j->start_interval, j) != -1); Modified: trunk/launchd/src/launchd_runtime.c =================================================================== --- trunk/launchd/src/launchd_runtime.c 2008-04-08 16:37:06 UTC (rev 23592) +++ trunk/launchd/src/launchd_runtime.c 2008-04-08 20:37:28 UTC (rev 23593) @@ -840,6 +840,12 @@ case EVFILT_READ: case EVFILT_WRITE: break; + case EVFILT_TIMER: + /* Workaround 5225889 */ + if (flags & EV_ADD) { + kevent_mod(ident, EVFILT_TIMER, EV_DELETE, 0, 0, NULL); + } + /* fall through */ default: flags |= EV_CLEAR; break; -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080408/37f4d323/attachment.html From source_changes at macosforge.org Tue Apr 8 13:38:15 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Tue Apr 8 13:39:54 2008 Subject: [launchd-changes] [23594] trunk/launchd/src/launchd_core_logic.c Message-ID: <20080408203815.C5F1615702BC@beta.macosforge.org> Revision: 23594 http://trac.macosforge.org/projects/launchd/changeset/23594 Author: zarzycki@apple.com Date: 2008-04-08 13:38:15 -0700 (Tue, 08 Apr 2008) Log Message: ----------- Better logging at shutdown. Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-08 20:37:28 UTC (rev 23593) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-08 20:38:15 UTC (rev 23594) @@ -308,6 +308,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); +static void jobmgr_kill_stray_child(jobmgr_t jm, pid_t p); static void jobmgr_remove(jobmgr_t jm); static void jobmgr_dispatch_all(jobmgr_t jm, bool newmounthack); static job_t jobmgr_init_session(jobmgr_t jm, const char *session_type, bool sflag); @@ -595,6 +596,8 @@ if (j->exit_timeout) { job_assumes(j, kevent_mod((uintptr_t)&j->exit_timeout, EVFILT_TIMER, EV_ADD|EV_ONESHOT, NOTE_SECONDS, j->exit_timeout, j) != -1); + } else { + job_log(j, LOG_DEBUG, "This job has an infinite exit timeout"); } if (j->kill_via_shmem) { @@ -2193,11 +2196,9 @@ size_t i, kp_cnt, len = sizeof(struct kinfo_proc) * get_kern_max_proc(); struct kinfo_proc *kp; -#if TARGET_OS_EMBEDDED if (!do_apple_internal_logging) { return; } -#endif runtime_ktrace(RTKT_LAUNCHD_FINDING_STRAY_PG, j->p, 0, 0); @@ -3063,11 +3064,10 @@ struct kinfo_proc *kp; uid_t u = j->mach_uid; -#if TARGET_OS_EMBEDDED if (!do_apple_internal_logging) { return; } -#endif + kp = malloc(len); if (!job_assumes(j, kp != NULL)) { @@ -4629,17 +4629,59 @@ } void +jobmgr_kill_stray_child(jobmgr_t jm, pid_t p) +{ + struct timespec ts = { 2, 0 }; + uint64_t start, end, nanosec; + struct kevent kev; + int r, kq = kqueue(); + + if (!jobmgr_assumes(jm, kq != -1)) { + return; + } + + EV_SET(&kev, p, EVFILT_PROC, EV_ADD, 0, 0, 0); + + if (!jobmgr_assumes(jm, kevent(kq, &kev, 1, NULL, 0, NULL) != -1)) { + goto out; + } + + start = runtime_get_opaque_time(); + + if (!jobmgr_assumes(jm, runtime_kill(p, SIGTERM) != -1)) { + goto out; + } + + r = kevent(kq, NULL, 0, &kev, 1, &ts); + + if (!jobmgr_assumes(jm, r == 0 || r == 1)) { + goto out; + } + + if (r == 0 && jobmgr_assumes(jm, runtime_kill(p, SIGKILL) != -1)) { + jobmgr_assumes(jm, kevent(kq, NULL, 0, &kev, 1, NULL) == 1); + } + + end = runtime_get_opaque_time(); + + nanosec = runtime_opaque_time_to_nano(end - start); + + jobmgr_log(jm, LOG_DEBUG, "PID %u died after %llu nanoseconds", p, nanosec); + +out: + jobmgr_assumes(jm, runtime_close(kq) != -1); +} + +void jobmgr_log_stray_children(jobmgr_t jm) { int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL }; size_t i, kp_cnt = 0, kp_skipped = 0, len = sizeof(struct kinfo_proc) * get_kern_max_proc(); struct kinfo_proc *kp; -#if TARGET_OS_EMBEDDED if (!do_apple_internal_logging) { return; } -#endif if (likely(jm->parentmgr || !pid1_magic)) { return; @@ -4671,10 +4713,7 @@ jobmgr_log(jm, LOG_WARNING, "Stray %sprocess at shutdown: PID %u PPID %u PGID %u %s", z, p_i, pp_i, pg_i, n); - /* - * The kernel team requested that launchd not do this for Leopard. - * jobmgr_assumes(jm, runtime_kill(p_i, SIGKILL) != -1); - */ + jobmgr_kill_stray_child(jm, p_i); } out: -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080408/b600f428/attachment-0001.html From source_changes at macosforge.org Tue Apr 8 14:17:31 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Tue Apr 8 14:19:06 2008 Subject: [launchd-changes] [23595] tags/launchd-270/ Message-ID: <20080408211731.810831570743@beta.macosforge.org> Revision: 23595 http://trac.macosforge.org/projects/launchd/changeset/23595 Author: zarzycki@apple.com Date: 2008-04-08 14:17:30 -0700 (Tue, 08 Apr 2008) Log Message: ----------- "Tagging launchd-270 from https://svn.macosforge.org/repository/launchd/trunk" Added Paths: ----------- tags/launchd-270/ Copied: tags/launchd-270 (from rev 23594, trunk) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080408/e0eb1b30/attachment.html From source_changes at macosforge.org Mon Apr 14 10:35:44 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 14 10:42:19 2008 Subject: [launchd-changes] [23596] trunk/Makefile Message-ID: <20080414173544.9F2261595A93@beta.macosforge.org> Revision: 23596 http://trac.macosforge.org/projects/launchd/changeset/23596 Author: zarzycki@apple.com Date: 2008-04-14 10:35:42 -0700 (Mon, 14 Apr 2008) Log Message: ----------- 64-bit SystemStarter executable Modified Paths: -------------- trunk/Makefile Modified: trunk/Makefile =================================================================== --- trunk/Makefile 2008-04-08 21:17:30 UTC (rev 23595) +++ trunk/Makefile 2008-04-14 17:35:42 UTC (rev 23596) @@ -24,8 +24,6 @@ mkdir -p $(DSTROOT)/System/Library/StartupItems chmod 755 $(DSTROOT)/System/Library/StartupItems endif - -lipo -remove ppc64 -output $(DSTROOT)/sbin/SystemStarter $(DSTROOT)/sbin/SystemStarter - -lipo -remove x86_64 -output $(DSTROOT)/sbin/SystemStarter $(DSTROOT)/sbin/SystemStarter rm -rf $(DSTROOT)/usr/local/lib/system cp $(OBJROOT)/src/launchd $(SYMROOT) cp $(OBJROOT)/src/launchctl $(SYMROOT) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080414/20a1ef76/attachment.html From source_changes at macosforge.org Mon Apr 14 10:36:14 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 14 10:42:21 2008 Subject: [launchd-changes] [23597] trunk/launchd/src/launchd_core_logic.c Message-ID: <20080414173614.31B671595AC0@beta.macosforge.org> Revision: 23597 http://trac.macosforge.org/projects/launchd/changeset/23597 Author: zarzycki@apple.com Date: 2008-04-14 10:36:13 -0700 (Mon, 14 Apr 2008) Log Message: ----------- Cannot turn VoiceOver off Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-14 17:35:42 UTC (rev 23596) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-14 17:36:13 UTC (rev 23597) @@ -6253,7 +6253,7 @@ job_log(j, LOG_DEBUG, "Mach service registration failed. Already active: %s", servicename); return BOOTSTRAP_SERVICE_ACTIVE; } - if (ms->recv) { + if (ms->recv && (serviceport != MACH_PORT_NULL)) { job_log(j, LOG_ERR, "bootstrap_register() erroneous called instead of bootstrap_check_in(). Mach service: %s", servicename); return BOOTSTRAP_NOT_PRIVILEGED; } -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080414/d3425e86/attachment.html From source_changes at macosforge.org Mon Apr 14 14:12:18 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 14 14:13:58 2008 Subject: [launchd-changes] [23598] tags/launchd-271/ Message-ID: <20080414211218.94F541596CD0@beta.macosforge.org> Revision: 23598 http://trac.macosforge.org/projects/launchd/changeset/23598 Author: zarzycki@apple.com Date: 2008-04-14 14:12:18 -0700 (Mon, 14 Apr 2008) Log Message: ----------- "Tagging launchd-271 from https://svn.macosforge.org/repository/launchd/trunk" Added Paths: ----------- tags/launchd-271/ Copied: tags/launchd-271 (from rev 23597, trunk) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080414/d069e33b/attachment.html From source_changes at macosforge.org Tue Apr 15 14:55:51 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Tue Apr 15 14:57:23 2008 Subject: [launchd-changes] [23599] trunk/launchd/src/launchd_runtime.c Message-ID: <20080415215551.A185E159D0B7@beta.macosforge.org> Revision: 23599 http://trac.macosforge.org/projects/launchd/changeset/23599 Author: zarzycki@apple.com Date: 2008-04-15 14:55:50 -0700 (Tue, 15 Apr 2008) Log Message: ----------- More documentation. Modified Paths: -------------- trunk/launchd/src/launchd_runtime.c Modified: trunk/launchd/src/launchd_runtime.c =================================================================== --- trunk/launchd/src/launchd_runtime.c 2008-04-14 21:12:18 UTC (rev 23598) +++ trunk/launchd/src/launchd_runtime.c 2008-04-15 21:55:50 UTC (rev 23599) @@ -1036,7 +1036,7 @@ tmp_options = options; - /* It looks like the compiler doesn't optimize switch(unlikely(...)) */ + /* It looks like the compiler doesn't optimize switch(unlikely(...)) See: 5691066 */ if (unlikely(mr)) switch (mr) { case MACH_SEND_INVALID_DEST: case MACH_SEND_TIMED_OUT: -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080415/7dff1e74/attachment-0001.html From source_changes at macosforge.org Fri Apr 18 14:41:05 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Fri Apr 18 14:42:34 2008 Subject: [launchd-changes] [23600] trunk/launchd/src/launchd_core_logic.c Message-ID: <20080418214105.97A5E15B2F8A@beta.macosforge.org> Revision: 23600 http://trac.macosforge.org/projects/launchd/changeset/23600 Author: zarzycki@apple.com Date: 2008-04-18 14:41:05 -0700 (Fri, 18 Apr 2008) Log Message: ----------- Better documentation. Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-15 21:55:50 UTC (rev 23599) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-18 21:41:05 UTC (rev 23600) @@ -387,14 +387,54 @@ uint64_t start_time; uint32_t min_run_time; uint32_t start_interval; - bool checkedin:1, anonymous:1, debug:1, inetcompat:1, inetcompat_wait:1, - ondemand:1, session_create:1, low_pri_io:1, no_init_groups:1, priv_port_has_senders:1, - importing_global_env:1, importing_hard_limits:1, setmask:1, legacy_mach_job:1, start_pending:1, - globargv:1, wait4debugger:1, internal_exc_handler:1, stall_before_exec:1, only_once:1, - currently_ignored:1, forced_peers_to_demand_mode:1, setnice:1, hopefully_exits_last:1, removal_pending:1, - legacy_LS_job:1, sent_sigkill:1, debug_before_kill:1, weird_bootstrap:1, start_on_mount:1, - per_user:1, hopefully_exits_first:1, deny_unknown_mslookups:1, unload_at_mig_return:1, abandon_pg:1, - poll_for_vfs_changes:1, deny_job_creation:1, kill_via_shmem:1, sent_kill_via_shmem:1; +#if 0 + /* someday ... */ + enum { + J_TYPE_ANONYMOUS = 1, + J_TYPE_LANCHSERVICES, + J_TYPE_MACHINIT, + J_TYPE_INETD, + } j_type; +#endif + bool debug:1, /* man launchd.plist --> Debug */ + ondemand:1, /* man launchd.plist --> KeepAlive == false */ + session_create:1, /* man launchd.plist --> SessionCreate */ + low_pri_io:1, /* man launchd.plist --> LowPriorityIO */ + no_init_groups:1, /* man launchd.plist --> InitGroups */ + priv_port_has_senders:1, /* a legacy mach_init concept to make bootstrap_create_server/service() work */ + importing_global_env:1, /* a hack during job importing */ + importing_hard_limits:1, /* a hack during job importing */ + setmask:1, /* man launchd.plist --> Umask */ + anonymous:1, /* a process that launchd knows about, but isn't managed by launchd */ + checkedin:1, /* a legacy mach_init concept to detect sick jobs */ + legacy_mach_job:1, /* a job created via bootstrap_create_server() */ + legacy_LS_job:1, /* a job created via spawn_via_launchd() */ + inetcompat:1, /* a legacy job that wants inetd compatible semantics */ + inetcompat_wait:1, /* a twist on inetd compatibility */ + start_pending:1, /* an event fired and the job should start, but not necessarily right away */ + globargv:1, /* man launchd.plist --> EnableGlobbing */ + wait4debugger:1, /* man launchd.plist --> WaitForDebugger */ + internal_exc_handler:1, /* MachExceptionHandler == true */ + stall_before_exec:1, /* a hack to support an option of spawn_via_launchd() */ + only_once:1, /* man launchd.plist --> LaunchOnlyOnce. Note: 5465184 Rename this to "HopefullyNeverExits" */ + currently_ignored:1, /* Make job_ignore() / job_watch() work. If these calls were balanced, then this wouldn't be necessarily. */ + forced_peers_to_demand_mode:1, /* A job that forced all other jobs to be temporarily launch-on-demand */ + setnice:1, /* man launchd.plist --> Nice */ + hopefully_exits_last:1, /* man launchd.plist --> HopefullyExitsLast */ + removal_pending:1, /* a job was asked to be unloaded/removed while running, we'll remove it after it exits */ + sent_sigkill:1, /* job_kill() was called */ + debug_before_kill:1, /* enter the kernel debugger before killing a job */ + weird_bootstrap:1, /* a hack that launchd+launchctl use during jobmgr_t creation */ + start_on_mount:1, /* man launchd.plist --> StartOnMount */ + per_user:1, /* This job is a per-user launchd managed by the PID 1 launchd */ + hopefully_exits_first:1, /* man launchd.plist --> HopefullyExitsFirst */ + deny_unknown_mslookups:1, /* A flag for changing the behavior of bootstrap_look_up() */ + unload_at_mig_return:1, /* A job thoroughly confused launchd. We need to unload it ASAP */ + abandon_pg:1, /* man launchd.plist --> AbandonProcessGroup */ + poll_for_vfs_changes:1, /* a hack to work around the fact that kqueues don't work on all filesystems */ + deny_job_creation:1, /* Don't let this job create new 'job_t' objects in launchd */ + kill_via_shmem:1, /* man launchd.plist --> EnableTransactions */ + sent_kill_via_shmem:1; /* We need to 'kill_via_shmem' once-and-only-once */ mode_t mask; const char label[0]; }; -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080418/4fb25136/attachment.html From source_changes at macosforge.org Mon Apr 21 13:33:30 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 21 13:35:13 2008 Subject: [launchd-changes] [23601] trunk/launchd/src Message-ID: <20080421203330.4055715C4F6F@beta.macosforge.org> Revision: 23601 http://trac.macosforge.org/projects/launchd/changeset/23601 Author: zarzycki@apple.com Date: 2008-04-21 13:33:29 -0700 (Mon, 21 Apr 2008) Log Message: ----------- Make bootstrap_create_server() be per-user launchd aware Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c trunk/launchd/src/libbootstrap.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-18 21:41:05 UTC (rev 23600) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-21 20:33:29 UTC (rev 23601) @@ -5650,18 +5650,12 @@ job_log(j, LOG_DEBUG, "Server create attempt: %s", server_cmd); -#define LET_MERE_MORTALS_ADD_SERVERS_TO_PID1 - /* XXX - This code should go away once the per session launchd is integrated with the rest of the system */ -#ifdef LET_MERE_MORTALS_ADD_SERVERS_TO_PID1 if (pid1_magic) { - if (unlikely(ldc->euid && server_uid && (ldc->euid != server_uid))) { - job_log(j, LOG_WARNING, "Server create: \"%s\": Will run as UID %d, not UID %d as they told us to", - server_cmd, ldc->euid, server_uid); - server_uid = ldc->euid; + if (ldc->euid || ldc->uid) { + job_log(j, LOG_WARNING, "Server create attempt moved to per-user launchd: %s", server_cmd); + return VPROC_ERR_TRY_PER_USER; } - } else -#endif - if (getuid()) { + } else { if (unlikely(server_uid != getuid())) { job_log(j, LOG_WARNING, "Server create: \"%s\": As UID %d, we will not be able to switch to UID %d", server_cmd, getuid(), server_uid); Modified: trunk/launchd/src/libbootstrap.c =================================================================== --- trunk/launchd/src/libbootstrap.c 2008-04-18 21:41:05 UTC (rev 23600) +++ trunk/launchd/src/libbootstrap.c 2008-04-21 20:33:29 UTC (rev 23601) @@ -37,7 +37,20 @@ kern_return_t bootstrap_create_server(mach_port_t bp, cmd_t server_cmd, uid_t server_uid, boolean_t on_demand, mach_port_t *server_port) { - return vproc_mig_create_server(bp, server_cmd, server_uid, on_demand, server_port); + kern_return_t kr; + + kr = vproc_mig_create_server(bp, server_cmd, server_uid, on_demand, server_port); + + if (kr == VPROC_ERR_TRY_PER_USER) { + mach_port_t puc; + + if (vproc_mig_lookup_per_user_context(bp, 0, &puc) == 0) { + kr = vproc_mig_create_server(puc, server_cmd, server_uid, on_demand, server_port); + mach_port_deallocate(mach_task_self(), puc); + } + } + + return kr; } kern_return_t -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080421/17f09dff/attachment.html From source_changes at macosforge.org Mon Apr 21 14:41:10 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 21 14:44:45 2008 Subject: [launchd-changes] [23602] trunk/launchd/src Message-ID: <20080421214110.851BF15C71A4@beta.macosforge.org> Revision: 23602 http://trac.macosforge.org/projects/launchd/changeset/23602 Author: zarzycki@apple.com Date: 2008-04-21 14:41:09 -0700 (Mon, 21 Apr 2008) Log Message: ----------- Need launchd 'trykill' SPI Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c trunk/launchd/src/liblaunch_private.h trunk/launchd/src/libvproc.c trunk/launchd/src/libvproc_private.h Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-21 20:33:29 UTC (rev 23601) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-21 21:41:09 UTC (rev 23602) @@ -701,6 +701,24 @@ launch_data_dict_insert(r, tmp, LAUNCH_JOBKEY_PROGRAMARGUMENTS); } + if (j->kill_via_shmem && (tmp = launch_data_new_bool(true))) { + uint32_t tmp_cnt = -1; + + launch_data_dict_insert(r, tmp, LAUNCH_JOBKEY_ENABLETRANSACTIONS); + + if (j->shmem) { + tmp_cnt = j->shmem->vp_shmem_transaction_cnt; + } + + if (j->sent_kill_via_shmem) { + tmp_cnt++; + } + + if ((tmp = launch_data_new_integer(tmp_cnt))) { + launch_data_dict_insert(r, tmp, LAUNCH_JOBKEY_TRANSACTIONCOUNT); + } + } + if (j->session_create && (tmp = launch_data_new_bool(true))) { launch_data_dict_insert(r, tmp, LAUNCH_JOBKEY_SESSIONCREATE); } @@ -5708,6 +5726,25 @@ } else { return 0; } + } else if (sig == VPROC_MAGIC_TRYKILL_SIGNAL) { + if (!j->kill_via_shmem) { + return BOOTSTRAP_NOT_PRIVILEGED; + } + + if (!j->shmem) { + j->sent_kill_via_shmem = true; + job_assumes(j, runtime_kill(otherj->p, SIGKILL) != -1); + return 0; + } + + if (__sync_bool_compare_and_swap(&j->shmem->vp_shmem_transaction_cnt, 0, -1)) { + j->shmem->vp_shmem_flags |= VPROC_SHMEM_EXITING; + j->sent_kill_via_shmem = true; + job_assumes(j, runtime_kill(otherj->p, SIGKILL) != -1); + return 0; + } + + return BOOTSTRAP_NOT_PRIVILEGED; } else if (otherj->p) { job_assumes(j, runtime_kill(otherj->p, sig) != -1); } Modified: trunk/launchd/src/liblaunch_private.h =================================================================== --- trunk/launchd/src/liblaunch_private.h 2008-04-21 20:33:29 UTC (rev 23601) +++ trunk/launchd/src/liblaunch_private.h 2008-04-21 21:41:09 UTC (rev 23602) @@ -46,6 +46,7 @@ #define LAUNCH_KEY_BATCHCONTROL "BatchControl" #define LAUNCH_KEY_BATCHQUERY "BatchQuery" +#define LAUNCH_JOBKEY_TRANSACTIONCOUNT "TransactionCount" #define LAUNCH_JOBKEY_QUARANTINEDATA "QuarantineData" #define LAUNCH_JOBKEY_SANDBOXPROFILE "SandboxProfile" #define LAUNCH_JOBKEY_SANDBOXFLAGS "SandboxFlags" Modified: trunk/launchd/src/libvproc.c =================================================================== --- trunk/launchd/src/libvproc.c 2008-04-21 20:33:29 UTC (rev 23601) +++ trunk/launchd/src/libvproc.c 2008-04-21 21:41:09 UTC (rev 23602) @@ -132,17 +132,12 @@ void _vproc_transaction_try_exit(int status) { - typeof(vproc_shmem->vp_shmem_transaction_cnt) newval; - if (unlikely(vproc_shmem == NULL)) { return; } - vproc_shmem->vp_shmem_flags |= VPROC_SHMEM_EXITING; - - newval = __sync_sub_and_fetch(&vproc_shmem->vp_shmem_transaction_cnt, 1); - - if (newval < 0) { + if (__sync_bool_compare_and_swap(&vproc_shmem->vp_shmem_transaction_cnt, 0, -1)) { + vproc_shmem->vp_shmem_flags |= VPROC_SHMEM_EXITING; _exit(status); } } Modified: trunk/launchd/src/libvproc_private.h =================================================================== --- trunk/launchd/src/libvproc_private.h 2008-04-21 20:33:29 UTC (rev 23601) +++ trunk/launchd/src/libvproc_private.h 2008-04-21 21:41:09 UTC (rev 23602) @@ -31,8 +31,10 @@ #pragma GCC visibility push(default) -/* DO NOT use this. This is a hack for launchctl */ -#define VPROC_MAGIC_UNLOAD_SIGNAL 0x4141504C +/* DO NOT use this. This is a hack for 'launchctl' */ +#define VPROC_MAGIC_UNLOAD_SIGNAL 0x4141504C +/* DO NOT use this. This is a hack for 'loginwindow' */ +#define VPROC_MAGIC_TRYKILL_SIGNAL 0x6161706C typedef enum { VPROC_GSK_LAST_EXIT_STATUS = 1, -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080421/05a5a6f0/attachment-0001.html From source_changes at macosforge.org Mon Apr 21 14:44:10 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 21 14:45:36 2008 Subject: [launchd-changes] [23603] trunk/launchd/src/libvproc.c Message-ID: <20080421214410.ACBB815C720C@beta.macosforge.org> Revision: 23603 http://trac.macosforge.org/projects/launchd/changeset/23603 Author: zarzycki@apple.com Date: 2008-04-21 14:44:10 -0700 (Mon, 21 Apr 2008) Log Message: ----------- Make vproc_transaction_{begin,end} available to command-line tools Modified Paths: -------------- trunk/launchd/src/libvproc.c Modified: trunk/launchd/src/libvproc.c =================================================================== --- trunk/launchd/src/libvproc.c 2008-04-21 21:41:09 UTC (rev 23602) +++ trunk/launchd/src/libvproc.c 2008-04-21 21:44:10 UTC (rev 23603) @@ -66,12 +66,14 @@ kr = vproc_mig_setup_shmem(bootstrap_port, &shmem_port); - assert(kr == 0); + //assert(kr == 0); + if (kr) return; kr = vm_map(mach_task_self(), &vm_addr, getpagesize(), 0, true, shmem_port, 0, false, VM_PROT_READ|VM_PROT_WRITE, VM_PROT_READ|VM_PROT_WRITE, VM_INHERIT_NONE); - assert(kr == 0); + //assert(kr == 0); + if (kr) return; vproc_shmem = (struct vproc_shmem_s *)vm_addr; } -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080421/a7944c32/attachment.html From source_changes at macosforge.org Mon Apr 21 15:01:21 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 21 15:03:11 2008 Subject: [launchd-changes] [23604] trunk/launchd/src/launchd_core_logic.c Message-ID: <20080421220121.77FE415C7314@beta.macosforge.org> Revision: 23604 http://trac.macosforge.org/projects/launchd/changeset/23604 Author: zarzycki@apple.com Date: 2008-04-21 15:01:21 -0700 (Mon, 21 Apr 2008) Log Message: ----------- Fix a typo. Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-21 21:44:10 UTC (rev 23603) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-21 22:01:21 UTC (rev 23604) @@ -702,7 +702,7 @@ } if (j->kill_via_shmem && (tmp = launch_data_new_bool(true))) { - uint32_t tmp_cnt = -1; + int32_t tmp_cnt = -1; launch_data_dict_insert(r, tmp, LAUNCH_JOBKEY_ENABLETRANSACTIONS); -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080421/d6705dc5/attachment.html From source_changes at macosforge.org Tue Apr 22 13:32:44 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Tue Apr 22 13:34:17 2008 Subject: [launchd-changes] [23605] trunk/launchd/src/libvproc.c Message-ID: <20080422203244.1F95215CC7B7@beta.macosforge.org> Revision: 23605 http://trac.macosforge.org/projects/launchd/changeset/23605 Author: zarzycki@apple.com Date: 2008-04-22 13:32:43 -0700 (Tue, 22 Apr 2008) Log Message: ----------- Fix a port leak. Modified Paths: -------------- trunk/launchd/src/libvproc.c Modified: trunk/launchd/src/libvproc.c =================================================================== --- trunk/launchd/src/libvproc.c 2008-04-21 22:01:21 UTC (rev 23604) +++ trunk/launchd/src/libvproc.c 2008-04-22 20:32:43 UTC (rev 23605) @@ -75,6 +75,10 @@ //assert(kr == 0); if (kr) return; + kr = mach_port_deallocate(mach_task_self(), shmem_port); + + //assert(kr == 0); + vproc_shmem = (struct vproc_shmem_s *)vm_addr; } -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080422/08096ebf/attachment.html From source_changes at macosforge.org Tue Apr 22 13:42:06 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Tue Apr 22 13:43:40 2008 Subject: [launchd-changes] [23606] tags/launchd-272/ Message-ID: <20080422204206.C0A4815CC865@beta.macosforge.org> Revision: 23606 http://trac.macosforge.org/projects/launchd/changeset/23606 Author: zarzycki@apple.com Date: 2008-04-22 13:42:06 -0700 (Tue, 22 Apr 2008) Log Message: ----------- "Tagging launchd-272 from https://svn.macosforge.org/repository/launchd/trunk" Added Paths: ----------- tags/launchd-272/ Copied: tags/launchd-272 (from rev 23605, trunk) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080422/f5c6bd03/attachment.html From source_changes at macosforge.org Mon Apr 28 13:40:38 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 28 13:42:07 2008 Subject: [launchd-changes] [23607] branches/SULeopard/launchd/src/launchd_core_logic.c Message-ID: <20080428204038.2B81C160B3AC@beta.macosforge.org> Revision: 23607 http://trac.macosforge.org/projects/launchd/changeset/23607 Author: zarzycki@apple.com Date: 2008-04-28 13:40:36 -0700 (Mon, 28 Apr 2008) Log Message: ----------- HideUntilCheckIn does not wait for bootstrap_check_in() Modified Paths: -------------- branches/SULeopard/launchd/src/launchd_core_logic.c Modified: branches/SULeopard/launchd/src/launchd_core_logic.c =================================================================== --- branches/SULeopard/launchd/src/launchd_core_logic.c 2008-04-22 20:42:06 UTC (rev 23606) +++ branches/SULeopard/launchd/src/launchd_core_logic.c 2008-04-28 20:40:36 UTC (rev 23607) @@ -5942,7 +5942,7 @@ ms = jobmgr_lookup_service(j->mgr, servicename, true, 0); } - if (ms && machservice_hidden(ms) && !job_active(machservice_job(ms))) { + if (ms && machservice_hidden(ms) && !machservice_active(ms)) { ms = NULL; } else if (ms && ms->per_user_hack) { ms = NULL; -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080428/958e3835/attachment-0001.html From source_changes at macosforge.org Mon Apr 28 13:45:12 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 28 13:46:39 2008 Subject: [launchd-changes] [23608] trunk/launchd/src/launchd_core_logic.c Message-ID: <20080428204512.67F89160B3F7@beta.macosforge.org> Revision: 23608 http://trac.macosforge.org/projects/launchd/changeset/23608 Author: zarzycki@apple.com Date: 2008-04-28 13:45:11 -0700 (Mon, 28 Apr 2008) Log Message: ----------- HideUntilCheckIn does not wait for bootstrap_check_in() Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-28 20:40:36 UTC (rev 23607) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-28 20:45:11 UTC (rev 23608) @@ -6374,7 +6374,7 @@ } if (likely(ms)) { - if (machservice_hidden(ms) && !job_active(machservice_job(ms))) { + if (machservice_hidden(ms) && !machservice_active(ms)) { ms = NULL; } else if (unlikely(ms->per_user_hack)) { ms = NULL; -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080428/c35a7fa7/attachment.html From source_changes at macosforge.org Mon Apr 28 16:53:08 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Mon Apr 28 16:54:36 2008 Subject: [launchd-changes] [23609] tags/launchd-258.13/ Message-ID: <20080428235308.2F8DF160BC52@beta.macosforge.org> Revision: 23609 http://trac.macosforge.org/projects/launchd/changeset/23609 Author: zarzycki@apple.com Date: 2008-04-28 16:53:08 -0700 (Mon, 28 Apr 2008) Log Message: ----------- "Tagging launchd-258.13 from https://svn.macosforge.org/repository/launchd/branches/SULeopard" Added Paths: ----------- tags/launchd-258.13/ Copied: tags/launchd-258.13 (from rev 23608, branches/SULeopard) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080428/d0371424/attachment.html From source_changes at macosforge.org Wed Apr 30 10:29:53 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 30 10:31:21 2008 Subject: [launchd-changes] [23610] trunk/launchd/src/launchd_core_logic.c Message-ID: <20080430172953.22A87161C592@beta.macosforge.org> Revision: 23610 http://trac.macosforge.org/projects/launchd/changeset/23610 Author: zarzycki@apple.com Date: 2008-04-30 10:29:52 -0700 (Wed, 30 Apr 2008) Log Message: ----------- Extraneous message about caching a Mach port Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2008-04-28 23:53:08 UTC (rev 23609) +++ trunk/launchd/src/launchd_core_logic.c 2008-04-30 17:29:52 UTC (rev 23610) @@ -2433,6 +2433,8 @@ j->last_exit_status = status; j->sent_sigkill = false; j->sent_kill_via_shmem = false; + j->lastlookup = NULL; + j->lastlookup_gennum = 0; j->p = 0; /* -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080430/9fe2d333/attachment.html From source_changes at macosforge.org Wed Apr 30 13:31:20 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 30 13:32:49 2008 Subject: [launchd-changes] [23611] trunk/launchd/src/libbootstrap.c Message-ID: <20080430203120.EBE0D161CDFD@beta.macosforge.org> Revision: 23611 http://trac.macosforge.org/projects/launchd/changeset/23611 Author: zarzycki@apple.com Date: 2008-04-30 13:31:20 -0700 (Wed, 30 Apr 2008) Log Message: ----------- WindowServer is hammering my console with "Please fix the framework to cache the Mach port" messages Modified Paths: -------------- trunk/launchd/src/libbootstrap.c Modified: trunk/launchd/src/libbootstrap.c =================================================================== --- trunk/launchd/src/libbootstrap.c 2008-04-30 17:29:52 UTC (rev 23610) +++ trunk/launchd/src/libbootstrap.c 2008-04-30 20:31:20 UTC (rev 23611) @@ -169,20 +169,47 @@ kern_return_t bootstrap_look_up2(mach_port_t bp, name_t service_name, mach_port_t *sp, pid_t target_pid, uint64_t flags) { - kern_return_t kr; + static pthread_mutex_t bslu2_lock = PTHREAD_MUTEX_INITIALIZER; + static mach_port_t prev_bp; + static mach_port_t prev_sp; + static name_t prev_name; + kern_return_t kr = 0; mach_port_t puc; + pthread_mutex_lock(&bslu2_lock); + + if (prev_sp) { + if ((bp == prev_bp) && (strncmp(prev_name, service_name, sizeof(name_t)) == 0) + && (mach_port_mod_refs(mach_task_self(), prev_sp, MACH_PORT_RIGHT_SEND, 1) == 0)) { + *sp = prev_sp; + goto out; + } else { + mach_port_deallocate(mach_task_self(), prev_sp); + prev_sp = 0; + } + } + if ((kr = vproc_mig_look_up2(bp, service_name, sp, target_pid, flags)) != VPROC_ERR_TRY_PER_USER) { - return kr; + goto out; } if ((kr = vproc_mig_lookup_per_user_context(bp, 0, &puc)) != 0) { - return kr; + goto out; } kr = vproc_mig_look_up2(puc, service_name, sp, target_pid, flags); mach_port_deallocate(mach_task_self(), puc); +out: + if (kr == 0 && prev_sp == 0 && mach_port_mod_refs(mach_task_self(), *sp, MACH_PORT_RIGHT_SEND, 1) == 0) { + /* We're going to hold on to a send right as a MRU cache */ + prev_bp = bp; + prev_sp = *sp; + strlcpy(prev_name, service_name, sizeof(name_t)); + } + + pthread_mutex_unlock(&bslu2_lock); + return kr; } -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080430/d2f9f460/attachment.html From source_changes at macosforge.org Wed Apr 30 13:32:54 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 30 13:33:51 2008 Subject: [launchd-changes] [23612] tags/launchd-273/ Message-ID: <20080430203254.AAAA6161CE27@beta.macosforge.org> Revision: 23612 http://trac.macosforge.org/projects/launchd/changeset/23612 Author: zarzycki@apple.com Date: 2008-04-30 13:32:54 -0700 (Wed, 30 Apr 2008) Log Message: ----------- "Tagging launchd-273 from https://svn.macosforge.org/repository/launchd/trunk" Added Paths: ----------- tags/launchd-273/ Copied: tags/launchd-273 (from rev 23611, trunk) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080430/6db28156/attachment-0001.html From source_changes at macosforge.org Wed Apr 30 14:14:41 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 30 14:16:09 2008 Subject: [launchd-changes] [23613] branches/SULeopard/launchd/src/launchd_core_logic.c Message-ID: <20080430211441.C5C7E161D113@beta.macosforge.org> Revision: 23613 http://trac.macosforge.org/projects/launchd/changeset/23613 Author: zarzycki@apple.com Date: 2008-04-30 14:14:41 -0700 (Wed, 30 Apr 2008) Log Message: ----------- Backport a think-o. Modified Paths: -------------- branches/SULeopard/launchd/src/launchd_core_logic.c Modified: branches/SULeopard/launchd/src/launchd_core_logic.c =================================================================== --- branches/SULeopard/launchd/src/launchd_core_logic.c 2008-04-30 20:32:54 UTC (rev 23612) +++ branches/SULeopard/launchd/src/launchd_core_logic.c 2008-04-30 21:14:41 UTC (rev 23613) @@ -2259,6 +2259,8 @@ } j->last_exit_status = status; j->sent_sigkill = false; + j->lastlookup = NULL; + j->lastlookup_gennum = 0; j->p = 0; /* -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080430/aa72898f/attachment.html From source_changes at macosforge.org Wed Apr 30 14:32:53 2008 From: source_changes at macosforge.org (source_changes@macosforge.org) Date: Wed Apr 30 14:34:22 2008 Subject: [launchd-changes] [23614] branches/SULeopard/launchd/src/launchctl.c Message-ID: <20080430213253.E1315161D1B3@beta.macosforge.org> Revision: 23614 http://trac.macosforge.org/projects/launchd/changeset/23614 Author: zarzycki@apple.com Date: 2008-04-30 14:32:53 -0700 (Wed, 30 Apr 2008) Log Message: ----------- Boot fail count doesn't increase with unclean-boot issue Modified Paths: -------------- branches/SULeopard/launchd/src/launchctl.c Modified: branches/SULeopard/launchd/src/launchctl.c =================================================================== --- branches/SULeopard/launchd/src/launchctl.c 2008-04-30 21:14:41 UTC (rev 23613) +++ branches/SULeopard/launchd/src/launchctl.c 2008-04-30 21:32:53 UTC (rev 23614) @@ -2805,7 +2805,10 @@ #if TARGET_OS_EMBEDDED if (path_check("/etc/fstab")) { const char *mount_tool[] = { "mount", "-vat", "nonfs", NULL }; - assumes(fwexec(mount_tool, true) != -1); + if (!assumes(fwexec(mount_tool, true) != -1)) { + assumes(fwexec(nvram_tool, true) != -1); + assumes(reboot(RB_AUTOBOOT) != -1); + } } else #endif { -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080430/aa4a502e/attachment.html