mzur / gnome-shell-wsmatrix

GNOME shell extension to arrange workspaces in a two-dimensional grid with workspace thumbnails
GNU General Public License v3.0
464 stars 58 forks source link

Something unknown causes gnome-shell to die a horrible death #238

Closed bkuczenski closed 1 year ago

bkuczenski commented 2 years ago

An issue with several gnome extensions is that they can fail in unexpected ways, and gnome-shell maintainers take no responsibility for capturing the errors or failing gracefully. cf: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1868

I use this extension with gnome-on-Xorg. I have an issue that is only caused when this extension is enabled. The issue is: occasionally when waking from sleep, the gnome-shell will become unresponsive and have to be killed. During this time, the syslog becomes absolutely inundated with gnome-shell errors. The errors begin with the following line, followed by an endless stream of stack trace reports:

Aug 21 17:40:29 glyph gnome-shell[2145]: 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.
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==

Eventually the log settles down with a different error:

Aug 21 17:42:08 glyph gnome-shell[2145]: 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.
Aug 21 17:42:08 glyph gnome-shell[2145]: The offending callback was SourceFunc().
Aug 21 17:42:08 glyph gnome-shell[2145]: 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.
Aug 21 17:42:08 glyph gnome-shell[2145]: The offending callback was SourceFunc().
Aug 21 17:42:08 glyph gnome-shell[2145]: 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.
Aug 21 17:42:08 glyph gnome-shell[2145]: The offending callback was SourceFunc().

The log generation is truly prodigious and is only limited by CPU speed. The way I regain control of the system is by switching to a TTY and executing killall gnome-shell

I have not observed the problem since disabling the extension. Gnome-shell maintainers are unhelpful and assert that it is the extension's job to not break. I am happy to help debug the problem however I can.

This has been going on for at least a year, on two different machines. Based on the fact that I haven't observed the behavior since disabling this extension, I suspect the extension is the cause.

bkuczenski commented 2 years ago

Here's some statistical information on the logs from one of the crash events:

b@glyph:~$ wc debug-gnome-shell-excerpt
   75005  1893750 12762740 debug-gnome-shell-excerpt
b@glyph:~$ sort debug-gnome-shell-excerpt | uniq -c
      5 
   2248 Aug 21 17:40:29 glyph gnome-shell[2145]: 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.
   2247 Aug 21 17:40:29 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
   2247 Aug 21 17:40:29 glyph gnome-shell[2145]: The offending signal was window-entered-monitor on MetaDisplay 0x55a5a25ca1a0.
  16502 Aug 21 17:40:30 glyph gnome-shell[2145]: 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.
  28311 Aug 21 17:40:30 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
   8248 Aug 21 17:40:30 glyph gnome-shell[2145]: The offending signal was window-entered-monitor on MetaDisplay 0x55a5a25ca1a0.
   8255 Aug 21 17:40:30 glyph gnome-shell[2145]: The offending signal was window-left-monitor on MetaDisplay 0x55a5a25ca1a0.
   6942 Aug 21 17:40:31 glyph gnome-shell[2145]: == Stack trace for context 0x55a5a24a2180 ==
b@glyph:~$
mzur commented 2 years ago

Do you see anything explicitly related to this extension in the log? Otherwise it's hard to find out where the error is coming from. Maybe you can play with the switches in the extension settings to see if any specific feature of this extension causes the issue.

What distribution and GNOME Shell version do you use?

mzur commented 1 year ago

Please reopen if this is still relevant.

toobaz commented 1 year ago

I use the same extension and I have the same symptoms... but I also use other extensions, so I'm not reopening the bug as I don't have conclusive evidence.