![appmenu-gtk 无法连接到 D-Bus 的可能原因有哪些?](https://linux22.com/image/1012093/appmenu-gtk%20%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E5%88%B0%20D-Bus%20%E7%9A%84%E5%8F%AF%E8%83%BD%E5%8E%9F%E5%9B%A0%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%9F.png)
警告是
** (/usr/lib/firefox/firefox:1671): 警告 **: 22:14:54.614: 无法连接到 dbus:无法连接:权限被拒绝
我尝试使用 strace,但找不到任何相关的文件错误。我猜可能是 AppArmor。有什么关于如何找到原因的建议吗?
我开始搜索是因为无论可视铃声设置是否设置为( 通过更改 KDE 设置可以解决这个问题。gsettings set org.gnome.desktop.wm.preferences visual-bell false
),当页面上搜索没有返回任何结果时,Firefox 都会将整个窗口闪烁成相反的颜色,这很烦人。
- 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
方法。
因此,我得出的结论是
- 这不是 Firefox 错误,但可能是误报
- 事实上,这只是一个警告,考虑到您仍然可以使用 Firefox,因此这个问题并不重要。
此外,/usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libappmenu-gtk-module.so
它是一个共享对象,供多个应用程序使用,并非 Firefox 所特有。删除它可能会隐藏警告,但这可能不是最好的主意,因为这是一个共享对象,其他应用程序可能依赖它才能正常工作。
由于在初始协商方法后出现警告,您仍然可以向 Firefox 开发人员提交带有此答案链接的错误报告,而 Firefox 可能在发出警告之前会先尝试其他方法,但我不会指望这对开发人员来说是高优先级问题,并且很可能会留下 WONTFIX 状态。