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

Abierto Apto para principiantes
#592 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
javascript, linux

Línea de trabajo

Empieza en lib/extension/window.js e inspecciona move(metaWindow, rect) y la callback window-create-queue, donde el issue identifica las llamadas que provocan el fallo. Comprueba el estado de maximización de la ventana antes de desmaximizarla, siguiendo la solución propuesta en el issue. Reproduce el fallo cerrando una ventana en mosaico en GNOME Shell 51; se considera terminado cuando la sesión ya no se bloquea.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
JavaScript
Estrellas
1.3k
Forks
112
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de forge-ext/forge

Todos los issues de forge-ext/forge

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.