Crashes in Cairo 1.17.8 when running Emacs on Fedora 38
Quite a few Fedora 38 users are experiencing occasional crashes of Emacs (version 28.2 from the distro package) while starting it up.
https://bugzilla.redhat.com/show_bug.cgi?id=2188678
https://bugzilla.redhat.com/show_bug.cgi?id=2182529
I'm opening a bug here because the backtraces sound like the problem's in Cairo rather than Emacs itself (especially surface=0x0
on the first frame, while a cursory glance at the code indicates that the surface is created internally in Cairo), but feel free to close if you disagree
#0 0x00007febcaab0844 in __pthread_kill_implementation () from /lib64/libc.so.6
[Current thread is 1 (Thread 0x7febc66c3500 (LWP 597851))]
Missing separate debuginfos, use: dnf debuginfo-install emacs-28.2-4.fc38.x86_64
(gdb) bt
#0 0x00007febcaab0844 in __pthread_kill_implementation () at /lib64/libc.so.6
#1 0x00007febcaa5fabe in raise () at /lib64/libc.so.6
#2 0x000000000046536b in terminate_due_to_signal ()
#3 0x0000000000465cc6 in deliver_fatal_signal.lto_priv[cold] ()
#4 0x00000000006ae2b4 in deliver_thread_signal.constprop ()
#5 0x00007febcaa5fb70 in <signal handler called> () at /lib64/libc.so.6
#6 0x00007febd32bac8c in _cairo_recording_surface_replay_internal (surface=0x0, params=0x7fff72a03d20)
at ../src/cairo-recording-surface.c:2006
#7 0x00007febd3309144 in _cairo_recording_surface_replay_with_foreground_color
(foreground_used=<synthetic pointer>, foreground_color=0x7fff72a04330, target=0x3c1e8c0, surface=<optimized out>) at ../src/cairo-recording-surface.c:2472
#8 _cairo_ft_scaled_glyph_init_surface_for_recording_surface
(scaled_font=<optimized out>, foreground_color=0x7fff72a04330, scaled_glyph=0x3bd9a60)
at ../src/cairo-ft-font.c:3114
#9 _cairo_ft_scaled_glyph_init
(abstract_font=<optimized out>, scaled_glyph=<optimized out>, info=<optimized out>, foreground_color=0x7fff72a04330) at ../src/cairo-ft-font.c:3515
#10 0x00007febd32c5127 in _cairo_scaled_glyph_lookup
(scaled_font=0x33b8810, index=<optimized out>, info=CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE, foreground_color=0x7fff72a04330, scaled_glyph_ret=<optimized out>) at ../src/cairo-scaled-font.c:2959
#11 0x00007febd32d1099 in ensure_scaled_glyph
(scaled_glyph=0x7fff72a03f00, glyph=0x7fff72a04618, glyph_cache=0x7fff72a03f70, foreground_color=<optimized out>, scaled_font=0x33b8810) at ../src/cairo-surface.c:2654
#12 composite_color_glyphs
(surface=surface@entry=0x215c6a0, op=op@entry=CAIRO_OPERATOR_OVER, source=source@entry=0x7fff72a042b0, utf8=utf8@entry=0x3c12fe0 "\242\357\254\003", utf8_len=utf8_len@entry=0x7fff72a0420c, glyphs=glyphs@entry=0x7fff72a04600, num_glyphs=0x7fff72a04250, clusters=0x0, num_clusters=0x7fff72a04260, cluster_flags=0, scaled_font=0x33b8810, clip=0x23449d0) at ../src/cairo-surface.c:2855
#13 0x00007febd32d30e9 in _cairo_surface_show_text_glyphs
(surface=0x215c6a0, op=CAIRO_OPERATOR_OVER, source=0x7fff72a042b0, utf8=0x3c12fe0 "\242\357\254\003", utf8_len=<optimized out>, glyphs=0x7fff72a04600, num_glyphs=<optimized out>, clusters=0x0, num_clusters=<optimized out>, cluster_flags=0, scaled_font=0x33b8810, clip=0x23449d0) at ../src/cairo-surface.c:2957
#14 0x00007febd328ce9a in _cairo_gstate_show_text_glyphs
(gstate=0x259e9e8, glyphs=<optimized out>, num_glyphs=<optimized out>, info=0x0) at ../src/cairo-gstate.c:2079
#15 0x00007febd32e145e in cairo_show_glyphs (num_glyphs=<optimized out>, glyphs=<optimized out>, cr=0x259e7f0)
at ../src/cairo.c:3687
#16 cairo_show_glyphs (cr=0x259e7f0, glyphs=<optimized out>, num_glyphs=<optimized out>) at ../src/cairo.c:3667
#17 0x000000000068c1cd in ftcrfont_draw.lto_priv ()
#18 0x0000000000539ac2 in x_draw_glyph_string_foreground ()
#19 0x000000000053c0b4 in x_draw_glyph_string.lto_priv ()
#20 0x00000000004c0f14 in draw_glyphs.lto_priv ()
#21 0x00000000004ccc9c in gui_write_glyphs ()
#22 0x00000000004757a6 in update_window_line ()
#23 0x000000000047cb6d in update_window.lto_priv ()
#24 0x000000000047d824 in update_window_tree ()
#25 0x000000000047e4cd in update_frame ()
#26 0x00000000004ab34d in redisplay_internal.lto_priv ()
#27 0x000000000057a072 in read_char ()
#28 0x000000000058445b in read_key_sequence.lto_priv ()
#29 0x000000000057297e in command_loop_1.lto_priv ()
#30 0x00000000005ff21e in internal_condition_case ()
#31 0x0000000000571b36 in command_loop_2 ()
#32 0x00000000005ff177 in internal_catch ()
#33 0x0000000000570701 in command_loop ()