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

Open Beginner friendly
#592 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
76/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
javascript, linux

Research direction

Start in lib/extension/window.js and inspect move(metaWindow, rect) and the window-create-queue callback, where the issue identifies the crashing calls. Check the window’s maximize state before unmaximizing, following the proposed fix in the issue. Reproduce by closing a tiled window on GNOME Shell 51; done means the session no longer crashes.

Written by the indexing model from the issue text.

Description

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.

Dominant language
JavaScript
Stars
1.3k
Forks
112
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from forge-ext/forge

All issues in forge-ext/forge

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.