[Bug 2037281] Re: Shutdown when triggering daemon-reload early in boot
Launchpad Bug Tracker
2037281 at bugs.launchpad.net
Mon Jan 22 17:24:42 UTC 2024
This bug was fixed in the package systemd - 245.4-4ubuntu3.23
---------------
systemd (245.4-4ubuntu3.23) focal; urgency=medium
[ Nick Rosbrook ]
* core/device: ignore DEVICE_FOUND_UDEV bit on switching root (LP: #2037281)
File: debian/patches/lp2037281-core-device-ignore-DEVICE_FOUND_UDEV-bit-on-switching-roo.patch
https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=7793563bb38a84a3dc6bc0da1c08546c3b915ab8
* dns-query: bump CNAME_MAX to 16 (LP: #2024009)
File: debian/patches/lp2024009-dns-query-bump-CNAME_MAX-to-16.patch
https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=193899d103d44c642d362e9916b14df844ec702f
* Fall back to kexec when no kexec binary exists (LP: #1969365)
File: debian/patches/lp1969365-Fall-back-to-kexec-when-no-kexec-binary-exists.patch
https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=3934f3794427dee4e72824998dd4c6e6d5875289
* test: ignore LXC filesystem when checking for writable locations (LP: #2029352)
File: debian/patches/lp2029352-test-ignore-LXC-filesystem-when-checking-for-writable-loc.patch
https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=70facbfbf54c4ffb31ba392dbe3fec3084fdf3bc
[ Heitor Alves de Siqueira ]
* core/mount: adjust deserialized state based on /proc/self/mountinfo (LP: #1837227)
Author: Heitor Alves de Siqueira
File: debian/patches/lp1837227-core-mount-adjust-deserialized-state-based-on-proc-self-m.patch
https://git.launchpad.net/~ubuntu-core-dev/ubuntu/+source/systemd/commit/?id=a0a749953d309f48bc45140102adf205d1071c4d
-- Nick Rosbrook <enr0n at ubuntu.com> Tue, 21 Nov 2023 16:10:21 -0500
** Changed in: systemd (Ubuntu Focal)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/2037281
Title:
Shutdown when triggering daemon-reload early in boot
Status in systemd package in Ubuntu:
Fix Released
Status in systemd source package in Focal:
Fix Released
Status in systemd source package in Jammy:
Fix Released
Bug description:
In Ubuntu Core 20, and Ubuntu Core 22, we are encountering an issue
where if a service, started earlier than devices are processed by
udev, does `systemctl daemon-reload`, the system shuts down. This is
due to devices for mounted filesystem temporarily taken dead, which
pulls most units down.
This was fixed by upstream in
https://github.com/systemd/systemd/pull/23218.
But this was not backported to the versions used by Ubuntu packages
for focal and jammy. The needed commit from that PR is the one with
message `core/device: ignore DEVICE_FOUND_UDEV bit on switching root`.
This patch applies to 245.4-4ubuntu3.22 (focal) without rebasing
needed. And I suppose it does also for jammy.
I have manually tested the fix with Ubuntu Core 20, and this fixes our
issue.
We would like this patch to be backported to focal-updates and jammy-
updates.
Thank you in advance.
[ Impact ]
If a user adds a service that calls `systemctl daemon-reload`, and if
this service is started before systemd-udevd. And if the initrd is
systemd (the case of Ubuntu Core), then most service will be stopped
or cancel, and the machine will mostly shutdown everything and hang.
The fix has been backported down to 250 upstream. It is already on
kinetic and later.
The fix only affects systems where systemd is used in initrd.
[ Test Plan ]
On Ubuntu Core 20 (with Core 22 kernel) or on Ubuntu Core 22. Or on
any system that uses systemd in initrd.
Add a systemd service that calls `systemctl daemon-reload`.
The service should have `DefaultDependencies=no` in order to start as soon as possible and be enabled.
Restart the machine.
If fix is not applied, after the service is started, most of units
with be shutdown, and the system will be unusable.
[ Where problems could occur ]
This should affect systems with systemd in initrd.
There are risks on systems that have an udev rule in initrd not
present in the main system.
There are risks on systems that use db_persist in initrd where the
device can potentially get dead state. Though this does not seem to
happen on Ubuntu Core 22, even though we use db_persist for dev mapper
devices. Regression is upstream bug #23429. Commits named
"core/device: device_coldplug(): don't set DEVICE_DEAD" and
"core/device: do not downgrade device state if it is already
enumerated" could be applied as well.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/2037281/+subscriptions
More information about the foundations-bugs
mailing list