Projects
Browse Source     Search     Timeline     Wiki

Changeset 23057

Show
Ignore:
Timestamp:
02/11/07 21:21:36 (22 months ago)
Author:
zarzycki@…
Message:

<rdar://problem/4989673> Bug: launchd_core_logic.c:604 (23046):3: j->p == 0

Files:
1 modified

Legend:

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

    r23056 r23057  
    274274        mode_t mask; 
    275275        unsigned int globargv:1, wait4debugger:1, unload_at_exit:1, stall_before_exec:1, only_once:1, 
    276                      currently_ignored:1, forced_peers_to_demand_mode:1, setnice:1, hopefully_exits_last:1; 
     276                     currently_ignored:1, forced_peers_to_demand_mode:1, setnice:1, hopefully_exits_last:1, removal_pending:1; 
    277277        char label[0]; 
    278278}; 
     
    600600        struct semaphoreitem *si; 
    601601 
    602         job_log(j, LOG_DEBUG, "Removed"); 
     602        if (j->p) { 
     603                job_log(j, LOG_DEBUG, "Removal pended until the job exits."); 
     604 
     605                if (!j->removal_pending) { 
     606                        j->removal_pending = true; 
     607                        job_stop(j); 
     608                } 
     609 
     610                return; 
     611        } 
    603612 
    604613        if (j->forced_peers_to_demand_mode) { 
    605614                job_set_global_on_demand(j, false); 
    606         } 
    607  
    608         if (!job_assumes(j, j->p == 0)) { 
    609                 job_assumes(j, kill(j->p, SIGKILL) != -1); 
    610                 job_reap(j); 
    611615        } 
    612616 
     
    689693                jobmgr_tickle(j->mgr); 
    690694        } 
     695 
     696        job_log(j, LOG_DEBUG, "Removed"); 
    691697 
    692698        free(j); 
     
    28502856                } 
    28512857                job_log(j, LOG_INFO, "Exited. Was only configured to run once."); 
     2858                return true; 
     2859        } else if (j->removal_pending) { 
     2860                job_log(j, LOG_DEBUG, "Exited while removal was pending."); 
    28522861                return true; 
    28532862        } else if (j->mgr->shutting_down) {