Crash in _st_theme_resolve_url
Affected version
Provide at least the following information:
- Ubuntu 23.10
- GNOME 45.1
- Wayland currently, but I think I saw this in an Xorg session too
- The "unite" extension seems required to reproduce, see below
To properly disable extensions you can use gnome-extensions-app and then restart your session. Disabling extensions without a restart is not sufficient to rule out extensions as cause of a bug. If an issue can only be reproduced with a certain extension, please file a bug report against that extension first. -->
Bug summary
The GNOME session crashes, logging me out and killing all apps.
Steps to reproduce
This doesn't happen in a predictable fashion, but it's happened multiple times over the last several days.
What happened
GNOME Shell crashed, with a segfault. Killing all my unsaved work.
What did you expect to happen
Not crash.
Relevant logs, screenshots, screencasts etc.
Here is a stack trace obtained using apport-retrace -g
(which drops you into gdb and downloads the debug info for all libraries, apparently).
I can also send the contents of the .crash file to someone interested -- it also contains the details about my system and the journal logs around that time. Anyway, the stack trace:
(gdb) bt full
#0 __pthread_kill_implementation (no_tid=0, signo=11, threadid=<optimized out>)
at ./nptl/pthread_kill.c:44
tid = <optimized out>
ret = 0
pd = <optimized out>
old_mask = {__val = {94449703609440}}
ret = <optimized out>
pd = <optimized out>
old_mask = {__val = {<optimized out>}}
ret = <optimized out>
tid = <optimized out>
ret = <optimized out>
resultvar = <optimized out>
resultvar = <optimized out>
__arg3 = <optimized out>
__arg2 = <optimized out>
__arg1 = <optimized out>
_a3 = <optimized out>
_a2 = <optimized out>
_a1 = <optimized out>
__futex = <optimized out>
resultvar = <optimized out>
__arg3 = <optimized out>
__arg2 = <optimized out>
__arg1 = <optimized out>
_a3 = <optimized out>
_a2 = <optimized out>
_a1 = <optimized out>
__futex = <optimized out>
__private = <optimized out>
__oldval = <optimized out>
#1 __pthread_kill_internal (signo=11, threadid=<optimized out>)
at ./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=11)
at ./nptl/pthread_kill.c:89
#3 0x00007f2c34242866 in __GI_raise (sig=sig@entry=11) at ../sysdeps/posix/raise.c:26
ret = <optimized out>
#4 0x000055e6c3919bda in dump_gjs_stack_on_signal_handler (signo=11)
at ../src/main.c:496
sa = {__sigaction_handler = {sa_handler = 0x55e6c3919820 <dump_gjs_stack_alarm_sigaction>, sa_sigaction = 0x55e6c3919820 <dump_gjs_stack_alarm_sigaction>}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 0, sa_restorer = 0x0}
i = <optimized out>
#5 0x00007f2c34242910 in <signal handler called> () at /lib/x86_64-linux-gnu/libc.so.6
#6 0x00007f2c34c84510 in g_file_get_parent (file=0x55e6c68d9810)
at ../../../gio/gfile.c:830
--Type <RET> for more, q to quit, c to continue without paging--
__inst = 0x55e6c68d9810
__t = 0x55e6c55c6150 [GFile]
__r = <optimized out>
_g_boolean_var_26 = <optimized out>
iface = <optimized out>
__func__ = "g_file_get_parent"
#7 0x00007f2c345a31a6 in _st_theme_resolve_url
(theme=<optimized out>, url=0x55e6cd030b30 "minimize.svg", base_stylesheet=0x55e6cba2ef40) at ../src/st/st-theme.c:1074
base_file = <optimized out>
parent = <optimized out>
scheme = <optimized out>
resource = <optimized out>
scheme = <optimized out>
resource = <optimized out>
__func__ = {<optimized out> <repeats 22 times>}
base_file = <optimized out>
parent = <optimized out>
_g_boolean_var_17 = <optimized out>
#8 _st_theme_resolve_url
(theme=0x55e6c6aaf2a0 [StTheme], base_stylesheet=0x55e6cba2ef40, url=0x55e6cd030b30 "minimize.svg") at ../src/st/st-theme.c:1052
scheme = <optimized out>
resource = 0x55e6cd030b30
__func__ = "_st_theme_resolve_url"
base_file = <optimized out>
parent = <optimized out>
_g_boolean_var_17 = <optimized out>
#9 0x00007f2c345b091e in _st_theme_node_ensure_background
(node=0x55e6c8ddeb90 [StThemeNode]) at ../src/st/st-theme-node.c:2214
base_stylesheet = 0x55e6cba2ef40
decl = 0x55e6cd030d50
property_name = <optimized out>
i = 4
i = <optimized out>
decl = <optimized out>
property_name = <optimized out>
__str = <optimized out>
__prefix = <optimized out>
__result = <optimized out>
_g_boolean_var_52 = <optimized out>
__str_len = <optimized out>
__prefix_len = <optimized out>
term = <optimized out>
_pp = <optimized out>
_ptr = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
result = <optimized out>
base_stylesheet = <optimized out>
file = <optimized out>
result = <optimized out>
result = <optimized out>
result = <optimized out>
result = <optimized out>
base_stylesheet = <optimized out>
_pp = <optimized out>
_ptr = <optimized out>
_pp = <optimized out>
_ptr = <optimized out>
_pp = <optimized out>
_ptr = <optimized out>
term = <optimized out>
#10 _st_theme_node_ensure_background (node=node@entry=0x55e6c8ddeb90 [StThemeNode])
at ../src/st/st-theme-node.c:2036
i = <optimized out>
decl = <optimized out>
property_name = <optimized out>
__str = <optimized out>
__prefix = <optimized out>
__result = <optimized out>
_g_boolean_var_52 = <optimized out>
__str_len = <optimized out>
__prefix_len = <optimized out>
term = <optimized out>
_pp = <optimized out>
_ptr = <optimized out>
result = <optimized out>
base_stylesheet = <optimized out>
file = <optimized out>
result = <optimized out>
result = <optimized out>
result = <optimized out>
result = <optimized out>
base_stylesheet = <optimized out>
_pp = <optimized out>
_ptr = <optimized out>
_pp = <optimized out>
_ptr = <optimized out>
_pp = <optimized out>
_ptr = <optimized out>
term = <optimized out>
#11 0x00007f2c345b21ba in st_theme_node_paint_equal
(node=0x55e6ca934280 [StThemeNode], other=0x55e6c8ddeb90 [StThemeNode])
--Type <RET> for more, q to quit, c to continue without paging--
at ../src/st/st-theme-node.c:4221
border_image = <optimized out>
other_border_image = <optimized out>
shadow = <optimized out>
other_shadow = <optimized out>
i = <optimized out>
#12 0x00007f2c345be62c in st_widget_recompute_style
(widget=widget@entry=0x55e6cbd00230 [StBin], old_theme_node=old_theme_node@entry=0x55e6ca934280 [StThemeNode]) at ../src/st/st-widget.c:1711
priv = 0x55e6cbcffdb0
new_theme_node = 0x55e6c8ddeb90 [StThemeNode]
transition_duration = 0
settings = <optimized out>
paint_equal = <optimized out>
geometry_equal = <optimized out>
animations_enabled = 21990
#13 0x00007f2c345be86b in st_widget_style_changed (widget=0x55e6cbd00230 [StBin])
at ../src/st/st-widget.c:540
priv = <optimized out>
old_theme_node = 0x55e6ca934280 [StThemeNode]
#14 0x00007f2c345be941 in notify_children_of_style_change
(self=self@entry=0x55e6cbd00f10 [StButton]) at ../src/st/st-widget.c:513
iter = {clutter_private_dummy1 = 0x55e6cbd00f10, clutter_private_dummy2 = 0x55e6cbd00230, clutter_private_dummy3 = 1}
actor = 0x55e6cbd00230 [StBin]
#15 0x00007f2c345be84b in st_widget_style_changed (widget=0x55e6cbd00f10 [StButton])
at ../src/st/st-widget.c:545
priv = <optimized out>
old_theme_node = 0x55e6ca932180 [StThemeNode]
#16 0x00007f2c345becc8 in st_widget_add_style_pseudo_class
(pseudo_class=0x7f2c345dc4a1 "hover", actor=0x55e6cbd00f10 [StButton])
at ../src/st/st-widget.c:1370
priv = <optimized out>
priv = <optimized out>
__func__ = {<optimized out> <repeats 33 times>}
_g_boolean_var_22 = <optimized out>
_g_boolean_var_23 = <optimized out>
#17 st_widget_add_style_pseudo_class
(actor=0x55e6cbd00f10 [StButton], pseudo_class=0x7f2c345dc4a1 "hover")
at ../src/st/st-widget.c:1358
priv = <optimized out>
__func__ = "st_widget_add_style_pseudo_class"
#18 0x00007f2c345bf16d in st_widget_set_hover
(widget=widget@entry=0x55e6cbd00f10 [StButton], hover=hover@entry=1)
at ../src/st/st-widget.c:1872
priv = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
__func__ = "st_widget_set_hover"
#19 0x00007f2c345bf20c in st_widget_enter
(actor=0x55e6cbd00f10 [StButton], event=0x55e6c8c7a290) at ../src/st/st-widget.c:704
stage = <optimized out>
target = <optimized out>
priv = <optimized out>
#20 0x00007f2c345932e2 in st_button_enter
(actor=0x55e6cbd00f10 [StButton], event=event@entry=0x55e6c8c7a290)
at ../src/st/st-button.c:352
button = 0x55e6cbd00f10 [StButton]
priv = 0x55e6cbd00a60
ret = <optimized out>
Python Exception <class 'gdb.error'>: value has been optimized out
(gdb)
Looking at the name of the file being looked up ("minimize.svg"
), this does look related to one of the few extensions I have installed. That extension contains a bunch of references to a file with such name that all look like this:
$ rg "minimize.svg"
...
unite@hardpixel.eu/themes/canta/stylesheet.css
19: background-image: url("minimize.svg");
...
It doesn't seem like good form for gnome-shell to crash on a reference in a CSS file, however.