]> 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)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 13 Aug 2025 01:38:04 +0000 (10:38 +0900)
Otherwise, when service manager is reloaded or reexecuted, watchdong
will be started for frozen services, and they may be killed after
timeout.

Fixes #38551.

src/core/service.c

index aa8acdef78c1836727420ced50e8068537201b52..4f8eaf405184a1a68ea5c022cab7d7d235b21d45 100644 (file)
@@ -1418,7 +1418,8 @@ static int service_coldplug(Unit *u) {
                     SERVICE_DEAD_RESOURCES_PINNED))
                 (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_REFRESH_EXTENSIONS, SERVICE_MOUNTING))
+        if (IN_SET(s->deserialized_state, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD, SERVICE_RELOAD_SIGNAL, SERVICE_RELOAD_NOTIFY, SERVICE_REFRESH_EXTENSIONS, SERVICE_MOUNTING) &&
+            freezer_state_finish(u->freezer_state) == FREEZER_RUNNING)
                 service_start_watchdog(s);
 
         if (UNIT_ISSET(s->accept_socket)) {