Gnome程序(eog / gnome-terminal)启动缓慢,并产生DBus.Error.NoReply警告


10

有一段时间,eoggnome-terminal已开始非常缓慢地在我的(X)的Ubuntu 13.10。我认为其他Gnome工具也受到影响,但我不使用任何其他工具。

现在org.freedesktop.DBus.Error.NoReply每次gnome-terminal启动我都会收到一个错误:

**(gnome-terminal:5516):警告**:检索可访问性总线地址时出错:org.freedesktop.DBus.Error.NoReply:没有收到回复。可能的原因包括:远程应用程序未发送答复,消息总线安全策略阻止了答复,答复超时到期或网络连接断开。

并且每次eog开始:

**(eog:4996):警告**:检索可访问性总线地址时出错:org.freedesktop.DBus.Error.NoReply:未收到回复。可能的原因包括:远程应用程序未发送答复,消息总线安全策略阻止了答复,答复超时到期或网络连接断开。

(eog:4996):EOG-警告**:无法加载图标:主题中不存在图标“图像加载”图标

我认为这与删除默认情况下启动的某些程序有关,包括at-spi2-registryd我认为属于Gnome的Accessibility Project的程序

根据dpkg --getselections | grep spiat-spi2-core仍安装在我的系统上。

我记得做过一些非常棘手/愚蠢的事情,例如用空的echo程序交换一些配置文件或二进制文件以阻止守护程序启动。

  • 如何解决此错误?
  • 是什么导致此错误?

Google产生了一些at-spi...相关链接:

这可能freedesktop与我遇到的一个相关问题有关nmcli,因此请查看一下:nmcli freedesktop DBus警告和错误


ltrace -r eog

0.000000 __libc_start_main(0x41e210, 2, 0x7fff41235b18, 0x45c020, 0x45c0b0 <unfinished ...>
0.000734 bindtextdomain("eog", "/usr/share/locale") = "/usr/share/locale"
0.001297 bind_textdomain_codeset(0x463fff, 0x45c0f6, 1, 0, 65535) = 0x1d59750
0.000863 textdomain("eog")                     = "eog"
0.000759 dcgettext(0, 0x45c0fc, 5, 0x676f65, 65535) = 0x45c0fc
0.000718 g_option_context_new(0x45c0fc, 1, 2, 3, 0) = 0x1d598e0
0.000711 g_option_context_add_main_entries(0x1d598e0, 0x45c300, 0x463fff, 0x1d59940, 88) = 0
0.000668 gtk_get_option_group(1, 0x7f161670f2e0, 0x1d59960, 0x7f161670bec0, 0) = 0x1d5ccd0
0.003283 g_option_context_add_group(0x1d598e0, 0x1d5ccd0, 0x1d5cf60, 0x7f161670bec0, 3) = 0x1d5d000
0.000711 g_irepository_get_option_group(0, 0, 0x1d5d000, 0x1d50670, 0) = 0x1d5cf80
0.000845 g_option_context_add_group(0x1d598e0, 0x1d5cf80, 0x1d5d830, 3, 3) = 0x1d5d000
0.000613 g_option_context_parse(0x1d598e0, 0x7fff41235a0c, 0x7fff41235a00, 0x7fff41235a18, 0
** (eog:2797): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
) = 1
25.069454 g_option_context_free(0x1d598e0, 0x7fff41235b18, 0x7fff41235b20, 0x7fff412373c4, 2) = 0
0.000330 xmp_init(0x7f1616281740, 0xffffffff, 0, 0x7f1616281768, 0) = 1
0.001356 g_getenv(0x45c905, 0x1dbb610, 0x1dbb5c0, 1, 3) = 0

[...]

0.000509 g_object_ref(0x204f240, 3, 1, 51, 0x7f16080008e0) = 0x204f240
0.000681 g_queue_push_tail(0x1d5d780, 0x204f240, 2, 51, 0x204d270) = 0x1ff5ce0
0.000793 g_cond_broadcast(0x67b7d0, 0x1ff5ce0, 0, 16, 0) = 0
0.000797 g_mutex_unlock(0x67b7c0, 132, 1, -1, 0x7f16080008e0) = 0
0.000716 g_object_unref(0x204f240, 0, 0x7f16080008e0, -1, 0x7f16080008e0) = 2

(eog:2797): EOG-WARNING **: Couldn't load icon: Icon 'image-loading' not present in theme
0.048019 gtk_icon_view_get_type(0x1fb23b0, 0x450510, 0x1fb23b0, 0x7f1616703450, 0x1d50a60) = 0x2015420
0.000800 g_type_check_instance_cast(0x1fb23b0, 0x2015420, 0x1fb23b0, 0x7f1616703450, 0x1d50a60) = 0x1fb23b0
0.000743 gtk_icon_view_get_visible_range(0x1fb23b0, 0x7fff41235820, 0x7fff41235828, 0x2015420, 0x2015420) = 0
0.000588 gtk_icon_view_get_type(0x1fb23b0, 0x450510, 0x1fb23b0, 0x7f1616703450, 0x1d50a60) = 0x2015420

[...]

ltrace -r gnome-terminal

[...]

0.000543 g_str_hash(0x7f1ba08d1617, 0x7f1ba08d1617, 0x21cd180, 0, 0x219d050) = 0x6e8257f7
0.000714 g_str_hash(0x7f1ba08d194c, 0x7f1ba08d194c, 0, 0x7f1ba08d194c, 0) = 0x24119b48
0.000490 g_str_hash(0x7f1ba08d194c, 0x7f1ba08d194c, 0x21bcaa0, 0, 0x219d050) = 0x24119b48
0.000655 g_str_hash(0x7f1ba12f72c7, 0x7f1ba12f72c7, 0, 0x7f1ba12f72c7, 40) = 0xac0d625f
0.000596 g_str_hash(0x7f1ba12f72c7, 0x7f1ba12f72c7, 0x21bcc20, 0, 0x219d050) = 0xac0d625f

[...]

** (gnome-terminal:5758): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
25.036838 g_str_hash(0x7f1ba0b4452a, 0x7f1ba0b4452a, 0, 0x7f1ba0b4452a, 508) = 0xa59bb851
0.000696 g_str_hash(0x21b18bc, 0x21b18bc, 0x21d7080, 0, 509) = 0xa59bb851
0.000501 g_str_hash(0x7f1ba13cf396, 0x7f1ba13cf396, 0, 0x7f1ba13cf396, 24) = 0x22c79e89
0.000550 g_str_hash(0x7f1ba13cf396, 0x7f1ba13cf396, 0x21d7150, 0, 0x219d050) = 0x22c79e89
0.003683 g_str_hash(0x7f1ba0dc076b, 0x7f1ba0dc076b, 0, 0x7f1ba0dc076b, 384) = 0xa4fa89ab

strace -r eog

[...]
0.000268 poll([{fd=3, events=POLLIN}], 1, 25000) = 1 ([{fd=3, revents=POLLIN}])
0.000723 recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"l\2\1\1\v\0\0\0\1\0\0\0=\0\0\0\6\1s\0\6\0\0\0:1.307\0\0"..., 2048}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 262
0.000351 recvmsg(3, 0x7ffff251a080, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
0.000339 sendmsg(3, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\0\0\0\0\2\0\0\0[\0\0\0\1\1o\0\r\0\0\0/org/a11"..., 112}, {"", 0}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 112
0.000354 poll([{fd=3, events=POLLIN}], 1, 25000) = 0 (Timeout)
25.025550 open("/usr/lib/x86_64-linux-gnu/charset.alias", O_RDONLY) = -1 ENOENT (No such file or directory)
0.000410 write(2, "\n** (eog:2786): WARNING **: Erro"..., 319
** (eog:2786): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
) = 319
0.000660 socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0) = 4
0.000305 connect(4, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, 20) = 0
0.000243 getpeername(4, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, [20]) = 0

[...]

0.000054 poll([{fd=4, events=POLLIN}], 1, 4294967295) = 1 ([{fd=4, revents=POLLIN}])
0.000029 recvfrom(4, "\1\0\213\0\0\0\0\0\240\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096, 0, NULL, NULL) = 32
0.000027 recvfrom(4, 0x1709c34, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
0.000026 recvfrom(4, 0x1709c34, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
0.000027 poll([{fd=4, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=4, revents=POLLOUT}])

(eog:2786): EOG-WARNING **: Couldn't load icon: Icon 'image-loading' not present in theme
) = 16
0.000056 poll([{fd=4, events=POLLIN}], 1, 4294967295) = 1 ([{fd=4, revents=POLLIN}])
0.000029 recvfrom(4, "\1\0\214\0\0\0\0\0\241\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096, 0, NULL, NULL) = 32
0.000028 recvfrom(4, 0x1709c34, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
0.000026 recvfrom(4, 0x1709c34, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
0.000032 poll([{fd=4, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=4, revents=POLLOUT}])

strace -r gnome-terminal

[...]

0.000406 recvmsg(3, 0x7fffb9bbc6e0, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
0.000434 sendmsg(3, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\0\0\0\0\2\0\0\0[\0\0\0\1\1o\0\r\0\0\0/org/a11"..., 112}, {"", 0}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 112
0.000328 poll([{fd=3, events=POLLIN}], 1, 25000) = 0 (Timeout)
25.006307 open("/usr/lib/x86_64-linux-gnu/charset.alias", O_RDONLY) = -1 ENOENT (No such file or directory)
0.000486 write(2, "\n** (gnome-terminal:5885): WARNI"..., 330
** (gnome-terminal:5885): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
) = 330
0.000519 socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0) = 4
0.000118 connect(4, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, 20) = 0
0.000125 getpeername(4, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, [20]) = 0

[...]

1
所有用户还是您自己的用户都会发生这种情况?
Braiam 2014年

@布赖恩是的。我只是用户测试它root通过su -,那么eog
polym

1
也许strace(例如strace -r)或ltrace(例如ltrace -r)可能会有所启发
Cristian Ciupitu 2014年

@CristianCiupitu我已经添加了相关数据。有2个通话大约需要25秒(!)。
polym

1
大!其他GTK + / GNOME程序,例如geditgnome-disks呢?他们的踪迹相似吗?
Cristian Ciupitu 2014年

Answers:


6

不幸的是,这不是解决方案,但是此信息可能会对您有所帮助。

我认为,您的问题是该问题,gnome-terminal并且eog正在尝试连接到D-bus配置错误的at-spi 实例套接字。

D-bus一般如何工作:

启动

在您的机器上(按系统和按用户)运行有2个休闲D-bus实例,一个与可访问性相关的特殊实例- at-spi由开始at-spi-bus-launcher

每个系统实例都由初始化脚本启动,例如在Mint上使用/etc/init/dbus

Xsession启动时,将运行每个用户实例/etc/X11/Xsession.d/75dbus_dbus-launch

at-spi实例似乎由gnome-session启动,它.desktop从系统$xdg目录中读取文件。通过来配置at-spi /etc/xdg/autostart/at-spi-dbus-bus.desktop,它将启动at-spi实例。

功能和配置

D-bus充当gnome应用程序的消息代理。他们可以通过调用dbus-glib绑定的函数(glib是通用的Gnome C库,大多数gnome应用程序使用该库)来相互发送消息。

此外,应用程序可以将消息发送到尚未启动的其他应用程序。在那种情况下,dbus可能首先启动(“激活”)接收者服务,然后向其传递消息(gnome经常滥用此消息来启动新进程)。

在此处输入图片说明

D-bus可以激活哪些服务,取决于文件/usr/share/dbus-1/夹中的配置文件。system-services子文件夹用于每个系统的dbus实例,services-每个用户的一个。

还要注意,这些d-bus实例创建UNIX域套接字并侦听来自应用程序的消息。应用程序在启动时连接到这些套接字,并通过D-bus相互交换数据。套接字可以映射到文件系统(对于D-bus的每个系统实例,套接字都映射到/var/run/dbus/system_bus_socket)。

如何解决您的问题(实际上我不知道)

我猜想您搞砸了at-pci实例的配置:它是由gnome-session(/etc/xdg/autostart/at-spi-dbus-bus.desktop)启动还是其套接字位置。

不幸的是,我对做什么没有更具体的想法。你能提供您pspstree信息,就at-pcignome-terminal

更新资料

我试图找出您的错误消息的来源:

我试过grepping gnome-terminal的源代码。grep -r "spi" gnome-terminal/没有任何结果;grep -r "dbus" gnome-terminal/给出了一些,但它们似乎与正常的dbus有关,与at-pci无关。因此,我相信gnome-terminal不能at-spi2直接访问。

取而代之的是,只有一些gtk小部件在隐式调用gailatkfunctions,而后者又尝试与at-spi子系统交互,但未能这样做,导致您杀死了它:

在此处输入图片说明 在此处输入图片说明

因此,我认为适合您的解决方案是还原at-spi2-core软件包的以下文件(基于dpkg -L at-spi2-core)或仅重新安装整个软件包:

/usr/lib/at-spi2-core/at-spi-bus-launcher
/usr/lib/at-spi2-core/at-spi2-registryd
/usr/share/upstart/xdg/autostart/at-spi-dbus-bus.desktop
/usr/share/upstart/sessions/at-spi2-registryd.conf
/usr/share/doc/at-spi2-core/README
/usr/share/doc/at-spi2-core/copyright
/usr/share/doc/at-spi2-core/NEWS.gz
/usr/share/dbus-1/services/org.a11y.atspi.Registry.service
/usr/share/dbus-1/services/org.a11y.Bus.service
/etc/at-spi2/accessibility.conf
/etc/xdg/autostart/at-spi-dbus-bus.desktop
/etc/X11/Xsession.d/90qt-a11y
/usr/share/doc/at-spi2-core/changelog.Debian.gz

或者,您可以尝试通过反转操作来禁用可访问性,此处将其描述为启用它。(基本上,您必须gconftool-2按照“设置可访问的应用程序开发和测试环境”部分中所述调整一些标志)。

无用但有趣的信息

我在at-spi2-core的源代码中做了更多的挖掘

master / bus / at-spi-bus-launcher.c文件夹中的README 通知at-spi-bus-launcher由dbus的每个会话实例启动。有趣的是,还有一个X窗口根窗口属性AT_SPI_BUS,您可以通过xprop --root命令找到它的值,对我来说,它等于

AT_SPI_BUS(STRING) = "unix:abstract=/tmp/dbus-vGwJEbWTQL,guid=76b894a309e380de6265479c53e8b537"

我不知道这是什么,我希望它是一个套接字位置,但是/tmp对我来说没有这样的文件。:(

更新2

我认为出现问题的确切原因可能是普通的每系统dbus会看到您的/usr/share/dbus-1/services/org.a11y.Bus.service文件,并试图响应gnome-terminal的atk调用来激活该文件(因为您的gconfdconf设置启用了可访问性,并且这告诉gtk小部件进行传递的消息at-spi)。这将失败,因为您已经删除了at-spi-bus-launcher二进制文件。

是什么让我觉得是我自己的经历Caribou Antler。Caribou是随Debian一起安装的糟糕的虚拟键盘。我有一个Debian 7平板电脑,在这里我从Ubuntu仓库安装了另一个虚拟键盘-很棒的OnBoard。关键是两个键盘都可以通过dconf中的同一辅助功能键来打开/关闭。因此,如果该键处于打开状态,则两者都可以通过单击GtkEntry或GtkTextView来激活,这样肮脏的驯鹿就不会让我的OnBoard正常工作。而且,如果我在gconf / dconf中禁用了可访问性,则也会禁用OnBoard。:(

所以我做了一个粗略的修改,只是注释掉了我/usr/share/dbus-1/services/org.gnome.Caribou.Antler.service文件的内容。现在,当dbus尝试激活驯鹿时,它会失败,而OnBoard会被激活。

但是,当我从终端启动某些图形应用程序(例如)时sublime_text,会收到一条错误消息,其格式与您的格式非常相似:

(sublime_text:4797): CARIBOU-CRITICAL **: file caribou-gtk-module.c: line1041: unexpected error: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Caribou.Keyboard was not provided by any .service files (g-dbus-error-quark, 2)

2

这为我解决了

export NO_AT_BRIDGE=1

alias open='xdg-open '

然后触发适当的应用程序以打开任意文件问题(例如):

open some-cool-image.jpg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.