X 应用程序在 stderr 上警告“无法连接到可访问性总线:”

vos*_*sov 36 terminal x11 gtk bugs stderr

似乎终端中的每个应用程序都会发出警告和错误消息,即使它看起来运行良好。

埃马克:

** (emacs:5004): WARNING **: Couldn't connect to accessibility bus:    
Failed to connect to socket /tmp/dbus-xxfluS2Izg: Connection refused
Run Code Online (Sandbox Code Playgroud)

表明:

** (evince:5052): WARNING **: Couldn't connect to accessibility bus:    
Failed to connect to socket /tmp/dbus-xxfluS2Izg: Connection refused

(evince:4985): Gtk-CRITICAL **: gtk_widget_show: assertion 
'GTK_IS_WIDGET (widget)' failed

(evince:4985): Gtk-CRITICAL **: gtk_widget_show: assertion 
'GTK_IS_WIDGET (widget)' failed
Run Code Online (Sandbox Code Playgroud)

火狐:

(process:5059): GLib-CRITICAL **: g_slice_set_config: assertion 
'sys_page_size == 0' failed
Run Code Online (Sandbox Code Playgroud)

名单还在继续。这种行为是常见的还是我的系统有问题?我如何解决这些问题?

Gil*_*il' 62

不幸的是,GTK 库(特别是 GNOME 使用的)往往会发出很多看起来很吓人的消息。有时这些消息表明潜在的错误,有时它们完全是虚假的,如果不深入研究代码,就不可能知道哪个是哪个。作为最终用户,您对此无能为力。您可以将它们报告为错误(即使程序在其他方面表现正确,发出虚假错误消息也是错误),但是当程序基本正常工作时,这些错误被视为非常低的优先级是可以理解的。

如果您不使用任何可访问性功能,可访问性警告是一个已知错误,有一个简单的解决方法:

export NO_AT_BRIDGE=1
Run Code Online (Sandbox Code Playgroud)

根据我的经验,Gtk-CRITICAL错误完全是虚假的。虽然它们确实在某处表明了编程错误,但不应将它们报告给最终用户,而只能报告给编写程序的开发人员(或底层库——通常程序的开发人员无法对此做任何事情,因为它是由程序中使用的库调用的库调用的库中的错误)。