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

Aperta Adatta ai principianti
#592 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
javascript, linux

Direzione di ricerca

Inizia da lib/extension/window.js ed esamina move(metaWindow, rect) e il callback window-create-queue, dove l’issue identifica le chiamate che causano il crash. Controlla lo stato di massimizzazione della finestra prima di rimuoverne la massimizzazione, seguendo la correzione proposta nell’issue. Riproduci il problema chiudendo una finestra affiancata su GNOME Shell 51; il lavoro è completato quando la sessione non va più in crash.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
JavaScript
Stelle
1.3k
Fork
112
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di forge-ext/forge

Tutte le issue di forge-ext/forge

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.