Bug Report: Multiple Zorin GNOME Extensions causing gnome-shell CPU runaway and session crashes

Summary

After a recent system update, I experienced recurring GNOME Shell freezes, session logouts, and severe desktop/application performance degradation. Investigation revealed that three bundled Zorin GNOME Shell extensions (zorin-taskbar, zorin-menu, zorin-appindicator) are leaking Clutter actors and/or causing gnome-shell to consume up to ~88% CPU on a single core during normal use, resulting in complete crashes after a few hours and severe performance issues for GPU-accelerated applications (e.g. Minecraft dropping from normal framerates to ~10 FPS).

Disabling the three extensions resolved both the crashes and the performance degradation entirely.


System Information

  • OS: Zorin OS 18.1 (Ubuntu 24.04 base) //EDIT (Was before 17)
  • Kernel: 6.17.0-20-generic
  • Session type: Wayland (GNOME)
  • CPU: AMD Ryzen 9 7945HX (Minisforum Mainboard)
  • GPU: AMD Radeon RX 9070 XT (RDNA4, gfx1201)
  • Mesa: 25.2.8-0ubuntu0.24.04.1
  • RAM: 64 GB (no swap in use, no memory pressure)
  • Direct rendering: Yes (GPU acceleration confirmed working)

Symptoms

  1. Session crash / forced logout after 2–4 hours of uptime, returning the user to the login screen.
  2. Progressive desktop sluggishness — animations become choppy, window focus lags, and the entire shell becomes unresponsive before the crash.
  3. Severe application performance degradation: Minecraft dropped from expected triple-digit FPS to a sustained ~10 FPS, worsening the longer the session ran.
  4. gnome-shell CPU usage saturated at 79–88% on a single core during idle/light use, where normal idle should be below 5%.
  5. RAM usage was not the issue — plenty of free memory was always available; the bottleneck was purely CPU.

Diagnostic Evidence

1. zorin-taskbar — Clutter actor leak (JSAPI sweeping phase errors)

From journalctl -b -1:

gnome-shell[57500]: 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.

This message was logged hundreds of times within a single second, immediately before the session crashed. This is the textbook symptom of an extension not properly cleaning up Clutter actors / signal handlers on destroy.

2. zorin-appindicator — Icon-load loop, ClutterActor allocation failures

From journalctl -b 0 _COMM=gnome-shell:

zorin-appindicator@zorinos.com: systray, Impossible to read image info 
from path '/tmp/systray_iv6z7C' or name 'null': GdkPixbuf.PixbufError: 
Failed to recognize image format

gnome-shell: Can't update stage views actor unnamed [ClutterActor] 
is on because it needs an allocation.

gnome-shell: meta_window_set_stack_position_no_sync: 
assertion 'window->stack_position >= 0' failed

Stack trace points to appIndicator.js (_createIconByIconData, _cacheOrCreateIconByName, _createIcon, _updateIconByType, _updateIcon). The extension appears to retry failed icon loads in a tight loop instead of gracefully handling the GdkPixbuf.PixbufError, causing the observed CPU saturation of gnome-shell.

The triggering application in my case was Discord (Flatpak), which apparently sends a tray icon in a format the extension cannot decode.

3. Process state during the issue

PID     %CPU  %MEM  RSS      COMMAND
3688    87.9  0.9   620988   gnome-shell
7672    34.4  0.9   648620   Discord
8575    13.8  4.1   2714356  java (Minecraft)

gnome-shell sustained ~88% CPU with no user interaction. With a main-thread-bound compositor pegged, any GPU-accelerated client (including Minecraft via XWayland) is starved of frame scheduling, which fully explains the FPS collapse.


Reproduction Steps

  1. Fresh Zorin OS 18.1 installation with all updates as of April 2026.
  2. Default-enabled Zorin extensions active (zorin-taskbar, zorin-menu, zorin-appindicator, etc.).
  3. Use the system normally for 1–3 hours with Discord running (any app sending a non-standard tray icon appears sufficient).
  4. Observe: gnome-shell CPU climbs, desktop becomes sluggish, games lose framerate, and eventually the session is terminated.

Workaround

Disabling the three affected extensions completely resolves all symptoms:

gnome-extensions disable zorin-taskbar@zorinos.com
gnome-extensions disable zorin-menu@zorinos.com
gnome-extensions disable zorin-appindicator@zorinos.com

After re-login, gnome-shell idles at <5% CPU as expected, the session is stable, and Minecraft runs at normal framerates.


Suggested Fixes

  • zorin-taskbar / zorin-menu: Audit destroy() / dispose() paths to ensure all Clutter actors and signal handlers are disconnected before garbage collection. The JSAPI-during-sweeping-phase warning is a reliable indicator of the offending code path.
  • zorin-appindicator: Add proper error handling around GdkPixbuf.PixbufError in _createIconByIconData / _updateIcon. On failure, the extension should fall back to a default icon or silently skip, not retry in a hot loop. Consider rate-limiting icon refresh attempts per sender.

Additional Notes

I am happy to provide further logs, run additional diagnostics, or test patched extension builds if that would help. Full journalctl output from the crash session and the recovery session is available on request.

Thank you to the Zorin team for an otherwise excellent distribution.

3 Likes

Confirmation after disabling the three extensions:
After re-login with zorin-taskbar, zorin-menu and zorin-appindicator disabled, the new gnome-shell process shows:

0 JSAPI/sweeping-phase errors (was: hundreds per second)
0 PixbufErrors (was: continuous loop)
Only sporadic harmless "ClutterActor needs allocation" warnings (~6 in 8 minutes, unrelated to the extensions)
gnome-shell CPU dropped from 88% sustained to <10% idle
Session has remained stable with no memory growth or degradation

This confirms the three named extensions as the root cause.

1 Like

Hello,
May I ask you if you try this extension using X11 ?

Sure, here I see no problems really.

Seems like it could be a Wayland bug with the Zorin Gnome Extensions.

Thank you, I hope They will read this to patch them
And that's why I stay away from Wayland...