AyatanaIndicators / ayatana-indicator-messages

Ayatana Indicator Messages Applet
GNU General Public License v3.0
1 stars 6 forks source link

account-service: Do not unref UserManager owned user #35

Closed 3v1n0 closed 1 year ago

3v1n0 commented 1 year ago

act_user_manager_get_user() is a transfer-none function as users are cached internally and the ownership is not passed around, so we should not unref the user, or it will be destroyed during loading.

Fixes: https://gitlab.freedesktop.org/accountsservice/accountsservice/-/issues/114

3v1n0 commented 1 year ago

To make it clear, the user was basically removed from account manager and never loaded, in fact:

$ env G_MESSAGES_DEBUG=all  /usr/libexec/ayatana-indicator-messages/ayatana-indicator-messages-service

(process:2869220): GLib-GIO-DEBUG: 19:22:51.129: Using cross-namespace EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3)
(process:2869220): GLib-GIO-DEBUG: 19:22:51.216: Using cross-namespace EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3)
(process:2869220): Ayatana-Indicator-Messages-DEBUG: 19:22:51.786: Disabling remove-all
(process:2869220): GLib-GIO-DEBUG: 19:22:52.535: _g_io_module_get_default: Found default implementation dconf (DConfSettingsBackend) for ‘gsettings-backend’
(process:2869220): dconf-DEBUG: 19:22:52.541: watch_fast: "/org/ayatana/indicator/messages/" (establishing: 0, active: 0)
(process:2869220): accountsservice-DEBUG: 19:22:52.769: Finding a graphical session for user 1000
(process:2869220): accountsservice-DEBUG: 19:22:52.796: Considering session '719'
(process:2869220): accountsservice-DEBUG: 19:22:52.805: Session '719' is not a graphical session (type: 'tty')
(process:2869220): accountsservice-DEBUG: 19:22:52.806: Considering session '2'
(process:2869220): accountsservice-DEBUG: 19:22:52.832: ActUserManager: Seat still actively loading, so not setting loaded property
(process:2869220): dconf-DEBUG: 19:22:52.849: watch_established: "/org/ayatana/indicator/messages/" (establishing: 1)
(process:2869220): accountsservice-DEBUG: 19:22:52.854: ActUserManager: Seat loaded, so now setting loaded property
(process:2869220): Ayatana-Indicator-Messages-DEBUG: 19:22:52.856: Accounts Manager Loaded
(process:2869220): accountsservice-DEBUG: 19:22:52.980: ActUserManager: trying to track new user with username marco
(process:2869220): accountsservice-DEBUG: 19:22:53.000: ActUserManager: finding user 'marco' state 1
(process:2869220): accountsservice-DEBUG: 19:22:53.002: ActUserManager: finding user 'marco' state 2
(process:2869220): accountsservice-DEBUG: 19:22:53.003: ActUserManager: Looking for user 'marco' in accounts service
(process:2869220): accountsservice-DEBUG: 19:22:53.023: ActUserManager: User user 'marco' destroyed while still being fetched
(process:2869220): accountsservice-DEBUG: 19:22:53.032: ActUserManager: unrefing manager owned by fetch user request