From: Mike Yuan Date: Tue, 21 May 2024 15:43:06 +0000 (+0800) Subject: core/service: try to query for new main process's starttime X-Git-Tag: v257-rc1~1185^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f781292d6cfd1319a2be0194d5dca4703ea025a3;p=thirdparty%2Fsystemd.git core/service: try to query for new main process's starttime Currently, when service_set_main_pidref() is called without specifying start_timestamp, exec_status_start() always uses dual_timestamp_now(). This is not ideal, though, as when the main pid changes halfway due to e.g. sd_notify + MAINPID=, it's definitely spurious. --- diff --git a/src/core/service.c b/src/core/service.c index 8ec27c463a4..3ccb05bff46 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -214,6 +214,16 @@ static int service_set_main_pidref(Service *s, PidRef pidref_consume, const dual if (!pidref_equal(&s->main_pid, &pidref)) { service_unwatch_main_pid(s); + + dual_timestamp pid_start_time; + + if (!start_timestamp) { + usec_t t; + + if (pidref_get_start_time(&pidref, &t) >= 0) + start_timestamp = dual_timestamp_from_boottime(&pid_start_time, t); + } + exec_status_start(&s->main_exec_status, pidref.pid, start_timestamp); }