xdg-open 不停地自我分叉,占用大量 CPU

xdg-open 不停地自我分叉,占用大量 CPU

每当 xdg-open 遇到没有与之关联的默认应用程序的文件时,它都会自行分叉。此过程会递归重复,直到被终止。在执行此操作时,它当然会占用我所有的 CPU 和内存。这似乎是一个罕见的问题,因为 Google 对此了解不多。可能需要注意的是,这种情况发生在多种文件类型上。

我正在运行 Manjaro Linux,使用 Awesome WM 和 fish 作为我的 shell,如果这有什么不同的话。

答案1

检查 BROWSER 环境变量的值。在大多数 shell 中,这是通过 完成的echo $BROWSER。如果设置为/usr/bin/xdg-open,则问题就出在这里。

当 xdg-open 尝试打开网址时,它不会使用 xdg-mime 的默认设置,而是使用 BROWSER 变量中的命令。由于该命令是 xdg-open 本身,因此它会无限分叉。

清空此变量可解决问题。对于 bash,它可能/usr/bin/xdg-open在 中设置为~/.bashrc,使用类似 的行BROWSER=/usr/bin/xdg-open。删除该行,问题就解决了。

我认为 xdg-open 也使用浏览器作为默认的打开应用程序,导致每次处理未知文件时都会出现相同的 CPU 消耗过程。

此外,安装perl-file-mimeinfo并重新启动可能会有帮助。

感谢 MariusMatutiae 提供的链接帮助我回答了我自己的问题。

答案2

xdg-mime这是由(软件包的一部分)中的以下错误引起的xdg-utils

https://gitlab.freedesktop.org/xdg/xdg-utils/issues/131

如果您有任何包含空格的 *.desktop 文件,则可能会导致 xdg-mime 在您的整个主目录或文件系统上进行递归,从而导致其消耗大量 CPU 并挂起。修复已提交给 xdg-utils,维护人员应将其打包。

在等待时,您可以通过编辑 xdg-mime 脚本简单地添加缺失的一对引号就像在拉取请求中一样

这发生在函数中search_desktop_file(),在 1.1.3 中的第 930 行添加这些引号,在以下块中xdg-utils添加引号:$dir

    for f in "$dir"/*/; do 
      [ -d "$f" ] && search_desktop_file "$MIME" "$f" 
    done

这是导致其他应用程序(例如 Discord)多年来出现许多错误的原因,它以黑屏启动并产生一个消耗大量 CPU 的进程,而 Discord 则等待它退出:

xdg-mime query default x-scheme-handler/spotify

维护人员,请更新 xdg-utils!

相关内容