appmenu-gtk 无法连接到 D-Bus 的可能原因有哪些?

appmenu-gtk 无法连接到 D-Bus 的可能原因有哪些?

警告是

** (/usr/lib/firefox/firefox:1671): 警告 **: 22:14:54.614: 无法连接到 dbus:无法连接:权限被拒绝

我尝试使用 strace,但找不到任何相关的文件错误。我猜可能是 AppArmor。有什么关于如何找到原因的建议吗?

我开始搜索是因为无论可视铃声设置是否设置为(gsettings set org.gnome.desktop.wm.preferences visual-bell false),当页面上搜索没有返回任何结果时,Firefox 都会将整个窗口闪烁成相反的颜色,这很烦人。 通过更改 KDE 设置可以解决这个问题。

  • libappmenu-gtk*-parser0 0.7.1-1
  • Firefox 65.0(通过 apt 安装和下载)
  • D-Bus 1.12.12-1ubuntu1
  • Ubuntu 19.04

我不知怎么地让 root 拥有 ~/.dbus/ 的所有权,但我尝试递归地将所有者更改为我的用户并删除该文件夹。两次都没有任何变化,即使在完全重启后也是如此。

我本来想将其报告为错误,但想确保它确实是一个错误。

更新

这不是 Firefox,而是appmenu-gtk*

$ grep "Unable to connect to dbus" -rF /usr
Binary file /usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libappmenu-gtk-module.so matches
Binary file /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libappmenu-gtk-module.so matches

删除警告后变为

Gtk-Message:16:30:03.964:无法加载模块“appmenu-gtk-module”。

答案1

通过阅读输出strace 链接在评论中,以下是我发现的内容:

[pid  4245] sendto(35, "AUTH\r\n", 6, MSG_NOSIGNAL, NULL, 0) = 6
[pid  4245] recvfrom(35, "REJECTED EXTERNAL\r\n", 4096, 0, NULL, NULL) = 19
[pid  4245] sendto(35, "AUTH EXTERNAL 31303031\r\n", 24, MSG_NOSIGNAL, NULL, 0) = 24
[pid  4245] recvfrom(35, "OK f9c00ca7570590f878c4db8c5c686"..., 4096, 0, NULL, NULL) = 37

这意味着 Firefox(客户端)已连接到 D-Bus(服务器)套接字,该套接字由文件描述符编号 35 引用,您可以在之前的输出中看到strace

[pid  4245] connect(35, {sa_family=AF_UNIX, sun_path="/run/user/1001/bus"}, 110) = 0

并通过中描述的标准命令启动谈判D-Bus 文档.根据文档:

如果 AUTH 命令没有参数,则表示请求列出可用的机制。服务器必须使用 REJECTED 命令(列出其理解的机制)或错误进行响应。

REJECTED EXTERNAL响应表示总线接受外部身份验证方法。因此警告消息可能来自初始交换。但是,它后来成功使用了该AUTH EXTERNAL方法。

因此,我得出的结论是

  1. 这不是 Firefox 错误,但可能是误报
  2. 事实上,这只是一个警告,考虑到您仍然可以使用 Firefox,因此这个问题并不重要。

此外,/usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libappmenu-gtk-module.so它是一个共享对象,供多个应用程序使用,并非 Firefox 所特有。删除它可能会隐藏警告,但这可能不是最好的主意,因为这是一个共享对象,其他应用程序可能依赖它才能正常工作。

由于在初始协商方法后出现警告,您仍然可以向 Firefox 开发人员提交带有此答案链接的错误报告,而 Firefox 可能在发出警告之前会先尝试其他方法,但我不会指望这对开发人员来说是高优先级问题,并且很可能会留下 WONTFIX 状态。

相关内容