Program Gnome (eog / gnome-terminal) memiliki awal yang lambat dan menghasilkan DBus.Error.NoReply Warning

10

Untuk beberapa waktu, eogdan gnome-terminalmulai sangat lambat di (X) Ubuntu 13.10 saya. Saya pikir alat Gnome lain juga terpengaruh, tetapi saya tidak menggunakan yang lain.

Sekarang saya mendapatkan org.freedesktop.DBus.Error.NoReplykesalahan setiap kali gnome-terminaldimulai:

** (gnome-terminal: 5516): PERINGATAN **: Kesalahan saat mengambil alamat bus aksesibilitas: org.freedesktop.DBus.Error.NoReply: Tidak menerima balasan. Kemungkinan penyebabnya meliputi: aplikasi jarak jauh tidak mengirim balasan, kebijakan keamanan bus pesan memblokir balasan, batas waktu balasan kedaluwarsa, atau koneksi jaringan terputus.

dan setiap kali eogdimulai:

** (eog: 4996): PERINGATAN **: Kesalahan saat mengambil alamat bus aksesibilitas: org.freedesktop.DBus.Error.NoReply: Tidak menerima balasan. Kemungkinan penyebabnya meliputi: aplikasi jarak jauh tidak mengirim balasan, kebijakan keamanan bus pesan memblokir balasan, batas waktu balasan kedaluwarsa, atau koneksi jaringan terputus.

(eog: 4996): PERINGATAN EOG **: Tidak dapat memuat ikon: Ikon 'pemuatan gambar' tidak ada dalam tema

Saya pikir itu ada hubungannya dengan saya menghapus beberapa program yang dimulai secara default, termasuk at-spi2-registryd, yang saya pikir milik Proyek Aksesibilitas Gnome .

Menurutnya dpkg --getselections | grep spi, at-spi2-coremasih terpasang di sistem saya.

Saya ingat melakukan sesuatu yang sangat gila / bodoh seperti bertukar beberapa file konfigurasi atau binari dengan program gema kosong untuk menghentikan daemon agar tidak dimulai.

  • Bagaimana saya bisa memperbaiki kesalahan ini?
  • Apa yang menyebabkan kesalahan ini?

Google menghasilkan beberapa at-spi...tautan terkait:

Ini mungkin ada hubungannya dengan freedesktopmasalah terkait yang saya miliki nmcli, jadi silakan lihat: nmcli freedesktop peringatan dan kesalahan 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
sumber
1
Apakah ini terjadi dengan semua pengguna atau hanya milik Anda?
Braiam
@Braiam Ya. Saya hanya mengujinya dengan pengguna rootdengan menggunakan su -, kemudian eog.
polym
1
Mungkin strace (eg strace -r) atau ltrace (eg ltrace -r) dapat memberikan sedikit cahaya
Cristian Ciupitu
@CristianCiupitu Saya telah menambahkan data yang relevan. Ada 2 panggilan yang membutuhkan waktu sekitar 25 detik (!).
polym
1
Bagus! Bagaimana dengan program GTK + / GNOME lainnya, misalnya geditatau gnome-disks? Apakah jejak mereka serupa?
Cristian Ciupitu

Jawaban:

6

Sayangnya, ini bukan solusi, tetapi informasi ini mungkin bisa membantu Anda.

Saya pikir, masalah Anda adalah itu gnome-terminaldan eogsedang mencoba untuk terhubung ke D-bussoket instance at-spi , yang salah dikonfigurasi.

Bagaimana D-bus bekerja secara umum:

Memulai

Ada 2 contoh kasual D-bus, berjalan di mesin Anda, per-sistem dan per-pengguna, dan yang terkait aksesibilitas khusus - at-spi, dimulai oleh at-spi-bus-launcher.

Contoh per-sistem dimulai oleh skrip init, misalnya pada Mint with /etc/init/dbus.

Contoh per pengguna dijalankan, ketika Xsession dimulai /etc/X11/Xsession.d/75dbus_dbus-launch.

at-spiinstance tampaknya dimulai oleh gnome-session, yang membaca .desktopfile dari $xdgdirektori sistem . At-spi dikonfigurasi oleh /etc/xdg/autostart/at-spi-dbus-bus.desktop, yang memulai at-spiinstance.

Berfungsi dan konfigurasi

D-bus berfungsi sebagai perantara pesan untuk aplikasi gnome. Mereka dapat mengirim pesan satu sama lain dengan memanggil fungsi pengikatan dbus-glib (glib adalah pustaka Gnome C umum, yang digunakan oleh sebagian besar aplikasi gnome).

Selain itu, aplikasi dapat mengirim pesan ke aplikasi lain, yang belum dimulai. Dalam hal itu, dbus dapat memulai ("mengaktifkan") layanan penerima dan kemudian mengirimkan pesan kepadanya (yang sering disalahgunakan oleh gnome guys untuk memulai proses baru ).

masukkan deskripsi gambar di sini

Layanan apa yang D-bus dapat aktifkan ditentukan oleh file konfigurasi dalam /usr/share/dbus-1/folder. system-servicessubfolder untuk instance per-sistem dbus,services - untuk satu per-pengguna.

Perhatikan juga, bahwa instance d-bus membuat soket domain-UNIX dan mendengarkan pesan dari aplikasi. Aplikasi terhubung ke soket tersebut saat start-up dan bertukar data satu sama lain melalui D-bus. Soket dapat dipetakan ke sistem file (seperti untuk instance per-sistem D-bus, yang soketnya dipetakan ke /var/run/dbus/system_bus_socket) atau tidak.

Bagaimana mengatasi masalah Anda (sebenarnya saya tidak tahu)

Saya kira Anda mengacaukan konfigurasi at-pciinstance: baik itu start-up oleh gnome-session (/etc/xdg/autostart/at-spi-dbus-bus.desktop ) atau lokasi soketnya.

Sayangnya, saya tidak punya ide yang lebih konkret tentang apa yang harus dilakukan. Bisakah Anda memberikan psatau pstreeinformasi Anda, mengenai at-pcidangnome-terminal ?

Memperbarui

Saya mencoba mencari tahu sumber pesan kesalahan Anda:

Saya sudah mencoba grepping kode sumber dari terminal gnome . grep -r "spi" gnome-terminal/tidak memberikan hasil apa pun; grep -r "dbus" gnome-terminal/memberi beberapa, tetapi mereka tampaknya terkait dengan dbus normal, bukan at-pci. Jadi, saya percaya, terminal gnome tidak dapat mengakses at-spi2secara langsung.

Sebaliknya, hanya beberapa widget gtk yang secara implisit memanggil gailatau atkfungsi , yang pada gilirannya mencoba berinteraksi dengan at-spisubsistem dan gagal melakukannya, karena Anda telah membunuhnya:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Jadi, saya pikir solusinya untuk Anda adalah mengembalikan file-file at-spi2-corepaket berikut (berdasarkan dpkg -L at-spi2-core) atau hanya menginstal ulang seluruh paket:

/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

ALTERNATIF, Anda dapat mencoba menonaktifkan aksesibilitas dengan membalik tindakan, yang dijelaskan di sini untuk mengaktifkannya. (Pada dasarnya, Anda harus mengubah beberapa flag gconftool-2seperti yang dijelaskan di bagian "Menyiapkan pengembangan aplikasi dan lingkungan pengujian yang dapat diakses").

Tidak berguna, tetapi info menarik

Saya telah melakukan lebih banyak penggalian dalam kode sumber at-spi2-core

README di folder master / bus / at-spi-bus-launcher.c mengatakan bahwa at-spi-bus-launcher dimulai dengan instance per-sesi dbus seperti yang diharapkan. Menariknya, ada juga properti windows root X windows AT_SPI_BUS, Anda dapat menemukan nilainya melalui xprop --rootperintah dan bagi saya itu sama dengan

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

Saya tidak tahu, apa itu, saya mengharapkannya menjadi lokasi soket, tetapi tidak ada file seperti itu /tmpuntuk saya. :(

Perbarui 2

Saya pikir alasan pasti masalah Anda mungkin karena dbus per-sistem biasa melihat /usr/share/dbus-1/services/org.a11y.Bus.servicefile Anda dan sedang mencoba untuk mengaktifkannya sebagai respons terhadap panggilan atk dari gnome-terminal (karena pengaturan Anda gconfatau dconfaksesibilitas telah diaktifkan dan ini memberitahu widget gtk untuk mengirim pesan ke at-spi). Ini gagal, karena Anda telah menghapus at-spi-bus-launcherbiner.

Yang membuat saya berpikir demikian adalah pengalaman saya sendiri Caribou Antler. Caribou adalah keyboard virtual yang menyebalkan, diinstal dengan Debian. Saya punya tablet Debian 7, tempat saya menginstal keyboard virtual lain dari repositori Ubuntu - OnBoard yang luar biasa. Masalahnya adalah kedua keyboard dihidupkan / dimatikan oleh tombol aksesibilitas yang sama di dconf. Jadi, jika kunci aktif, keduanya diaktifkan dengan mengklik GtkEntry atau GtkTextView sehingga Caribou yang menyebalkan tidak membiarkan OnBoard saya berfungsi dengan baik. Dan jika saya menonaktifkan aksesibilitas di gconf / dconf, OnBoard juga dinonaktifkan. :(

Jadi saya melakukan peretasan kasar dan hanya berkomentar isi /usr/share/dbus-1/services/org.gnome.Caribou.Antler.servicefile saya . Sekarang ketika dbus mencoba mengaktifkan Caribou, gagal, sementara OnBoard diaktifkan ok.

Tetapi ketika saya memulai beberapa aplikasi grafis dari terminal, seperti sublime_text, saya menerima pesan kesalahan, yang diformat dengan cara yang sangat mirip dengan Anda:

(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
sumber
2

Ini menyelesaikannya untukku

export NO_AT_BRIDGE=1

alias open='xdg-open '

kemudian memicu aplikasi yang sesuai untuk membuka masalah file sewenang-wenang (misalnya):

open some-cool-image.jpg
Scott Stensland
sumber