]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/service: do not start watchdog on frozen unit when service manager is reloaded...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 12 Aug 2025 06:35:21 +0000 (15:35 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 3 Sep 2025 10:10:48 +0000 (12:10 +0200)
Otherwise, when service manager is reloaded or reexecuted, watchdong
will be started for frozen services, and they may be killed after
timeout.

Fixes #38551.

(cherry picked from commit c70816fd09a0e37732f48f204be282fda09918cf)

src/core/service.c

index c83540c12095b673fbc53035d6b25e4082603894..25ccff1975fedff2fb8264a554d1d43348d5dc5b 100644 (file)
@@ -1432,7 +1432,8 @@ static int service_coldplug(Unit *u) {
                 (void) unit_setup_exec_runtime(u);
         }
 
-        if (IN_SET(s->deserialized_state, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD, SERVICE_RELOAD_SIGNAL, SERVICE_RELOAD_NOTIFY, SERVICE_MOUNTING))
+        if (IN_SET(s->deserialized_state, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD, SERVICE_RELOAD_SIGNAL, SERVICE_RELOAD_NOTIFY, SERVICE_MOUNTING) &&
+            freezer_state_finish(u->freezer_state) == FREEZER_RUNNING)
                 service_start_watchdog(s);
 
         if (UNIT_ISSET(s->accept_socket)) {