Projects
Browse Source     Search     Timeline     Wiki

Changeset 23594

Show
Ignore:
Timestamp:
04/08/08 13:38:15 (8 months ago)
Author:
zarzycki@…
Message:

Better logging at shutdown.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/launchd/src/launchd_core_logic.c

    r23593 r23594  
    309309static void jobmgr_reap_bulk(jobmgr_t jm, struct kevent *kev); 
    310310static void jobmgr_log_stray_children(jobmgr_t jm); 
     311static void jobmgr_kill_stray_child(jobmgr_t jm, pid_t p); 
    311312static void jobmgr_remove(jobmgr_t jm); 
    312313static void jobmgr_dispatch_all(jobmgr_t jm, bool newmounthack); 
     
    596597                        job_assumes(j, kevent_mod((uintptr_t)&j->exit_timeout, EVFILT_TIMER, 
    597598                                                EV_ADD|EV_ONESHOT, NOTE_SECONDS, j->exit_timeout, j) != -1); 
     599                } else { 
     600                        job_log(j, LOG_DEBUG, "This job has an infinite exit timeout"); 
    598601                } 
    599602 
     
    21942197        struct kinfo_proc *kp; 
    21952198 
    2196 #if TARGET_OS_EMBEDDED 
    21972199        if (!do_apple_internal_logging) { 
    21982200                return; 
    21992201        } 
    2200 #endif 
    22012202 
    22022203        runtime_ktrace(RTKT_LAUNCHD_FINDING_STRAY_PG, j->p, 0, 0); 
     
    30643065        uid_t u = j->mach_uid; 
    30653066 
    3066 #if TARGET_OS_EMBEDDED 
    30673067        if (!do_apple_internal_logging) { 
    30683068                return; 
    30693069        } 
    3070 #endif 
     3070 
    30713071        kp = malloc(len); 
    30723072 
     
    46304630 
    46314631void 
     4632jobmgr_kill_stray_child(jobmgr_t jm, pid_t p) 
     4633{ 
     4634        struct timespec ts = { 2, 0 }; 
     4635        uint64_t start, end, nanosec; 
     4636        struct kevent kev; 
     4637        int r, kq = kqueue(); 
     4638 
     4639        if (!jobmgr_assumes(jm, kq != -1)) { 
     4640                return; 
     4641        } 
     4642 
     4643        EV_SET(&kev, p, EVFILT_PROC, EV_ADD, 0, 0, 0); 
     4644 
     4645        if (!jobmgr_assumes(jm, kevent(kq, &kev, 1, NULL, 0, NULL) != -1)) { 
     4646                goto out; 
     4647        } 
     4648 
     4649        start = runtime_get_opaque_time(); 
     4650 
     4651        if (!jobmgr_assumes(jm, runtime_kill(p, SIGTERM) != -1)) { 
     4652                goto out; 
     4653        } 
     4654 
     4655        r = kevent(kq, NULL, 0, &kev, 1, &ts); 
     4656 
     4657        if (!jobmgr_assumes(jm, r == 0 || r == 1)) { 
     4658                goto out; 
     4659        } 
     4660 
     4661        if (r == 0 && jobmgr_assumes(jm, runtime_kill(p, SIGKILL) != -1)) { 
     4662                jobmgr_assumes(jm, kevent(kq, NULL, 0, &kev, 1, NULL) == 1); 
     4663        } 
     4664 
     4665        end = runtime_get_opaque_time(); 
     4666 
     4667        nanosec = runtime_opaque_time_to_nano(end - start); 
     4668 
     4669        jobmgr_log(jm, LOG_DEBUG, "PID %u died after %llu nanoseconds", p, nanosec); 
     4670 
     4671out: 
     4672        jobmgr_assumes(jm, runtime_close(kq) != -1); 
     4673} 
     4674 
     4675void 
    46324676jobmgr_log_stray_children(jobmgr_t jm) 
    46334677{ 
     
    46364680        struct kinfo_proc *kp; 
    46374681 
    4638 #if TARGET_OS_EMBEDDED 
    46394682        if (!do_apple_internal_logging) { 
    46404683                return; 
    46414684        } 
    4642 #endif 
    46434685 
    46444686        if (likely(jm->parentmgr || !pid1_magic)) { 
     
    46724714                jobmgr_log(jm, LOG_WARNING, "Stray %sprocess at shutdown: PID %u PPID %u PGID %u %s", z, p_i, pp_i, pg_i, n); 
    46734715 
    4674                 /* 
    4675                  * The kernel team requested that launchd not do this for Leopard. 
    4676                  * jobmgr_assumes(jm, runtime_kill(p_i, SIGKILL) != -1); 
    4677                  */ 
     4716                jobmgr_kill_stray_child(jm, p_i); 
    46784717        } 
    46794718