web-dev-qa-db-ja.com

フリーズ時にPlasma / KDEの自動再起動を有効にするにはどうすればよいですか?

OpenSuse を数年間使用しました。このディストリビューションで私が最も気に入った点の1つは、Plasma/KDEの問題の処理方法でした。パネルが一時的に消え、Plasmaデスクトップがクラッシュして再起動したことを通知するメッセージボックスが開くことがあります。また、必要に応じて、デバッグデータを開発チームに送信することを提案しています。

ここ数ヶ月、私はFedoraベースのディストリビューションに切り替えました( Qubes OS 、Fedora 20に基づく)。次の理由により、このディストリビューションはデフォルトでこの動作を提供していないようです。

  • 私はもうこのメッセージボックスを見たことがありません、
  • しかし、デスクトップが数回完全にフリーズし(画面とキーボードがフリーズし、サウンドとマウスポインターがOK)、コンピューターを残酷にシャットダウンする必要があり、進行中のすべての作業を失うことがそのような残忍な唯一の副作用になると指を交差させましたシャットダウン。

十数年前、私が学生だったとき、私の大学も実践的な演習にFedoraを使用していました。そのとき、同様のフリーズに直面して、SSH経由でリモート接続し、デスクトップマネージャーを強制終了して自動的に再起動し、グラフィカル環境のロックを解除するソリューションを見つけました。

残念ながら、QubesOS¹の特定の設計により、この手っ取り早いSSHソリューションはここでは機能しません。ただし、OpenSuseのメッセージボックスツールは、適切な方法で同様のことを行う可能性があると思います。Plasma/ KDEが応答しないことを検出するある種のウォッチドッグを実装し、それを強制終了して再起動します。

だから私が疑問に思っているのは:このツールはOpenSUSE²の特定の機能ですか、それとも現在のインストールでこの動作を有効にするためにインストールする必要があるパッケージまたは変更する必要がある構成がありますか?

デスクトップのフリーズは特に苛立たしいものです。アプリケーション自体がまだ正常に動作している可能性が高く、Plasmaプロセスを再起動するだけですべてが正常に戻ることがわかっている場合はさらに...


¹:Qubes OSでは、ネットワーク接続はXenドメインで分離され、KDEはネットワークレスDom0にあります。セキュリティ上の理由から、Qubes OSは、ネットワークからユーザーインターフェイスに到達しないように正確に設計されています...

²:以前は(まだそうではない場合)、OpenSUSEは内部的に大幅に変更されたKDEを持っていたため、安定したKDE4を提案する最初のディストリビューションになることができました。 ..

3
WhiteWinterWolf

TL; DR:ここで、問題は明らかにOpenGLとKWinの間の問題(おそらくいくつかのあいまいな競合状態)によって引き起こされました。

これを回避するには、OpenGLを無効にして、代わりにXRenderを使用する必要があります([システム構成]> [デスクトップ効果]> [詳細設定]> [合成タイプ]で、デフォルトのOpenGLの代わりに[XRender]を選択します)。

いくつかのデスクトップエフェクトは使用できなくなりますが、少なくともシステムは安定し、フリーズしなくなります。


長い話:

この問題は数週間ごとにランダムに発生し、1日に数回、2、3週間で問題なく発生したため、分析が非常に困難でした(BTWのある時点で、別のビデオカードに切り替え、radeonからInteli915に切り替えました問題に影響を与えることなく、したがって、グラフィックカードにもそのドライバにも関連していません)。

スクリプトをバックグラウンドで実行し、3分ごとに無限ループで自動チェックを実行して、デスクトップがフリーズしたときに何かをキャッチできるようにしました。

実際、フリーズはqdbusを介してプログラムで検出できます。特に、デスクトップがフリーズした場合にのみ、この呼び出しは失敗します。

qdbus org.kde.Kwin /App org.freedesktop.DBus.Peer.Ping

通常、出力はなく、リターンコードは0ですが、デスクトップがフリーズすると、このコマンドは失敗し、リターンコード2と「NoReply」エラーメッセージが表示されます。

参考までに、org.kde.plasma-desktop、org.kde.kuiserver、org.kde.kdedのステータスも確認しました。これらはすべて、フリーズが発生すると正常に見えるため、KWinが本当の原因のようです。

運が悪かったので、デスクトップ環境の整合性を復元するいくつかの方法を試しました。 kquitapp kwinまたはkwin --replaceを使用してKWinを正常に再起動しようとしても、目立った効果は見られませんでした。次のように、完全なデスクトップ環境を強制終了して再構築しようとしました。

kbuildsycoca4
kquitapp plasma-desktop
kquitapp kwin
kquitapp kuiserver
sleep 2
killall plasma-desktop kwin kuiserver; sleep 2
killall -9 plasma-desktop kwin kuiserver; sleep 2
kstart kuiserver
kstart kwin
kstart plasma-desktop

デスクトップ自体がフリーズしていません! ...ただし、1フレームのみ:画面(タスクバーの時計を見るとわかるように)が更新され、すぐに再びフリーズします。

それにもかかわらず、犯人を見つけたので、私は 古い「高く、重大ですが、ここではあまりにも曖昧なので修正されません」の問題 を見つけました。同じ症状、同じ診断手順、そして最後にこの推奨される回避策:OpenGLの代わりにXRenderを使用してください。

この変更を適用してから数か月が経ちましたが、その後フリーズは発生しなかったため、この回避策はこの問題に対して正しいと思います。

4
WhiteWinterWolf

インストールしてみます Qubes R3.1 。 KDEメッセージ通知は、有用な情報とともにポップアップ表示されます。 USBが検出され、ネットワークに接続されているなど。特に最新のカーネル(4.1.13-7)を使用すると、R3.1はクリーンアップされたように見え、以前のリリースと比較して非常にうまく機能します。デスクトップは 実験的更新 を使用した後に一度だけクラッシュしましたが、報告するオプションのある通知ボックスがポップアップしました。

代わりに、VMをバックアップし、R3.1を新たにインストールするようにアドバイスを受けました。より快適でクラッシュのないエクスペリエンスであると報告できてうれしいです(通知ポップアップが改善されました)。

1
rustynuts

Sudo qubes-dom0-update --releasever=3.2ここに記載されている を使用してQubes 3.2にアップグレードすると、問題が解決します。

その後、QubesリポジトリからKDEをインストールできます。

0
Tomáš Pánik