← 一覧へ戻る

Epiphany (GNOME Web) が Hyprland 上でカクつく・フリーズする問題を直した

Arch Linux Hyprland Epiphany WebKitGTK

環境

  • Arch Linux (kernel 6.18.51-1-lts)
  • Hyprland (Wayland)
  • CPU/GPU: Intel Core (Whiskey Lake), Mesa Intel UHD Graphics 620 (i915)
  • ブラウザ: Epiphany (GNOME Web) 50.6-1 / WebKitGTK 6.0

症状

  • ページをスクロールすると全体的にカクカクする
  • ヘッダーの「Sign in」ボタンを押すとフリーズし、Oops! エラーページが表示される

切り分け

最初は Wayland コンポジタ側 (Hyprland) や GPU 描画性能の問題を疑い、以下を順に試したが、いずれも改善しなかった。

  1. WEBKIT_DISABLE_DMABUF_RENDERER=1 epiphany
    • WebKitGTK 2.42 以降で既定になった DMA-BUF レンダラーが Wayland コンポジタ上でスクロールをカクつかせる既知の不具合があるため。効果なし。
  2. Hyprland の blur を無効化
    • 設定ファイルに「Intel UHD 620 では blur が常時 GPU を回す」という自分用の注意書きがあったため疑ったが、原因ではなかった。
  3. WEBKIT_DISABLE_COMPOSITING_MODE=1 epiphany(GPU アクセラレーションを完全無効化)
    • これでも直らなかった → GPU 描画パスの問題ではないと判断。

他のブラウザや動画プレイヤーでは同じ症状が出ないことも確認し、Epiphany (WebKitGTK) 固有の問題であることを切り分けた。

真因: WebKitWebProcess の繰り返しクラッシュ

coredumpctl list で確認したところ、短時間のうちに WebKitWebProcess が SIGABRT で 5 回クラッシュしていた。

$ coredumpctl list
...
Mon 2026-09-14 15:55:12 JST  8782 1000 1000 SIGABRT present /usr/lib/webkitgtk-6.0/WebKitWebProcess  39.6M
Mon 2026-09-14 15:56:24 JST  8963 1000 1000 SIGABRT present /usr/lib/webkitgtk-6.0/WebKitWebProcess  54.1M
Mon 2026-09-14 15:59:59 JST 10152 1000 1000 SIGABRT present /usr/lib/webkitgtk-6.0/WebKitWebProcess  31.7M
Mon 2026-09-14 16:01:42 JST 10375 1000 1000 SIGABRT present /usr/lib/webkitgtk-6.0/WebKitWebProcess  29.6M
Mon 2026-09-14 16:03:57 JST 10678 1000 1000 SIGABRT present /usr/lib/webkitgtk-6.0/WebKitWebProcess  32M

スクロールの「カクつき」も「Sign in」の「フリーズ」も、実際には見た目の描画性能問題ではなく、タブの Web プロセスが落ちて再起動するたびに画面が固まっていたというのが正体だった。

DEBUGINFOD_URLS を設定して coredumpctl info でシンボル解決したバックトレースを見ると、クラッシュしているスレッドは以下のパスを通っていた。

#0 raise
#1 abort
#2 g_log (glib)
#3 g_type_check_instance (gobject)
#4 g_signal_connect_data (gobject)
#5 libwebkitgtk-6.0.so.4 内の関数群...

g_signal_connect_data → g_type_check_instance の中で GLib の致命的エラー (g_error) が発生し、abort() している。G_DEBUG=fatal-warnings のような環境変数は設定していなかったので、これは環境起因ではなく webkitgtk-6.0 2.52.6-1(2026-08-19 リリース、GNOME 50 系の最新ビルド)自体のバグと判断した。

対応

1. webkitgtk-6.0 を直前の安定版にダウングレード

Arch Linux Archive から直前のビルドを取得してダウングレード。

curl -fsSL -O https://archive.archlinux.org/packages/w/webkitgtk-6.0/webkitgtk-6.0-2.52.5-2-x86_64.pkg.tar.zst
curl -fsSL -O https://archive.archlinux.org/packages/w/webkitgtk-6.0/webkitgtk-6.0-2.52.5-2-x86_64.pkg.tar.zst.sig
sudo pacman -U webkitgtk-6.0-2.52.5-2-x86_64.pkg.tar.zst

webkitgtk-6.0 は Epiphany 専用パッケージ(pacman -Qi webkitgtk-6.0 の Required By が epiphany のみ)だったので、他の GTK4 アプリへの影響を気にせずダウングレードできた。

2. pacman の自動アップグレードで巻き戻らないよう固定

/etc/pacman.conf の IgnorePkg に追加。

-#IgnorePkg   =
+IgnorePkg   = webkitgtk-6.0

3. GPU コンポジットを無効化してさらに安定化

ダウングレード後もターミナルから通常起動するとまだ不安定だったが、WEBKIT_DISABLE_COMPOSITING_MODE=1 を付けて起動すると改善した。アプリランチャーから起動しても同じ環境変数が効くように、.desktop ファイルをユーザー側で上書きした。

~/.local/share/applications/org.gnome.Epiphany.desktop:

[Desktop Entry]
Name=Web
GenericName=Web Browser
Comment=Browse the web
Keywords=web;browser;internet;epiphany;
Exec=env WEBKIT_DISABLE_COMPOSITING_MODE=1 epiphany %U
StartupNotify=true
Terminal=false
Type=Application
Icon=org.gnome.Epiphany
Categories=Network;GNOME;GTK;WebBrowser;
MimeType=text/html;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;multipart/related;application/x-mimearchive;message/rfc822;application/x-xpinstall;
Actions=new-window;Incognito;

[Desktop Action new-window]
Name=New Window
Exec=env WEBKIT_DISABLE_COMPOSITING_MODE=1 epiphany --new-window %U

[Desktop Action Incognito]
Name=New Incognito Window
Exec=env WEBKIT_DISABLE_COMPOSITING_MODE=1 epiphany --incognito-mode %U

Exec= はシェルを経由しないため Exec=env KEY=VALUE cmd の形で環境変数を渡せる。~/.local/share/applications/ に同名の .desktop を置くとシステム側 (/usr/share/applications/) より優先されるので、システムファイルを直接編集せずに済む。

結果

  • ダウングレード後、監視した範囲では WebKitWebProcess のクラッシュは再発せず
  • WEBKIT_DISABLE_COMPOSITING_MODE=1 併用でランチャー起動でも安定

元に戻す方法

上流で修正版がリリースされたら、以下で元に戻せる。

  1. sudo pacman -Syu webkitgtk-6.0(IgnorePkg の行を削除してから)
  2. ~/.local/share/applications/org.gnome.Epiphany.desktop を削除

学んだこと

  • 「描画がカクつく」ように見えても、実際にはプロセスクラッシュ→自動再起動が原因のことがある。まず coredumpctl list でクラッシュの有無を確認するのが近道。
  • coredumpctl info + DEBUGINFOD_URLS=https://archlinux.org でシンボル解決すると、パッケージのバグかどうかの当たりが付けやすい。
  • Arch Linux Archive (archive.archlinux.org) から特定バージョンの .pkg.tar.zst を落とせば、ロールバック用のキャッシュが手元になくてもダウングレードできる。

コメント

読み込み中…

    URLを含むコメントは、確認後に表示されます。