Os programas Gnome (eog / gnome-terminal) têm um início lento e produzem um DBus.Error.NoReply

10

Por algum tempo, eoge gnome-terminalestou começando muito lentamente no meu (X) Ubuntu 13.10. Acho que outras ferramentas do Gnome também são afetadas, mas não uso outras.

Agora, recebo um org.freedesktop.DBus.Error.NoReplyerro sempre que gnome-terminalinicia:

** (gnome-terminal: 5516): AVISO **: Erro ao recuperar o endereço do barramento de acessibilidade: org.freedesktop.DBus.Error.NoReply: Não recebeu uma resposta. As possíveis causas incluem: o aplicativo remoto não enviou uma resposta, a política de segurança do barramento de mensagens bloqueou a resposta, o tempo limite da resposta expirou ou a conexão de rede foi interrompida.

e toda vez que eogcomeça:

** (eog: 4996): AVISO **: Erro ao recuperar o endereço do barramento de acessibilidade: org.freedesktop.DBus.Error.NoReply: Não recebeu uma resposta. As possíveis causas incluem: o aplicativo remoto não enviou uma resposta, a política de segurança do barramento de mensagens bloqueou a resposta, o tempo limite da resposta expirou ou a conexão de rede foi interrompida.

(eog: 4996): EOG-WARNING **: Não foi possível carregar o ícone: Ícone 'image-loading' não está presente no tema

Eu acho que tem algo a ver comigo removendo alguns programas que estavam iniciando por padrão, inclusive at-spi2-registryd, os quais acho que pertencem ao Projeto de Acessibilidade do Gnome .

Segundo dpkg --getselections | grep spi, at-spi2-coreainda está instalado no meu sistema.

Lembro-me de fazer algo muito hacky / estúpido, como trocar alguns arquivos de configuração ou binários com programas de eco vazios para impedir que o daemon seja iniciado.

  • Como posso corrigir este erro?
  • O que causa esse erro?

O Google produz alguns at-spi...links relacionados:

Isso pode ter a ver com um freedesktopproblema relacionado que eu tenho nmcli, portanto, dê uma olhada: avisos e erros do 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

[...]
polym
fonte
1
Isso acontece com todos os usuários ou apenas com os seus?
Braiam 17/07/2014
@Braiam Yes. Eu apenas testei com o usuário rootusando su -, então eog.
Polym
1
Talvez strace (por exemplo strace -r) ou ltrace (por exemplo ltrace -r) possam lançar alguma luz.
Cristian Ciupitu
@CristianCiupitu Adicionei os dados relevantes. Há duas chamadas que levam cerca de 25 segundos (!).
polímer
1
Ótimo! E quanto a outros programas GTK + / GNOME, por exemplo, geditou gnome-disks? Os traços deles são semelhantes?
Cristian Ciupitu

Respostas:

6

Infelizmente, essa não é uma solução, mas essas informações podem ser úteis para você.

Acho que o seu problema é esse gnome-terminale eogestá tentando se conectar a um D-bussoquete de instância at-spi , que está configurado incorretamente.

Como o D-bus funciona em geral:

Comece

Existem 2 instâncias de barramento D casual, em execução na sua máquina, por sistema e por usuário, e uma relacionada especial à acessibilidade - at-spiiniciada por at-spi-bus-launcher.

A instância por sistema é iniciada por scripts init, por exemplo, no Mint with /etc/init/dbus.

A instância por usuário é executada quando o Xsession é iniciado /etc/X11/Xsession.d/75dbus_dbus-launch.

at-spiA instância parece ter sido iniciada pelo gnome-session, que lê .desktoparquivos do $xdgdiretório do sistema . O at-spi é configurado por /etc/xdg/autostart/at-spi-dbus-bus.desktop, que inicia a at-spiinstância.

Funcionamento e configuração

O D-bus funciona como um intermediário de mensagens para aplicativos gnome. Eles podem enviar mensagens entre si chamando funções de ligação dbus-glib (glib é a biblioteca geral do Gnome C, que é usada pela maioria dos aplicativos gnome).

Além disso, os aplicativos podem enviar mensagens para outros aplicativos que ainda não foram iniciados. Nesse caso, o dbus pode primeiro iniciar ("ativar") o serviço do destinatário e depois entregar a mensagem (que é frequentemente abusada pelos caras do gnome para iniciar novos processos ).

insira a descrição da imagem aqui

Quais serviços o barramento D pode ativar é determinado pelos arquivos de configuração na /usr/share/dbus-1/pasta. system-servicessubpasta é para instância de dbus por sistema, services- para uma por usuário.

Observe também que essas instâncias do barramento d criam um soquete de domínio UNIX e ouvem as mensagens dos aplicativos. Os aplicativos se conectam a esses soquetes na inicialização e trocam dados entre si via D-bus. Os soquetes podem ser mapeados para o sistema de arquivos (como para a instância por sistema do barramento D, cujo soquete é mapeado /var/run/dbus/system_bus_socket) ou não.

Como resolver o seu problema (na verdade não sei)

Eu acho que você estragou a configuração da at-pciinstância: a inicialização pelo gnome-session ( /etc/xdg/autostart/at-spi-dbus-bus.desktop) ou o local do soquete.

Infelizmente, não tenho mais ideias concretas sobre o que fazer. Você poderia fornecer seu psou pstreeinformações, a respeito at-pcie gnome-terminal?

Atualizar

Tentei descobrir a fonte da sua mensagem de erro:

Eu tentei grepping o código fonte do gnome-terminal . grep -r "spi" gnome-terminal/não dá nenhum resultado; grep -r "dbus" gnome-terminal/dá alguns, mas eles parecem estar relacionados ao dbus normal, não ao pci. Então, acredito, o gnome-terminal não acessa at-spi2diretamente.

Em vez disso, apenas alguns widgets gtk estão implicitamente chamando gailou atkfunções , que por sua vez tentam interagir com o at-spisubsistema e falham em fazê-lo, porque você o matou:

insira a descrição da imagem aqui insira a descrição da imagem aqui

Então, acho que a solução para você é restaurar os seguintes arquivos do at-spi2-corepacote (com base em dpkg -L at-spi2-core) ou apenas reinstalar o pacote inteiro:

/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

ALTERNATIVAMENTE, você pode tentar desativar a acessibilidade invertendo as ações descritas aqui para ativá-la. (Basicamente, você precisará ajustar alguns sinalizadores gconftool-2conforme descrito na seção "Configurando o Desenvolvimento de Aplicativos Acessíveis e o Ambiente de Teste").

Informação inútil, mas interessante

Eu fiz mais algumas pesquisas no código fonte do at-spi2-core

O arquivo README na pasta master / bus / at-spi-bus-launcher.c informa que o at-spi-bus-launcher é iniciado pela instância por sessão do dbus conforme o esperado. Curiosamente, há também uma propriedade da janela raiz do Windows X AT_SPI_BUS, você pode encontrar seu valor via xprop --rootcomando e, para mim, é igual a

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

Não sei o que é, esperava que fosse um local de soquete, mas não existe esse arquivo /tmppara mim. :(

Atualização 2

Eu acho que a razão exata do seu problema pode ser que o dbus comum por sistema vê seu /usr/share/dbus-1/services/org.a11y.Bus.servicearquivo e está tentando ativá-lo em resposta a chamadas atk do gnome-terminal (porque suas configurações gconfou dconftêm acessibilidade ativada e isso diz aos widgets gtk para fornecer mensagens para at-spi). Isso falha, porque você removeu o at-spi-bus-launcherbinário.

O que me faz pensar assim é a minha própria experiência Caribou Antler. Caribou é um teclado virtual de merda, instalado com o Debian. Eu tenho um tablet Debian 7, onde instalei outro teclado virtual do repositório Ubuntu - o incrível OnBoard. O fato é que ambos os teclados são ativados / desativados pela mesma tecla de acessibilidade no dconf. Portanto, se a tecla estiver ativada, ambas serão ativadas com um clique no GtkEntry ou no GtkTextView, para que o Caribou de merda não deixe o meu OnBoard funcionar corretamente. E se eu desativar a acessibilidade no gconf / dconf, o OnBoard também será desativado. :(

Então, eu fiz um hack bruto e apenas comentei o conteúdo do meu /usr/share/dbus-1/services/org.gnome.Caribou.Antler.servicearquivo. Agora, quando o dbus está tentando ativar o Caribou, ele falha, enquanto o OnBoard está ativado.

Mas quando inicio algum aplicativo gráfico no terminal, como sublime_text, recebo uma mensagem de erro, formatada de maneira muito semelhante à sua:

(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)
Boris Burkov
fonte
2

Isso resolve para mim

export NO_AT_BRIDGE=1

alias open='xdg-open '

para acionar o aplicativo apropriado para abrir um problema arbitrário de arquivo (por exemplo):

open some-cool-image.jpg
Scott Stensland
fonte