Systemd fails to serialize tasks correctly on daemon-reload
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
systemd |
Fix Released
|
Unknown
|
|||
systemd (Debian) |
Fix Released
|
Unknown
|
|||
systemd (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Zesty |
Fix Released
|
Undecided
|
Unassigned | ||
Artful |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[Impact]
A unit with multiple Exec stanzas will loose execution state (which stanzas, out of multiple, have executed or not) upon systemd daemon-reload during the execution of these stanzas. This results in lost data/state, and units potentially failing to start/restart in unpredictable manner
[Testcase]
Setup a race of a unit with multiple exec stanzas (e.g. echo, sleep, echo) and execute daemon-reload whilst that is in progress. The execution state should persist across daemon-reload with all exec stanzas completing, in order, without duplicates.
[Original Bug report]
Hi,
I was initially tracking down a libvirt bug [1], but happened to realize it is actually a general systemd issue.
From there I got to file, discuss and test [2].
For now I file the bug to be ablte to do my tests correctly, but if it really fixes the issue I'd like to suggest to fix it in the release - so better file upfront and do even my test patches right.
[1]: https:/
[2]: https:/
[Regression Potential]
Minimal, this is a fix for incorrect upstream behaviour which resolves a racy condition. The code changes are upstream reviewed cherry-pick.
Changed in systemd: | |
status: | Unknown → New |
Changed in libvirt (Debian): | |
status: | Unknown → New |
Changed in systemd (Ubuntu): | |
assignee: | ChristianEhrhardt (paelzer) → nobody |
affects: | libvirt (Debian) → systemd (Debian) |
tags: | added: patch |
Changed in systemd: | |
status: | New → Fix Released |
Changed in systemd (Debian): | |
status: | New → Confirmed |
Changed in systemd (Debian): | |
status: | Confirmed → Fix Released |
no longer affects: | systemd (Ubuntu Yakkety) |
Changed in systemd (Ubuntu Artful): | |
status: | Fix Committed → Fix Released |
Changed in systemd (Ubuntu Zesty): | |
status: | New → In Progress |
description: | updated |
For now assigning to myself to test/verify the fix and making sure no other spends cycles on it if there is no need to yet.