"dconf update" unnecessarily disables and reenables shell extensions
Affected version
Fedora 35
GNOME 41
Wayland (probably XOrg too)
Bug summary
GNOME Shell unnecessarily (as far as I understand) disables and reenables extensions during, for example, systemd-libs package upgrade or reinstall. It happens because the package manager (package's scripts?) calls dconf update
(found it using strace).
Steps to reproduce
- Enable an extension that has some runtime state. Example: ddterm. Enable it and open the terminal - F12 by default.
sudo dnf reinstall systemd-libs
What happened
The extension gets disabled then enabled again. Ddterm shuts down the terminal app when the extension is disabled.
What did you expect to happen
I expect shell extensions not to be affected by reinstall of packages.
Relevant logs, screenshots, screencasts etc.
Reinstalling systemd-libs (or simply running sudo dconf update
) triggers spurious dconf notifications:
[amezin@fedora ~]$ dconf watch /org/gnome/shell
/
/
/
That translate to spurious GSettings change notifications:
[amezin@fedora ~]$ gsettings monitor org.gnome.shell
always-show-log-out: false
command-history: @as []
disable-user-extensions: false
favorite-apps: ['firefox.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop']
disable-extension-version-validation: false
app-picker-layout: [{'org.gnome.Contacts.desktop': <{'position': <0>}>, 'org.gnome.Weather.desktop': <{'position': <1>}>, 'org.gnome.clocks.desktop': <{'position': <2>}>, 'org.gnome.Maps.desktop': <{'position': <3>}>, 'org.gnome.Photos.desktop': <{'position': <4>}>, 'org.gnome.Totem.desktop': <{'position': <5>}>, 'org.gnome.Extensions.desktop': <{'position': <6>}>, 'org.gnome.Calculator.desktop': <{'position': <7>}>, 'org.gnome.gedit.desktop': <{'position': <8>}>, 'simple-scan.desktop': <{'position': <9>}>, 'gnome-control-center.desktop': <{'position': <10>}>, 'org.fedoraproject.MediaWriter.desktop': <{'position': <11>}>, 'gnome-system-monitor.desktop': <{'position': <12>}>, 'org.gnome.Boxes.desktop': <{'position': <13>}>, 'org.gnome.Terminal.desktop': <{'position': <14>}>, 'Utilities': <{'position': <15>}>, 'libreoffice-calc.desktop': <{'position': <16>}>, 'yelp.desktop': <{'position': <17>}>, 'libreoffice-impress.desktop': <{'position': <18>}>, 'org.gnome.Cheese.desktop': <{'position': <19>}>, 'libreoffice-writer.desktop': <{'position': <20>}>, 'rhythmbox.desktop': <{'position': <21>}>, 'org.gnome.Tour.desktop': <{'position': <22>}>, 'ca.desrt.dconf-editor.desktop': <{'position': <23>}>}]
had-bluetooth-devices-setup: false
looking-glass-history: @as []
enabled-extensions: ['background-logo@fedorahosted.org', 'ddterm@amezin.github.com']
disabled-extensions: @as []
development-tools: true
remember-mount-password: false
welcome-dialog-last-shown-version: '41.rc.1'
always-show-log-out: false
command-history: @as []
disable-user-extensions: false
favorite-apps: ['firefox.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop']
disable-extension-version-validation: false
app-picker-layout: [{'org.gnome.Contacts.desktop': <{'position': <0>}>, 'org.gnome.Weather.desktop': <{'position': <1>}>, 'org.gnome.clocks.desktop': <{'position': <2>}>, 'org.gnome.Maps.desktop': <{'position': <3>}>, 'org.gnome.Photos.desktop': <{'position': <4>}>, 'org.gnome.Totem.desktop': <{'position': <5>}>, 'org.gnome.Extensions.desktop': <{'position': <6>}>, 'org.gnome.Calculator.desktop': <{'position': <7>}>, 'org.gnome.gedit.desktop': <{'position': <8>}>, 'simple-scan.desktop': <{'position': <9>}>, 'gnome-control-center.desktop': <{'position': <10>}>, 'org.fedoraproject.MediaWriter.desktop': <{'position': <11>}>, 'gnome-system-monitor.desktop': <{'position': <12>}>, 'org.gnome.Boxes.desktop': <{'position': <13>}>, 'org.gnome.Terminal.desktop': <{'position': <14>}>, 'Utilities': <{'position': <15>}>, 'libreoffice-calc.desktop': <{'position': <16>}>, 'yelp.desktop': <{'position': <17>}>, 'libreoffice-impress.desktop': <{'position': <18>}>, 'org.gnome.Cheese.desktop': <{'position': <19>}>, 'libreoffice-writer.desktop': <{'position': <20>}>, 'rhythmbox.desktop': <{'position': <21>}>, 'org.gnome.Tour.desktop': <{'position': <22>}>, 'ca.desrt.dconf-editor.desktop': <{'position': <23>}>}]
had-bluetooth-devices-setup: false
looking-glass-history: @as []
enabled-extensions: ['background-logo@fedorahosted.org', 'ddterm@amezin.github.com']
disabled-extensions: @as []
development-tools: true
remember-mount-password: false
welcome-dialog-last-shown-version: '41.rc.1'
always-show-log-out: false
command-history: @as []
disable-user-extensions: false
favorite-apps: ['firefox.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop']
disable-extension-version-validation: false
app-picker-layout: [{'org.gnome.Contacts.desktop': <{'position': <0>}>, 'org.gnome.Weather.desktop': <{'position': <1>}>, 'org.gnome.clocks.desktop': <{'position': <2>}>, 'org.gnome.Maps.desktop': <{'position': <3>}>, 'org.gnome.Photos.desktop': <{'position': <4>}>, 'org.gnome.Totem.desktop': <{'position': <5>}>, 'org.gnome.Extensions.desktop': <{'position': <6>}>, 'org.gnome.Calculator.desktop': <{'position': <7>}>, 'org.gnome.gedit.desktop': <{'position': <8>}>, 'simple-scan.desktop': <{'position': <9>}>, 'gnome-control-center.desktop': <{'position': <10>}>, 'org.fedoraproject.MediaWriter.desktop': <{'position': <11>}>, 'gnome-system-monitor.desktop': <{'position': <12>}>, 'org.gnome.Boxes.desktop': <{'position': <13>}>, 'org.gnome.Terminal.desktop': <{'position': <14>}>, 'Utilities': <{'position': <15>}>, 'libreoffice-calc.desktop': <{'position': <16>}>, 'yelp.desktop': <{'position': <17>}>, 'libreoffice-impress.desktop': <{'position': <18>}>, 'org.gnome.Cheese.desktop': <{'position': <19>}>, 'libreoffice-writer.desktop': <{'position': <20>}>, 'rhythmbox.desktop': <{'position': <21>}>, 'org.gnome.Tour.desktop': <{'position': <22>}>, 'ca.desrt.dconf-editor.desktop': <{'position': <23>}>}]
had-bluetooth-devices-setup: false
looking-glass-history: @as []
enabled-extensions: ['background-logo@fedorahosted.org', 'ddterm@amezin.github.com']
disabled-extensions: @as []
development-tools: true
remember-mount-password: false
welcome-dialog-last-shown-version: '41.rc.1'
Is this dconf#40 (closed) ?
I've added logError(new Error('ddterm is being disabled!'))
line into extension's disable()
:
ноя 17 07:05:04 fedora sudo[28986]: amezin : TTY=pts/0 ; PWD=/home/amezin ; USER=root ; COMMAND=/usr/bin/dnf reinstall systemd-libs
ноя 17 07:05:04 fedora audit[28986]: CRED_REFR pid=28986 uid=1000 auid=1000 ses=3 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:setcred grantors=pam_localuser,pam_unix acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'
ноя 17 07:05:04 fedora sudo[28986]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
ноя 17 07:05:04 fedora audit[28986]: USER_START pid=28986 uid=1000 auid=1000 ses=3 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_keyinit,pam_limits,pam_keyinit,pam_limits,pam_systemd,pam_unix acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'
ноя 17 07:05:09 fedora gsd-usb-protect[27884]: Failed to fetch USBGuard rules list: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
ноя 17 07:05:09 fedora gsd-usb-protect[27884]: Failed to fetch USBGuard rules list: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
ноя 17 07:05:09 fedora gsd-usb-protect[27884]: Failed to fetch USBGuard rules list: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
ноя 17 07:05:09 fedora gsd-usb-protect[27884]: Failed to fetch USBGuard rules list: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
ноя 17 07:05:09 fedora gsd-usb-protect[27884]: Failed to fetch USBGuard rules list: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
ноя 17 07:05:09 fedora gsd-usb-protect[27884]: Failed to fetch USBGuard rules list: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
ноя 17 07:05:09 fedora gnome-shell[27612]: JS ERROR: Error: ddterm is being disabled!
disable@/home/amezin/.local/share/gnome-shell/extensions/ddterm@amezin.github.com/extension.js:207:18
_callExtensionDisable@resource:///org/gnome/shell/ui/extensionSystem.js:107:32
_onVersionValidationChanged/<@resource:///org/gnome/shell/ui/extensionSystem.js:517:18
_onVersionValidationChanged@resource:///org/gnome/shell/ui/extensionSystem.js:516:42
ноя 17 07:05:09 fedora systemd[1]: Starting Location Lookup Service...
ноя 17 07:05:09 fedora audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=geoclue comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
ноя 17 07:05:09 fedora systemd[1]: Started Location Lookup Service.
ноя 17 07:05:09 fedora gnome-shell[27612]: JS ERROR: Error: ddterm is being disabled!
disable@/home/amezin/.local/share/gnome-shell/extensions/ddterm@amezin.github.com/extension.js:207:18
_callExtensionDisable@resource:///org/gnome/shell/ui/extensionSystem.js:107:32
_onVersionValidationChanged/<@resource:///org/gnome/shell/ui/extensionSystem.js:517:18
_onVersionValidationChanged@resource:///org/gnome/shell/ui/extensionSystem.js:516:42
ноя 17 07:05:09 fedora systemd[1]: Started /usr/bin/systemctl start man-db-cache-update.
ноя 17 07:05:09 fedora audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=run-r8870ed8a766c49ae925daa3ed3195e17 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
ноя 17 07:05:09 fedora systemd[1]: Starting man-db-cache-update.service...
ноя 17 07:05:09 fedora systemd[1]: Started /usr/bin/systemctl start man-db-cache-update.
ноя 17 07:05:09 fedora audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=run-rdb36769dfb8849a892bcf938cd75056c comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
ноя 17 07:05:09 fedora audit[28986]: USER_END pid=28986 uid=1000 auid=1000 ses=3 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:session_close grantors=pam_keyinit,pam_limits,pam_keyinit,pam_limits,pam_systemd,pam_unix acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'
ноя 17 07:05:09 fedora audit[28986]: CRED_DISP pid=28986 uid=1000 auid=1000 ses=3 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:setcred grantors=pam_localuser,pam_unix acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'
ноя 17 07:05:09 fedora sudo[28986]: pam_unix(sudo:session): session closed for user root
ноя 17 07:05:09 fedora systemd[1535]: vte-spawn-e3f813d3-c519-45f4-9f8e-8f6c75d1866e.scope: Consumed 2.031s CPU time.
ноя 17 07:05:09 fedora gnome-shell[27612]: JS ERROR: Error: ddterm is being disabled!
disable@/home/amezin/.local/share/gnome-shell/extensions/ddterm@amezin.github.com/extension.js:207:18
_callExtensionDisable@resource:///org/gnome/shell/ui/extensionSystem.js:107:32
_onVersionValidationChanged/<@resource:///org/gnome/shell/ui/extensionSystem.js:517:18
_onVersionValidationChanged@resource:///org/gnome/shell/ui/extensionSystem.js:516:42
ноя 17 07:05:09 fedora gnome-shell[27612]: ddterm app exited with status 0
So disable()
is called from _onVersionValidationChanged()
... Which is apparently triggered by a spurious change notification for disable-extension-version-validation
setting
Issue reported by ddterm user: https://github.com/amezin/gnome-shell-extension-ddterm/issues/99