The extension (from EGO) makes GNOME 45.1 crash a lot
This will probably sound odd, but as long as this extension is enabled, my GNOME 45.1 Wayland session (from Ubuntu 23.10) starts getting odd crashes. A lot of them aren't even picked up by the crash reporter (Apport) and when I tried to attach gdb to the process, the crash killed the gnome-shell process anyway together with the debugger. The systemd journal entry looks like this in such cases:
Jan 11 03:30:24 potemkin kernel: Code: 14 0f 1f 44 00 00 49 83 ed 08 4c 39 6c 24 10 0f 84 ee 02 00 00 48 8b 83 28 01 00 00 4c 89 e6 4a 8b 2c 28 48 8b 45 00 48 8b 00 <48> 8b 38 e8 bc 8>
Jan 11 03:30:24 potemkin kernel: gnome-shell[3558]: segfault at 0 ip 00007f6d9bf9380c sp 00007ffd66917210 error 4 in libst-13.so[7f6d9bf68000+54000] likely on CPU 5 (core 5, socket 0)
...and that's it (and a bunch of "Broken pipe" messages). In other cases, the crash is logged and looks more like this or this. Or this one:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f0e151b1809 in st_theme_node_lookup_shadow (node=node@entry=0x55b564b2f7e0 [StThemeNode], property_name=property_name@entry=0x7f0e151dc337 "box-shadow",
inherit=inherit@entry=0, shadow=shadow@entry=0x7ffc1a086530) at ../src/st/st-theme-node.c:3548
3548 if (strcmp (decl->property->stryng->str, property_name) == 0)
[Current thread is 1 (Thread 0x7f0e10d5c600 (LWP 3589))]
(gdb) bt
#0 0x00007f0e151b1809 in st_theme_node_lookup_shadow
(node=node@entry=0x55b564b2f7e0 [StThemeNode], property_name=property_name@entry=0x7f0e151dc337 "box-shadow", inherit=inherit@entry=0, shadow=shadow@entry=0x7ffc1a086530)
at ../src/st/st-theme-node.c:3548
#1 0x00007f0e151b1c31 in st_theme_node_get_box_shadow (node=node@entry=0x55b564b2f7e0 [StThemeNode]) at ../src/st/st-theme-node.c:3644
#2 0x00007f0e151b1f81 in st_theme_node_get_paint_box (node=0x55b564b2f7e0 [StThemeNode], actor_box=actor_box@entry=0x7ffc1a086600, paint_box=paint_box@entry=0x7ffc1a0865b0)
at ../src/st/st-theme-node.c:4121
#3 0x00007f0e151b2104 in st_theme_node_transition_get_paint_box (transition=<optimized out>, allocation=0x7ffc1a086600, paint_box=0x7ffc1a086610)
at ../src/st/st-theme-node-transition.c:231
#4 0x00007f0e151be0c7 in st_widget_get_paint_volume (self=0x55b564cb88e0 [StButton], volume=0x55b564cb8770) at ../src/st/st-widget.c:799
...
The first and the last I got just in the recent half-hour with no other extensions installed (aside from Ubuntu's builtins, but those were disabled). And I even renamed ~/.themes/
to something else before logging in, to exclude the potential conflict or whatever. With the extension disabled, the shell is stable and works for days without problems (with other extensions in use, too, including fairly invasive ones).
The most predictable way to make my session crash, is to press Super-L
. Which normally locks the session, but with this extension installed, brings it down (the "door coming down" animation doesn't occur, so something breaks before it). I haven't managed to reproduce it in a VM (tried for a while, but no crashes occurred), and I don't have an unused laptop lying around to install the OS anew to experiment. This is most likely a GNOME bug (some sort of memory corruption?), and I should report it there, but they don't, in general, seem to respond to reports about crashes without good repros. And the protocol is to report the problem to the extension first, so I figured to at least ask here whether you have any ideas.
Further notes:
- (To repeat) If I enable the extension,
Super-L
crashes the session. - But, if I enable it and then disable,
Super-L
is fine again (locks the screen). - If I turn the extension into a theme instead, like described in the README, the shell is also working fine with that new theme enabled (with the help of the User Themes extension). So this is a solution, but I've spent a lot of time pinpointing the problem (because an extension with almost no JS really looks so harmless). It would be great to get to the bottom of it, rather just settle for a workaround.
I also thought that it might be a problem that the exported class doesn't extends Extension
, like the GJS guide says it should (for GNOME 45 extensions), but fixing that didn't make a difference.