[Bug 1632964] Re: Regression: systemd does not send all queued DBus Signals when a unit gets inactive
seahawk1986
1632964 at bugs.launchpad.net
Sun Oct 16 19:24:15 UTC 2016
I have been able to reproduce those missing signals most reliably within
a systemd user session (for the system session it works most of the
time):
Steps to reproduce missing dbus signals with Ubuntu 16.10 Desktop:
Create a ~/.config/systemd/user/terminal.service with this content:
[Unit]
Description=example unit to open a terminal
[Service]
Environment=DISPLAY=:0
ExecStart=/usr/bin/xterm
SuccessExitStatus=0 15
[Install]
WantedBy=default.target
Open two terminals. In the first one execute the attached
test_systemd_signals.py (which looks for PropertiesChanged Signals):
$ python test_systemd_signals.py
To see all dbus messages during the test you can run "dbus-monitor
--session" in another terminal.
In a second terminal start/stop the systemd unit:
$ systemctl --user daemon-reload
$ systemctl --user start terminal.service
$ systemctl --user stop terminal.service
With the current systemd package 231-9git1 the test script only shows two status changes (PropertiesChanged signals) sent by systemd:
ActiveState: active SubState: running
ActiveState: deactivating SubState: stop-sigterm
With the patched systemd package the test script should show the last change of the unit status (being set to inactive), too:
ActiveState: active SubState: running
ActiveState: deactivating SubState: stop-sigterm
ActiveState: inactive SubState: dead
Ubuntu 16.04 Desktop does not start a systemd user session by default - I created a package (based on https://github.com/joukewitteveen/xlogin) to simplify the process:
$ sudo add-apt-repository ppa:seahawk1986-hotmail/xlogin
$ sudo apt-get update
$ sudo apt-get install xlogin openbox
Create a ~/.xinitrc with this content (and make it executable):
#!/bin/bash
exec openbox-session
Then change to a tty console (or use a remote login via ssh):
$ sudo systemctl stop lightdm
$ sudo systemctl start xlogin at user # replace "user" with an existing user name
Now you can open two terminals (a right click on the desktop opens the
openbox menu) and follow the steps for Ubuntu 16.10 above.
** Attachment added: "test_systemd_signals.py"
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1632964/+attachment/4762145/+files/test_systemd_signals.py
--
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/1632964
Title:
Regression: systemd does not send all queued DBus Signals when a unit
gets inactive
Status in systemd package in Ubuntu:
In Progress
Status in systemd source package in Xenial:
Incomplete
Status in systemd source package in Yakkety:
In Progress
Status in systemd source package in z-series:
Fix Committed
Bug description:
Since the penultimate systemd package update in september
(229-4ubuntu8) systemd does not send the remaining queued DBus signals
(e.g. PropertiesChanged) when a unit's state changes to inactive.
Sending those signals has been working since the release of Ubuntu
16.04 and it is quite unfortunate for my use case this got broken
while fixing another bug.
Adding this upstream change to the package restores the old
functionality (a patch for the current systemd package (systemd
229-4ubuntu10) for xenial is attached):
https://github.com/systemd/systemd/commit/0dd99f86addd1f81e24e89807b6bc4aab57d5793
----
$ lsb_release -rd
Description: Ubuntu 16.04.1 LTS
Release: 16.04
----
package version: systemd 229-4ubuntu10
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1632964/+subscriptions
More information about the foundations-bugs
mailing list