Subject: bug#65198: 29.1; Emacs29.1 crash in function face_for_font

From: 张云峰 <[email-masked]>
Date: Fri, 11 Aug 2023 22:55:29 +0800

(compile emacs without  pgtk)

(gdb) p it->face_id
$13 = 0
(gdb) p it->c
$14 = 9888
(gdb) p FRAME_FONT(it->f)
No symbol "FRAME_FONT" in current context.
(gdb) p it->f
$15 = (struct frame *) 0x5555586492e0
(gdb) p (it->f)->output_data.x->font
$16 = (struct font *) 0x555558ca8c18
(gdb) p (it->f)->output_data.x->font->
ascent               default_ascent       encoding_charset
max_width            props                space_width
vertical_centering
average_width        descent              header
min_width            relative_compose     underline_position
baseline_offset      driver               height
pixel_size           repertory_charset    underline_thickness
(gdb) p (it->f)->output_data.x->font->encoding_charset
$17 = -1
(gdb) p (it->f)->output_data.x->font->driver
$18 = (const struct font_driver *) 0x555555e04fe0 <ftcrhbfont_driver>
(gdb) p (it->f)->output_data.x->font->ascent
$19 = 27
(gdb) p (it->f)->output_data.x->font->pixel-size
No symbol "size" in current context.
(gdb) p (it->f)->output_data.x->font->pixel_size
$20 = 24
(gdb) p (it->f)->output_data.x->font->props
$21 = {0x7ef0, 0x26eef30, 0x26eef60, 0x0, 0x9bd0, 0x14102, 0x19082,
0x19102, 0x62, 0x0, 0x192, 0x2, 0x555557cfa953, 0x0, 0x555558e5d854,
0x555558e5d874, 0x555558ca1884}
(gdb) p (it->f)->output_data.x->font->relative_compose
$22 = 0
(gdb) p (it->f)->output_data.x->font->repertory_charset
$23 = -1
(gdb)

张云峰 <[email-masked]> 于2023年8月11日周五 22:21写道：
>
> Thread 1 "emacs" received signal SIGSEGV, Segmentation fault.
> 0x0000555555616206 in produce_glyphless_glyph (it=0x7fffffff6cc0,
> for_no_font=for_no_font@entry=false, acronym=acronym@entry=0x0) at
> xdisp.c:31791
> 31791 font = face->font ? face->font : FRAME_FONT (it->f);
> (gdb) p it->face_id
> $1 = 0
> (gdb) p it->c
> $2 = 9888
> (gdb) p FRAME_FONT(it->f)
> No symbol "FRAME_FONT" in current context.
> (gdb) p (it->f)->output_data.x->font
> There is no member named font.
> (gdb) p face
> Cannot access memory at address 0x120
> (gdb) p FACE_FROM_ID (it->f, it->face_id)->ascii_face
> No symbol "FACE_FROM_ID" in current context.
> (gdb) p it->what
> $3 = IT_GLYPHLESS
>
> Eli Zaretskii <[email-masked]> 于2023年8月11日周五 14:12写道：
> >
> > > From: 张云峰 <[email-masked]>
> > > Date: Fri, 11 Aug 2023 08:50:04 +0800
> > > Cc: [email-masked]
> > >
> > > more clear GDB info:
> > >
> > > Thread 1 "emacs" received signal SIGSEGV, Segmentation fault.
> > > 0x0000555555618c06 in produce_glyphless_glyph (it=0x7fffffff67d0,
> > > for_no_font=for_no_font@entry=false, acronym=acronym@entry=0x0) at
> > > xdisp.c:31791
> > > 31791 font = face->font ? face->font : FRAME_FONT (it->f);
> >
> > Actually, this is progress: we are now crashing a bit later, while
> > trying to display an empty box instead of a character that has no font
> > and no suitable face.  To resolve this, please help me by providing
> > the results of the following GDB commands after Emacs crashes and GDB
> > kicks in:
> >
> >  (gdb) p it->face_id
> >  (gdb) p it->c
> >  (gdb) p FRAME_FONT(it->f)
> >  (gdb) p (it->f)->output_data.x->font
> >
> > Thanks.