Bug: GNOME 51 crash - metaWindow.set_unmaximize_flags() causes Mutter SIGSEGV on window close
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
- Domain
- desktop, operating-systems
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
- Enable Forge on GNOME Shell 51.
- Open two or more tiled windows (e.g. terminals).
- Close one of the windows (e.g. using Super+Q or Alt+F4).
gnome-shellcrashes with SIGSEGV inmeta_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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from forge-ext/forge
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Bug: Changing a setting while Forge is disabled (e.g. screen locked) throws errors; old handlers keep runningPossibly taken @mattchristenson claimed this 41 days ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 35/100
-
Bug: Windows overlap while resizing, until slower apps catch upPossibly taken @mattchristenson claimed this 41 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 30/100
-
Bug: Tabbed and stacked groups that contain a split show windows on top of each otherPossibly taken @mattchristenson claimed this 41 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 20/100
-
Bug: Windows in a stacked group are hidden without a tracePossibly taken @mattchristenson claimed this 41 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Similar issues
-
ai core enhancement good first issue testing
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
cli: `studio --request <missing file>` answers with a raw ENOENT/EISDIR instead of a clear errorPossibly taken A pull request linked to this issue is open or already merged. Openbug good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
laaielichter/Ai-edit-studio#81 ·
Maintainers usually reply within 1 day
-
TEDAPI/v1r mode: /aggregates drops the generator meter (GENERATOR is in meterAggregates)Possibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
jasonacox/pypowerwall#472 ·
Maintainers usually reply within 1 day