Bug#1056137: systemd: downgrading systemd packages kills off the desktop environment
Michael Biebl
biebl at debian.org
Wed Feb 28 17:37:41 GMT 2024
Control: severity -1 wishlist
Control: tags -1 + help
Hi Christoph
On Fri, 17 Nov 2023 14:40:05 +0100 Christoph Anton Mitterer
<calestyo at scientia.org> wrote:
> Package: systemd
> Version: 255~rc2-1
> Severity: important
>
> Hey.
>
> Because of #1056135 I was downgradin systemd/udev packages to 254.5-1.
> While apt was still running, this causes the whole desktop environment
> (I use cinnamon) to be killed (and all processes in it ;-) ).
>
> Tried it twice, happened twice.
I acknowledge that not being able to downgrade is a nuisance.
systemd is not special in that regard though. Quite a few packages that
I now need to convert their on-disk-files on upgrades to a new format
which is not easily reversible.
None of those packages have explicit maintainer scripts code though,
which would prevent a downgrade.
So we do not plan to add maintainer scripts code in systemd either.
My guess is, that the failures you encountered are due to the following
change in v255:
"""
Service Manager:
* The way services are spawned has been overhauled. Previously, a
process was forked that shared all of the manager's memory (via
copy-on-write) while doing all the required setup (e.g.: mount
namespaces, CGroup configuration, etc.) before exec'ing the
target
executable. This was problematic for various reasons: several
glibc
APIs were called that are not supposed to be used after a
fork but
before an exec, copy-on-write meant that if either process (the
manager or the child) touched a memory page a copy was
triggered, and
also the memory footprint of the child process was that of the
manager, but with the memory limits of the service. From this
version
onward, the new process is spawned using CLONE_VM and CLONE_VFORK
semantics via posix_spawn(3), and it immediately execs a new
internal
binary, systemd-executor, that receives the configuration to
apply
via memfd, and sets up the process before exec'ing the target
executable. The systemd-executor binary is pinned by file
descriptor
by each manager instance (system and users), and the reference is
updated on daemon-reexec - it is thus important to reexec all
running
manager instances when the systemd-executor and/or libsystemd*
libraries are updated on the filesystem.
"""
This is just a guess though.
There is only so much we can do as Debian systemd team. If that issue is
important to you, please consider investigating this further and
providing patches, ideally via a MR on salsa.
Michael
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20240228/956a9c6c/attachment.sig>
More information about the Pkg-systemd-maintainers
mailing list