"systemd --user" and child processes fail to exit when user logs out

Bug #1871726 reported by Daniel Richard G.
14
This bug affects 3 people
Affects Status Importance Assigned to Milestone
systemd (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

This concerns systemd 245.2-1ubuntu2 in Ubuntu focal.

I am using the Xfce desktop. After the user logs out from a desktop session, numerous desktop-related processes are left over. Here is a listing, taken over twenty minutes after logout:

skunk 853 0.0 0.2 18912 10300 ? Ss 17:55 0:00 /lib/systemd/systemd --user
skunk 854 0.0 0.0 103304 3496 ? S 17:55 0:00 (sd-pam)
skunk 881 0.0 0.1 8076 5324 ? Ss 17:55 0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
skunk 970 0.0 0.1 305364 6776 ? Ssl 17:55 0:00 /usr/libexec/at-spi-bus-launcher
skunk 975 0.0 0.1 7352 4452 ? S 17:55 0:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
skunk 979 0.0 0.1 230196 5900 ? Sl 17:55 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
skunk 992 0.0 0.1 239704 7676 ? Ssl 17:55 0:00 /usr/libexec/gvfsd
skunk 997 0.0 0.1 378332 6444 ? Sl 17:55 0:00 /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
skunk 1133 0.0 0.1 156116 5596 ? Sl 17:56 0:00 /usr/libexec/dconf-service
skunk 1139 0.0 0.1 236884 4828 ? Sl 17:56 0:00 /usr/libexec/geoclue-2.0/demos/agent
skunk 1186 0.0 0.8 59324 34792 ? S 17:56 0:00 /usr/bin/python3 /usr/share/system-config-printer/applet.py
skunk 1201 0.0 0.6 391676 25688 ? Ssl 17:56 0:00 /usr/libexec/evolution-source-registry
skunk 1224 0.0 0.8 616644 35492 ? Sl 17:56 0:00 /usr/libexec/goa-daemon
skunk 1235 0.0 0.7 708928 30512 ? Ssl 17:56 0:00 /usr/libexec/evolution-calendar-factory
skunk 1243 0.0 0.2 314744 8980 ? Sl 17:56 0:00 /usr/libexec/goa-identity-service
skunk 1271 0.0 0.7 681460 29344 ? Ssl 17:56 0:00 /usr/libexec/evolution-addressbook-factory
skunk 1302 0.0 0.1 43968 6432 ? Ss 17:56 0:00 /usr/lib/bluetooth/obexd
skunk 1322 0.0 0.2 313872 9076 ? Ssl 17:56 0:00 /usr/libexec/gvfs-udisks2-volume-monitor
skunk 1327 0.0 0.1 235684 6468 ? Ssl 17:56 0:00 /usr/libexec/gvfs-mtp-volume-monitor
skunk 1331 0.0 0.1 237956 6876 ? Ssl 17:56 0:00 /usr/libexec/gvfs-gphoto2-volume-monitor
skunk 1335 0.0 0.1 235864 5760 ? Ssl 17:56 0:00 /usr/libexec/gvfs-goa-volume-monitor
skunk 1339 0.0 0.2 316716 8800 ? Ssl 17:56 0:00 /usr/libexec/gvfs-afc-volume-monitor
skunk 1347 0.0 0.1 313684 7836 ? Sl 17:56 0:00 /usr/libexec/gvfsd-trash --spawner :1.13 /org/gtk/gvfs/exec_spaw/0
skunk 1353 0.0 0.1 162128 6028 ? Ssl 17:56 0:00 /usr/libexec/gvfsd-metadata

When a user logs out of the system, all processes associated with the login session should be terminated (barring the use of nohup(1) or the like).

If I sent a SIGINT to the "systemd --user" process above (PID 853), then all the processes promptly go away. This needs to occur on logout.

Tags: focal
Revision history for this message
Sebastien Bacher (seb128) wrote :

Thank you for your bug report, do you have that user logged in from a VT or ssh maybe?
What's the output of
$ loginctl list-sessions
(log as another user to try the comment)

Revision history for this message
Daniel Richard G. (skunk) wrote :

This occurs whether the user logs in (through lightdm) on the console, or remotely via xrdp.

Running that command, as root, after the user (skunk) has logged in via lightdm:

    # loginctl list-sessions
    SESSION UID USER SEAT TTY
          2 0 root
         c2 1000 skunk seat0

    2 sessions listed.

After logout:

    # loginctl list-sessions
    SESSION UID USER SEAT TTY
          2 0 root
         c2 1000 skunk seat0
         c3 107 lightdm seat0

    3 sessions listed.

Even after SIGINT to "systemd --user", even after all the user processes go away, the c2 session remains present.

The output from loginctl for an xrdp login is similar. After logout:

    # loginctl list-sessions
    SESSION UID USER SEAT TTY
          2 0 root
         c1 107 lightdm seat0
         c2 1000 skunk

Revision history for this message
Sebastien Bacher (seb128) wrote :

Thank you for your bug report, I can't confirm the bug on focal

Using an uptodate system
- start to gdm
- login is 'userone'
- create a 'dbguser'
- logout from the 'userone' session
- ssh dbguser@

$ loginctl list-sessions
SESSION UID USER SEAT TTY
     27 1001 dbguser pts/0
     c3 124 gdm seat0 tty1

What's the output of
$ loginctl user-status skunk
for you?
(you need to ssh as another user otherwise the fact that you connect with the user to start the command is going to interfer)

Revision history for this message
Daniel Richard G. (skunk) wrote :
Download full text (4.6 KiB)

Could you try this using lightdm? It's possible that this may be a display-manager issue.

I did notice that in a different (customized) configuration of Xubuntu, the user processes still remained after logout, but then killing the "systemd --user" process resulted in the login session ending.

Anyway, here is the output you requested, in the original test environment:

# LC_ALL=C loginctl user-status skunk | cat
skunk (1000)
    Since: Fri 2020-04-10 18:40:19 EDT; 3min 11s ago
    State: closing
 Sessions: *c2
   Linger: no
     Unit: user-1000.slice
    |-session-c2.scope
    | |-1288 /usr/libexec/geoclue-2.0/demos/agent
    | `-1345 /usr/bin/python3 /usr/share/system-config-printer/applet.py
    `-user@1000.service
      |-at-spi-dbus-bus.service
      | |-1131 /usr/libexec/at-spi-bus-launcher
      | `-1136 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
      |-dbus.service
      | |-1042 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
      | |-1140 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
      | |-1291 /usr/lib/x86_64-linux-gnu/tumbler-1/tumblerd
      | |-1302 /usr/libexec/dconf-service
      | |-1391 /usr/libexec/goa-daemon
      | `-1404 /usr/libexec/goa-identity-service
      |-evolution-addressbook-factory.service
      | `-1438 /usr/libexec/evolution-addressbook-factory
      |-evolution-calendar-factory.service
      | `-1396 /usr/libexec/evolution-calendar-factory
      |-evolution-source-registry.service
      | `-1374 /usr/libexec/evolution-source-registry
      |-gvfs-afc-volume-monitor.service
      | `-1501 /usr/libexec/gvfs-afc-volume-monitor
      |-gvfs-daemon.service
      | |-1153 /usr/libexec/gvfsd
      | |-1158 /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
      | `-1509 /usr/libexec/gvfsd-trash --spawner :1.13 /org/gtk/gvfs/exec_spaw/0
      |-gvfs-goa-volume-monitor.service
      | `-1497 /usr/libexec/gvfs-goa-volume-monitor
      |-gvfs-gphoto2-volume-monitor.service
      | `-1493 /usr/libexec/gvfs-gphoto2-volume-monitor
      |-gvfs-metadata.service
      | `-1515 /usr/libexec/gvfsd-metadata
      |-gvfs-mtp-volume-monitor.service
      | `-1489 /usr/libexec/gvfs-mtp-volume-monitor
      |-gvfs-udisks2-volume-monitor.service
      | `-1484 /usr/libexec/gvfs-udisks2-volume-monitor
      |-init.scope
      | |-1017 /lib/systemd/systemd --user
      | `-1018 (sd-pam)
      `-obex.service
        `-1464 /usr/lib/bluetooth/obexd

Apr 10 18:41:21 test-ubuntu64 systemd[1017]: Stopped Indicator Application Service.
Apr 10 18:41:21 test-ubuntu64 systemd[1017]: indicator-keyboard.service: Succeeded.
Apr 10 18:41:21 test-ubuntu64 systemd[1017]: Stopped Indicator Keyboard Backend.
Apr 10 18:41:21 test-ubuntu64 systemd[1017]: Stopping Indicator Session Service...
Apr 10 18:41:21 test-ubuntu64 systemd[1017]: indicator-session.service: Succeeded.
Apr 10 18:41:21 test-ubuntu64 systemd[1017]: Stopped Indicator Session Service.
Apr 10 18:41:22 test-ubuntu64 indicator-sound[1250]: g_object_ref: assertion 'old_val > 0' failed
Apr 10 18:41:22 test-ubuntu64 systemd[1017]: pulseaudio.service: S...

Read more...

Revision history for this message
Daniel Richard G. (skunk) wrote :

Related: LP: #1877528

Revision history for this message
Daniel Richard G. (skunk) wrote :

Also related: LP: #1877532

It's possible that all the lingering processes are due to a couple of misbehaving applications.

This isn't a great state of affairs (the cleanup process should not be so fragile that non-cooperative processes can stop it completely), but it might explain what's going on.

Revision history for this message
Dan Streetman (ddstreet) wrote :

please reopen if this is still an issue

Changed in systemd (Ubuntu):
status: New → Invalid
Revision history for this message
Daniel Richard G. (skunk) wrote :

Yes, it is still an issue in focal. Was there an update since last year that should have addressed this?

Changed in systemd (Ubuntu):
status: Invalid → New
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in systemd (Ubuntu):
status: New → Confirmed
Revision history for this message
Jason Liu (j69liu) wrote :

Confirmed that this is still an issue in focal.

It is only an issue if I log onto a XFCE session and then log out, these two processes stay around:
    /usr/libexec/geoclue-2.0/demos/agent
    /usr/bin/python3 /usr/share/system-config-printer/applet.py

When I remove the geoclue-2.0 from the system:
    sudo apt -y purge geoclue-2.0 --autoremove
The issue no longer shows up. I don't see neither processes hanging around any more.

I think those two are related to the two autostart programs:
    /etc/xdg/autostart/geoclue-demo-agent.desktop
    /etc/xdg/autostart/print-applet.desktop

I think in terms of workaround, two options here:
    1. remove geoclue - but the catch here is that if you autoremove, gnome dependencies may get removed, which could have unexpected outcome
    2. remove autostart files

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.