接続トラブルシューティング · Clash 技術ブログ

Clash Verge Rev Linux版で大規模サブスクリプションに切り替えると固まる場合の対処

Ubuntu GNOME でノードやプロキシグループの多いサブスクリプションへ切り替えた直後にデスクトップが重くなる場合は、AppIndicator と GJS のログを確認し、トレイのプロキシグループ表示を無効にします。復旧、検証、元に戻す手順も説明します。

  • Clash Verge Rev
  • Linux
  • GNOME
  • AppIndicator
  • 大規模サブスクリプション
目次

GNOME のトレイメニューが固まる問題かを確認する

この記事で扱うのは、Linux デスクトップでノードやプロキシグループの多いサブスクリプションへ切り替えた直後に動作が重くなり、同時にログが GNOME Shell、Ubuntu AppIndicators、dbusMenu.js、または GJS のガベージコレクションを示す場合だけです。Clash Verge Rev のウィンドウだけが遅い、ノードがタイムアウトする、Web ページを開けないといった症状は別の問題です。

Clash Verge Rev issue #7779 で報告された環境は Ubuntu 22.04.5、GNOME 42.9、X11 で、347ノード、14プロキシグループ、最大グループ349ノードのサブスクリプションです。通常規模のサブスクリプションでは正常ですが、大規模なものへ切り替えると約一秒後に大量のエラーが発生し、デスクトップ全体が固まり始めます。

報告者は、トレイに生成される巨大なプロキシグループのサブメニューが原因と推定し、同じシステムとサブスクリプションで A/B テストを行っています。トレイでのプロキシグループ表示を無効にすると再現しませんでした。Issue は現在も Open であり、この説明は再現可能な調査の手掛かりですが、メンテナーが一般的な根本原因として確認したものではありません。

まず症状別に切り分ける

症状考えられる原因次の手順
大規模サブスクリプションへの切り替え後、トップバー、ウィンドウ切り替え、デスクトップ全体が重くなるGNOME Shell または AppIndicator メニューの負荷セッションとシステムログを確認する
Clash Verge Rev のウィンドウだけが固まるアプリの UI または WebViewこの記事の結論をそのまま当てはめない
デスクトップは正常だが、Web ページやノードがタイムアウトするノード、DNS、ルール、または TUNConnections の記録から調べる
サブスクリプションを切り替えていなくても周期的に固まるほかの拡張機能、GPU、またはデスクトップ環境の問題クライアントを終了した状態と比較する

まずデスクトップを復旧し、巨大なメニューを再度開かない

デスクトップがまだ応答する場合は、トレイアイコンをクリックしたり Profile を何度も切り替えたりしないでください。編集中のファイルを保存し、Clash Verge Rev のメインウィンドウからシステムプロキシと TUN を無効にして、クライアントを通常の手順で終了します。システムの直接接続が使えることを確認してから、デスクトップセッションまたはシステムを再起動してください。

GNOME Shell がほぼ応答しなくても Ctrl+Alt+F3 でテキストコンソールへ移動できる場合は、ログインして通常の再起動コマンドを使います。強制的な電源断は書き込み途中のファイルを壊す可能性があるため、キーボード、コンソール、システムの電源メニューのいずれも使えない場合だけ最後の手段にしてください。

テキストコンソールから通常の再起動を要求する
sudo systemctl reboot

デスクトップへ戻った後

  1. まずシステムの直接接続を維持する

    TUN、システムプロキシ、直前の大規模サブスクリプションはすぐに有効化せず、まずデスクトップと基本的なネットワークが安定していることを確認します。

  2. メインウィンドウから設定を開く

    トレイからプロキシグループのメニューを展開せず、Clash Verge Rev のメインウィンドウを直接開きます。

  3. 先にトレイの表示モードを変更する

    無効化の設定を完了してから、同じ大規模サブスクリプションを選び直して制御された再テストを行います。

  4. 障害が始まった時刻を記録する

    サブスクリプションを切り替えた時刻とデスクトップが重くなり始めた時刻を記録し、後でその範囲のログだけを抽出します。

セッション、バージョン、AppIndicator のエラーを記録する

ディストリビューション、GNOME、セッションの種類、Clash Verge Rev のバージョンを先に記録し、障害発生の前後数分間のシステムログを書き出します。X11 と Wayland では復旧方法が異なるため、「Ubuntu の最新版」だけでは不十分です。

次のクエリは今回の起動以降のログだけを読み取ります。出力に ubuntu-appindicators、dbusMenu.js、JSAPI during、already disposed、PopupSubMenuMenuItem が現れ、その時刻がサブスクリプションの切り替え直後である場合に限り、issue #7779 のパターンに近いと判断できます。

ログにはユーザー名、ホスト名、サブスクリプション、ノード情報が含まれる場合があります。公開前に必ず伏せ字にし、再現前後の数分だけを残してシステムログ全体はアップロードしないでください。

デスクトップとセッションのバージョンを記録する
printf 'session=%s\n' "$XDG_SESSION_TYPE"
gnome-shell --version
clash-verge --version 2>/dev/null || true
今回の起動ログから関連行を絞り込む
journalctl -b --no-pager | grep -E 'gnome-shell|ubuntu-appindicators|dbusMenu\.js|JSAPI during|already disposed|PopupSubMenuMenuItem'

変更前の基準状態

  • ディストリビューション、GNOME、X11 または Wayland のセッション種別を記録した
  • Clash Verge Rev の実際のバージョンとインストール元を記録した
  • 通常規模のサブスクリプションでは同じ重さが発生しない
  • 大規模サブスクリプションのノード数、プロキシグループ数、最大グループ規模を記録した
  • 障害発生時刻と該当ログを保存し、機密情報を伏せた
  • システムプロキシと TUN を無効にするとデスクトップが安定して動作する

トレイのプロキシグループ表示を無効にしてからサブスクリプションを切り替える

Clash Verge Rev のメインウィンドウで Settings → Layout Setting → Proxy Groups Display Mode → Disable を選びます。v2.5.2 の公式型定義は default、inline、disable をサポートしており、中国語の設定リソースでもこの項目は「既定」「一階層メニュー」「無効」と表示されています。

この変更では、プロキシグループと大量のノードをシステムトレイのメニューへ展開しなくなるだけです。サブスクリプション、ルール、ノード、メインウィンドウ内のプロキシグループは残ります。その後はメインウィンドウからノードを選び、設定確認のために以前のトレイサブメニューを何度もクリックしないでください。

GUI で保存できない場合は、設定にあるアプリディレクトリへの入口から verge.yaml を見つけます。クライアントを完全に終了し、ディレクトリ全体をバックアップしてから、tray_proxy_groups_display_mode を明示的に disable に設定してください。データディレクトリを推測したり、アプリの実行中にファイルを上書きしたりしないでください。

verge.yaml ではこの一項目だけを変更する
tray_proxy_groups_display_mode: disable

同じサブスクリプションで四つの項目を検証する

システム、クライアントのバージョン、サブスクリプションを変えずに、トレイのプロキシグループ表示モードだけを変更します。その後、メインウィンドウから以前に固まった大規模サブスクリプションへ切り替えます。この単一変数の比較は、ノード削除、コア変更、TUN 無効化を同時に行うより原因を判断しやすくします。

切り替え後は元の発生時間より長く待ち、メインウィンドウのプロキシグループから一度ノードを選んで、実際の HTTPS リクエストを送ります。遅延値だけを見ず、デスクトップの応答、トレイ構造、ログ、実際の接続がすべて正常か確認してください。

検証チェックリスト

  • 同じ大規模サブスクリプションへ切り替えても、トップバー、ウィンドウ切り替え、ショートカットキーが応答する
  • トレイメニューにプロキシグループとノードのサブメニューが生成されない
  • ログに dbusMenu.js、JSAPI during、already disposed のエラーが大量に追加されない
  • メインウィンドウで引き続きプロキシグループを確認し、ノードを切り替えられる
  • 実際の HTTPS リクエストが成功し、Connections に該当する接続が表示される
  • 完全に終了して再起動した後も無効化の設定が保持される

無効化後も固まる場合は原因を切り分け直す

トレイのサブメニューは消えたが、アプリのウィンドウだけが応答しない

WebView、描画、アプリログを確認し、GNOME Shell メニューが原因と決めつけないでください。

Clash Verge Rev を終了してもデスクトップが周期的に固まる

ほかの GNOME 拡張機能、GPU、システムログを確認してください。この記事の回避策は適用できません。

デスクトップは正常で、接続だけが失敗する

ノード、DNS、ルール、システムプロキシ、TUN を調べ、巨大なトレイメニューは復元しないでください。

同じ AppIndicator/GJS のエラーが大量に続く

無効化の設定を維持し、ほかのアプリにも巨大なトレイメニューがないか記録して、完全な比較結果をプロジェクトへ報告します。

Ubuntu AppIndicators を先にアンインストールしたり、大規模サブスクリプションを削除したり、デスクトップ環境全体を再インストールしたりしないでください。変更する変数が増え、ほかのアプリにも影響します。まず Clash Verge Rev を終了した状態、通常規模のサブスクリプション、トレイのプロキシグループを無効にした状態の三通りを比較し、どの手順が引き金かを確認してください。

トレイからの切り替えが必要な場合は安全に元へ戻し、証拠を添えて報告する

どうしてもトレイのプロキシグループメニューを戻す必要がある場合は、まずメインウィンドウで検証済みの小規模サブスクリプションへ切り替え、表示モードを「既定」または「一階層メニュー」へ戻します。大規模サブスクリプションが有効なままメニューを復元しないでください。再び固まった場合は直ちに disable へ戻し、メインウィンドウからノードを選び続けます。

公式へ報告する際は、ディストリビューション、GNOME とセッションの種類、Clash Verge Rev のバージョン、サブスクリプション規模、発生時刻、機密情報を伏せたログ、同じ条件での default と disable の結果を添えてください。サブスクリプションリンク、ノードアドレス、認証情報、完全な設定ファイルはアップロードしないでください。

2026年9月8日時点で issue #7779 は Open のままで、関連付けられた正式な修正はありません。報告で使用されたのは 2.5.3 AutoBuild で、公式の最新安定版は引き続き v2.5.2 です。v2.5.2 にはこの表示スイッチが含まれますが、リリースノートには大規模なトレイメニューによるフリーズを修正したとは書かれていません。スイッチが存在することを「問題が解決済み」と表現しないでください。

参考資料