Bug: GNOME 51 crash - metaWindow.set_unmaximize_flags() causes Mutter SIGSEGV on window close

オープン 初心者向け
#592 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
76/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
javascript, linux

調査の方向性

lib/extension/window.jsから始め、move(metaWindow, rect)と、issueでクラッシュする呼び出しとして特定されているwindow-create-queueコールバックを調べてください。issueで提案されている修正に従い、ウィンドウの最大化を解除する前に最大化状態を確認してください。GNOME Shell 51でタイル表示されたウィンドウを閉じて再現してください。セッションがクラッシュしなくなれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Issue/Bug Description/Video Capture/Screenshots

On GNOME 51 (Fedora 45 Rawhide / libmutter-51), closing a window causes gnome-shell to crash with a segmentation fault (SIGSEGV), immediately terminating the user session and dropping the user back to GDM / login screen.

Root Cause Analysis

In lib/extension/window.js, move(metaWindow, rect) and the window-create-queue event callback unconditionally invoke metaWindow.set_unmaximize_flags(Meta.MaximizeFlags.BOTH); followed by metaWindow.unmaximize();.

In Mutter 51 (GNOME 51), invoking set_unmaximize_flags during window re-tiling/destruction triggers a crash inside meta_window_update_monitor:

Stack trace of thread 27746:
#0  0x00007fe51d1bff16 meta_window_update_monitor (libmutter-51.so.0 + 0x1bff16)
#1  0x00007fe51d24f30b meta_window_wayland_update_main_monitor (libmutter-51.so.0 + 0x24f30b)
#2  0x00007fe51d1bff51 meta_window_update_monitor (libmutter-51.so.0 + 0x1bff51)
#3  0x00007fe51d1c101b meta_window_move_resize_internal (libmutter-51.so.0 + 0x1c101b)
#4  0x00007fe51d1bc6e9 meta_window_set_unmaximize_flags (libmutter-51.so.0 + 0x1bc6e9)
#5  0x00007fe51c4e6056 ffi_call_unix64 (libffi.so.8 + 0xb056)
#8  0x00007fe51d69c3f4 _ZN3Gjs8Function6invoke... (libgjs.so.0 + 0x1303f4)
Proposed Fix

Only attempt to unmaximize if the window is actually currently horizontally or vertically maximized, and avoid calling set_unmaximize_flags:

// In move(metaWindow, rect) and window-create-queue:
try {
  if (metaWindow.maximized_horizontally || metaWindow.maximized_vertically) {
    metaWindow.unmaximize(Meta.MaximizeFlags.BOTH);
  }
} catch (e) {
  // ignore
}

Testing this patch on Fedora 45 / GNOME Shell 51.1 completely resolves the crash when closing tiled windows.

Steps to reproduce
  1. Enable Forge on GNOME Shell 51.
  2. Open two or more tiled windows (e.g. terminals).
  3. Close one of the windows (e.g. using Super+Q or Alt+F4).
  4. gnome-shell crashes with SIGSEGV in meta_window_set_unmaximize_flags, logging out the user.
Distribution and Linux version
NAME="Fedora Linux"
VERSION="45 (Workstation Edition)"
ID=fedora
VERSION_ID=45
PRETTY_NAME="Fedora Linux 45 (Workstation Edition)"
Linux fedora 7.2.15-300.fc45.x86_64 #1 SMP PREEMPT_DYNAMIC Sun Nov 1 16:11:16 UTC 2026 x86_64 GNU/Linux
Journal Logs from the last hour
Nov 07 15:31:25 fedora systemd-coredump[32773]: Process 27746 (gnome-shell) of user 1000 dumped core.
Stack trace of thread 27746:
#0  0x00007fe51d1bff16 meta_window_update_monitor (libmutter-51.so.0 + 0x1bff16)
#1  0x00007fe51d24f30b meta_window_wayland_update_main_monitor (libmutter-51.so.0 + 0x24f30b)
#2  0x00007fe51d1bff51 meta_window_update_monitor (libmutter-51.so.0 + 0x1bff51)
#3  0x00007fe51d1c101b meta_window_move_resize_internal (libmutter-51.so.0 + 0x1c101b)
#4  0x00007fe51d1bc6e9 meta_window_set_unmaximize_flags (libmutter-51.so.0 + 0x1bc6e9)
GNOME Shell version

GNOME Shell 51.1

Forge version

Version 89 (gnome-shell-extension-forge-89-4.fc45)

Other installed/enabled extensions
[email protected] (Forge)
[email protected] (Background Logo)
[email protected] (Launch New Instance)
Monitor Setup

1 x 1080p laptop display (eDP-1, 1920x1080 @ 60Hz)

Other Notes

Also also noting that "51" is not yet listed in metadata.json's shell-version array.

主要言語
JavaScript
スター
1.3k
フォーク
112
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

forge-ext/forge のほかの issue

forge-ext/forge の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。