Description
Cinnamon freezes/hangs when using hot corners to trigger the Expo workspace switcher. The .xsession-errors log fills with Gjs-CRITICAL errors about disposed fake_group objects in dnd.js.
Steps to reproduce
- Enable hot corners in Cinnamon settings (e.g., top-left corner → Show all workspaces)
- Use the system normally for some time
- Move mouse to the hot corner to trigger Expo/workspace overview
- Cinnamon freezes or becomes unresponsive
Expected behavior
Expo/workspace switcher should open smoothly without errors or freezing.
Actual behavior
Cinnamon hangs, and the following errors appear in ~/.xsession-errors:
(cinnamon:2944): Gjs-CRITICAL **: 15:18:21.277: Object .Gjs_ui_overrides_fake_group (0x5828d8244b10), has been already disposed — impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
== Stack trace for context 0x5828c648c180 ==
#0 5828c8429408 i /usr/share/cinnamon/js/ui/dnd.js:659 (1435eeadb5b0 @ 47)
#1 7ffc2f5447d0 b resource:///org/gnome/gjs/modules/script/_legacy.js:83 (1435eea82c90 @ 69)
#2 5828c8429318 i /usr/share/cinnamon/js/ui/dnd.js:539 (1435eeadb420 @ 1376)
#3 7ffc2f5451e0 b resource:///org/gnome/gjs/modules/script/_legacy.js:83 (1435eea82c90 @ 69)
#4 7ffc2f545910 b /usr/share/cinnamon/js/ui/dnd.js:199 (1435eeadb150 @ 89)
#5 7ffc2f5459f0 b resource:///org/gnome/gjs/modules/script/_legacy.js:83 (1435eea82c90 @ 69)
#6 7ffc2f545ab0 b /usr/share/cinnamon/js/ui/dnd.js:57 (1435eead7d80 @ 18)
Also seeing related GC errors:
(cinnamon:2944): Gjs-CRITICAL **: 15:22:53.171: Attempting to run a JS callback during garbage collection. This is most likely caused by destroying a Clutter actor or GTK widget with ::destroy signal connected, or using the destroy(), dispose(), or remove() vfuncs. Because it would crash the application, it has
been blocked.
The offending callback was SourceFunc().
(cinnamon:2944): Gjs-CRITICAL **: 15:22:53.178: Attempting to call back into JSAPI during the sweeping phase of GC. This is most likely caused by not destroying a Clutter actor or Gtk+ widget with ::destroy signals connected, but can also be caused by using the destroy(), dispose(), or remove() vfuncs. Because
it would crash the application, it has been blocked and the JS callback not invoked.
The offending signal was captured-event on MetaStage 0x5828c6c454d0.
Environment
- Distribution: Linux Mint 22.2
- Cinnamon version: 6.4.8
- Graphics: 2 x GeForce RTX 2080 Ti
Graphics:
Device-1: NVIDIA TU102 [GeForce RTX 2080 Ti] driver: nvidia v: 580.105.08
Device-2: NVIDIA TU102 [GeForce RTX 2080 Ti] driver: nvidia v: 580.105.08
Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.6 driver: X:
loaded: nvidia unloaded: fbdev,modesetting,nouveau,vesa
gpu: nv_platform,nvidia,nvidia-nvswitch resolution: 2560x1440~60Hz
API: EGL v: 1.5 drivers: nouveau,nvidia,swrast
platforms: gbm,x11,surfaceless,device
API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: nvidia mesa v: 580.105.08
renderer: NVIDIA GeForce RTX 2080 Ti/PCIe/SSE2
Notes
- The issue seems related to
dnd.js drag-and-drop code and the fake_group object being disposed while still referenced
- The fix in commit c451c0d (WorkspaceOsd cleanup) is already applied in 6.4.8, but this issue persists
- This may be related to #12716 (constant freezes after 6.4.6), where developers acknowledged "multi-faceted issue"
- Similar symptoms reported in #8655 (Frozen Screens in Expo View) and #2093 (hot corners while dragging causes freeze)
- The problem appears to be in the interaction between hot corners, Expo, and the DnD (drag-and-drop) subsystem
Description
Cinnamon freezes/hangs when using hot corners to trigger the Expo workspace switcher. The
.xsession-errorslog fills with Gjs-CRITICAL errors about disposedfake_groupobjects indnd.js.Steps to reproduce
Expected behavior
Expo/workspace switcher should open smoothly without errors or freezing.
Actual behavior
Cinnamon hangs, and the following errors appear in
~/.xsession-errors:Also seeing related GC errors:
Environment
Notes
dnd.jsdrag-and-drop code and thefake_groupobject being disposed while still referenced