web-dev-qa-db-ja.com

xdg-無限にフォークしてCPUをホグする

Xdg-openがファイルを検出するたびに、それに関連付けられたデフォルトのアプリケーションがありません。このプロセスは、強制終了されるまで再帰的に繰り返されます。これをしている間、それはもちろん私のCPUとメモリのすべてを消費します。グーグルはそれについてあまり知らないので、それはまれな問題のようです。これは複数のファイルタイプで発生することに注意することが重要な場合があります。

私はAwesomeWMとfishをシェルとして使用してManjaroLinuxを実行していますが、それが違いを生む場合は。

7
user2244484

BROWSER環境変数の値を確認してください。ほとんどのシェルでは、これはecho $BROWSERによって行われます。 /usr/bin/xdg-openに設定されている場合、そこに問題があります。

Xdg-openがWebアドレスを開こうとすると、xdg-mimeで設定されたデフォルトではなく、BROWSER変数のコマンドで開こうとします。そして、そのコマンドはxdg-open自体であるため、無限に分岐します。

この変数を空にすると、問題が解決します。 bashの場合、おそらく/usr/bin/xdg-open~/.bashrcBROWSER=/usr/bin/xdg-openのような行で設定されます。その行を削除すると、問題が修正されます。

Xdg-openもデフォルトのオープニングアプリケーションとしてブラウザを使用しているため、不明なファイルが処理されるたびに同じCPU消費プロセスが発生すると思います。

また、Perl-file-mimeinfoをインストールして再起動すると役立つ場合があります。

私自身の質問に答えるのに役立つリンクを提供してくれたMariusMatutiaeに感謝します。

4
user2244484

これは、_xdg-mime_(_xdg-utils_パッケージの一部)の次のバグが原因で発生します。

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

スペースを含む* .desktopファイルがある場合、xdg-mimeがホームディレクトリまたはファイルシステム全体で再帰し、CPUを大量に消費してハングする可能性があります。修正はxdg-utilsにコミットされており、メンテナはそれをパッケージ化する必要があります。

待っている間に、xdg-mimeスクリプトを編集することで、欠落している引用符のペアを追加することができます プルリクエストのように

これは関数search_desktop_file()で発生し、_xdg-utils_ 1.1.3の930行目に引用符を追加し、次のブロックの_$dir_の前後に引用符を追加します。

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

これは、Discordなどの他のアプリで何年にもわたって多くのバグの原因です。Discordは黒い画面で始まり、Discordが終了するのを待つ間に大量のCPUを消費するプロセスを生成します。

_xdg-mime query default x-scheme-handler/spotify
_

メンテナ、xdg-utilsを更新してください!

0
Bob McElrath