Привет всем!
Пишу приложение на Python+GTK. Наблюдаю очень странный баг, который не проявляется на одном компе и проявляется на другом. На втором он не сразу стал проявляться, а появился только недавно. При этом код моего приложения не менялся, обновлений систем не было. На обоих машинах одинаковая Ubuntu 18.04.
Из приложения надо открыть обычный диалог выбора файла:
dialog = Gtk.FileChooserDialog("Dialog", self._gui_main_window, action=Gtk.FileChooserAction.OPEN)
print("New dialog!")
response = dialog.run()
...
Error creating proxy: Error calling StartServiceByName for org.gtk.vfs.UDisks2VolumeMonitor: Timeout was reached (g-io-error-quark, 24)
Что интересно, если приложение запускать без всякой сессии, просто xterm и Xorg, то всё работает как надо, диалог открывается. А в полноценной сессии (пробовал GNOME и XFCE) случается описанный выше зависон.
Я погуглил и нашёл отдалённо похожее поведение: https://gitlab.gnome.org/GNOME/gtk/issues/1066 тут в консоль выводится аналогичное сообщение. Но, у меня этот баг срабатывает только в одном приложении (на Python, которое я пишу), в других приложениях всё нормально. /etc/fstab не содержит сетевых монтирований.
Куда копать?
=== UPD ===
Запустил с отладкой сообщений D-Bus. Перед зависанием вот что выводится в консоль:
GDBus-debug:Call:
<<<< ASYNC COMPLETE org.freedesktop.DBus.StartServiceByName() (serial 0)
FAILED: Timeout was reached
=== UPD 2 ===
Заработало после того, как убрал из переменной GTK_MODULES запись «appmenu-gtk-module».
Вот такое содержимое данной переменной в стандартной сессии:
GTK_MODULES=appmenu-gtk-module:appmenu-gtk-module:gail:atk-bridge
GTK_MODULES=gail:atk-bridge
Пока не отмечаю задачу решённой, т.к. связь одного с другим непонятная.