Package: systemd
Version: 204-8
Severity: normal

Hi,

the gdm.service file goes:

[Unit]
Description=GNOME Display Manager
Conflicts=getty@tty7.service plymouth-quit.service
After=systemd-user-sessions.service getty@tty7.service 
plymouth-quit.service

[Service]
ExecStartPre=/bin/sh -c '[ "$(cat /etc/X11/default-display-manager 
2>/dev/null)" = "/usr/sbin/gdm3" ]'
ExecStartPre=/usr/share/gdm/generate-config
ExecStart=/usr/sbin/gdm3
ExecReload=/bin/kill -HUP $MAINPID
ExecReload=/usr/share/gdm/generate-config
Restart=always
RestartSec=1s
IgnoreSIGPIPE=no
BusName=org.gnome.DisplayManager
StandardOutput=syslog
StandardError=inherit


Running "systemctl reload gdm.service" works as expected. The two reload 
processes are run successfully.

However, running in succession:
 systemctl daemon-reload
 # Wait whatever time you want
 systemctl reload gdm.service
Makes the daemon receive a SIGTERM from PID 1.

First of all, the daemon is actually reloaded:

avril 27 14:32:24 kagura systemd[1]: Trying to enqueue job 
gdm.service/reload/replace
avril 27 14:32:24 kagura systemd[1]: Installed new job gdm.service/reload as 
3926
avril 27 14:32:24 kagura systemd[1]: Enqueued job gdm.service/reload as 3926
avril 27 14:32:24 kagura systemd[1]: Reloading GNOME Display Manager.
avril 27 14:32:24 kagura systemd[1]: About to execute: /bin/kill -HUP $MAINPID
avril 27 14:32:24 kagura systemd[1]: Forked /bin/kill as 4066
avril 27 14:32:24 kagura systemd[1]: gdm.service changed running -> reload
avril 27 14:32:24 kagura systemd[1]: Child 4066 belongs to gdm.service
avril 27 14:32:24 kagura systemd[1]: gdm.service: control process exited, 
code=exited status=0
avril 27 14:32:24 kagura systemd[1]: gdm.service running next control command 
for state reload
avril 27 14:32:24 kagura systemd[1]: Forked /usr/share/gdm/generate-config as 
4068
avril 27 14:32:24 kagura systemd[4068]: Executing: 
/usr/share/gdm/generate-config
avril 27 14:32:24 kagura gdm3[3731]: Got HUP signal
avril 27 14:32:24 kagura gdm3[3731]: GLib-GObject: g_object_ref: assertion 
'G_IS_OBJECT (object)' failed
avril 27 14:32:24 kagura gdm3[3731]: GLib-GObject: invalid unclassed pointer in 
cast to 'GdmSettings'
avril 27 14:32:24 kagura gdm3[3731]: Settings Direct Init

The last lines are from GDM which correctly receives SIGHUP as intended 
and does what it is supposed to do.

After which, things don’t go so well:

avril 27 14:32:24 kagura systemd[1]: Child 4068 belongs to gdm.service
avril 27 14:32:24 kagura systemd[1]: gdm.service: control process exited, 
code=exited status=0
avril 27 14:32:24 kagura systemd[1]: gdm.service got final SIGCHLD for state 
reload
avril 27 14:32:24 kagura systemd[1]: gdm.service changed reload -> stop-sigterm
avril 27 14:32:24 kagura systemd[1]: gdm.service's D-Bus name 
org.gnome.DisplayManager no longer registered by :1.186
avril 27 14:32:25 kagura systemd[1]: gdm.service holdoff time over, scheduling 
restart.
avril 27 14:32:25 kagura systemd[1]: Trying to enqueue job 
gdm.service/restart/fail
avril 27 14:32:25 kagura systemd[1]: Installed new job gdm.service/restart as 
3927
avril 27 14:32:25 kagura systemd[1]: Enqueued job gdm.service/restart as 3927
avril 27 14:32:25 kagura systemd[1]: gdm.service scheduled restart job.
avril 27 14:32:25 kagura systemd[1]: Stopping GNOME Display Manager...
avril 27 14:32:25 kagura systemd[1]: gdm.service changed auto-restart -> dead
avril 27 14:32:25 kagura systemd[1]: Job gdm.service/restart finished, 
result=done
avril 27 14:32:25 kagura systemd[1]: Converting job gdm.service/restart -> 
gdm.service/start
avril 27 14:32:25 kagura systemd[1]: Starting GNOME Display Manager...
avril 27 14:32:25 kagura systemd[1]: About to execute: /bin/sh -c '[ "$(cat 
/etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/gdm3" ]'
avril 27 14:32:25 kagura systemd[1]: Forked /bin/sh as 4075
avril 27 14:32:25 kagura systemd[1]: gdm.service changed dead -> start-pre
avril 27 14:32:25 kagura systemd[1]: Child 4075 belongs to gdm.service
avril 27 14:32:25 kagura systemd[1]: gdm.service: control process exited, 
code=exited status=0
avril 27 14:32:25 kagura systemd[1]: gdm.service running next control command 
for state start-pre
avril 27 14:32:25 kagura systemd[1]: Child 4080 belongs to gdm.service
avril 27 14:32:25 kagura systemd[1]: gdm.service: control process exited, 
code=exited status=0
avril 27 14:32:25 kagura systemd[1]: gdm.service got final SIGCHLD for state 
start-pre
avril 27 14:32:25 kagura systemd[1]: About to execute: /usr/sbin/gdm3
avril 27 14:32:25 kagura systemd[1]: Forked /usr/sbin/gdm3 as 4083
avril 27 14:32:25 kagura systemd[1]: gdm.service changed start-pre -> start
avril 27 14:32:25 kagura systemd[4083]: Executing: /usr/sbin/gdm3

After which the new daemon is started with success:

avril 27 14:32:25 kagura gdm3[4083]: Enabling debugging
avril 27 14:32:25 kagura gdm3[4083]: Changing user:group to 
Debian-gdm:Debian-gdm
avril 27 14:32:25 kagura systemd[1]: gdm.service's D-Bus name 
org.gnome.DisplayManager now registered by :1.222
avril 27 14:32:25 kagura systemd[1]: gdm.service changed start -> running
avril 27 14:32:25 kagura systemd[1]: Job gdm.service/start finished, result=done
avril 27 14:32:25 kagura systemd[1]: Started GNOME Display Manager.
avril 27 14:32:25 kagura gdm3[4083]: Successfully connected to D-Bus
avril 27 14:32:25 kagura gdm3[4083]: GdmManager: GDM starting to manage displays


The actual commands used for reloading don’t matter: replacing them with 
/bin/true yields the same result.

However, removing the BusName=org.gnome.DisplayManager in gdm.service 
fixes the issue (although in this case I lose systemd tracking of the 
DBus service becoming available).


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to