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@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
Touch seeded packages, 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

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to