From: Pip Cet via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: execvy@gmail.com
Cc: 72692@debbugs.gnu.org
Subject: bug#72692: Emacs 31.05 (40eecd594ac) get SIGSEGV on Linux (Linux 6.6.45 Kde Wayland)
Date: Sun, 18 Aug 2024 12:43:06 +0000 [thread overview]
Message-ID: <877ccegfxj.fsf@protonmail.com> (raw)
In-Reply-To: <7be3359e-4389-4bc6-bf98-b46a2a8a711c@gmail.com>
<execvy@gmail.com> writes:
> It's
> ```
> Redefine command "xbacktrace"? (y or n) [answered Y; input not from terminal]
> Redefine command "xprintbytestr"? (y or n) [answered Y; input not from terminal]
> Redefine command "xwhichsymbols"? (y or n) [answered Y; input not from terminal]
> Redefine command "hookpost-backtrace"? (y or n) [answered Y; input not from terminal]
> Redefine command "ff"? (y or n) [answered Y; input not from terminal]
> DISPLAY = :0
> TERM = tmux-256color
> Breakpoint 3 at 0x4736d9: file emacs.c, line 431.
> Breakpoint 4 at 0x562640: file xterm.c, line 27093.
> (gdb) frame 9
> #9 0x00000000006dd64d in fontset_font (fontset=fontset@entry=XIL(0), c=c@entry=127802, face=face@entry=0x13fec610, id=-1) at fontset.c:793
> 793 rfont_def = fontset_find_font (fontset, c, face, id, 0);
> (gdb) p *face->ascii_face
> $1 = {
> lface = {XIL(0x8220), XIL(0x28bdef4), XIL(0x28bdf34), XIL(0xe340), make_fixnum(90), XIL(0xe340), XIL(0xe340), XIL(0), XIL(0), XIL(0x4417994), XIL(0x233c9c4), XIL(0), XIL(0), XIL(0), XIL(0x7f9ea6b05d63),
> XIL(0x765a8285), XIL(0), XIL(0x2aabee4), XIL(0x13500), XIL(0)},
> id = 2,
> gc = 0x0,
> stipple = 0,
> foreground = 4288059542,
> background = 4278190080,
> underline_color = 0,
> overline_color = 0,
> strike_through_color = 0,
> box_color = 4281545523,
> font = 0x1e4370d0,
> fontset = 5,
> box_vertical_line_width = -1,
> box_horizontal_line_width = -1,
> underline_pixels_above_descent_line = 0,
> box = FACE_SIMPLE_BOX,
> underline = FACE_NO_UNDERLINE,
> use_box_color_for_shadows_p = true,
> overline_p = false,
> strike_through_p = false,
> foreground_defaulted_p = false,
> background_defaulted_p = false,
> underline_defaulted_p = false,
> overline_color_defaulted_p = false,
> strike_through_color_defaulted_p = false,
> box_color_defaulted_p = true,
> underline_at_descent_line_p = false,
> tty_bold_p = false,
> tty_italic_p = false,
> tty_reverse_p = false,
> tty_strike_through_p = false,
> colors_copied_bitwise_p = false,
> overstrike = false,
> hash = 322003229,
> next = 0x13fec610,
> prev = 0x0,
> ascii_face = 0x4d7343a0,
> extra = 0x0
> }
> (gdb)
> ```
Thanks. That has a different fontset, so it looks like a fontset was
prematurely freed while still being referred to by a face. I think the
assumption made in xfaces.c, that it's always safe to free a fontset if
we're freeing the realized ASCII face, is incorrect.
I can confirm that we're sometimes leaving a frame's fontset field
invalid by running this code:
diff --git a/src/xfaces.c b/src/xfaces.c
index 684b6ccfac7..34bab822022 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -4598,7 +4598,23 @@ free_realized_face (struct frame *f, struct face *face)
{
/* Free fontset of FACE if it is ASCII face. */
if (face->fontset >= 0 && face == face->ascii_face)
- free_face_fontset (f, face);
+ {
+ struct face_cache *cache = FRAME_FACE_CACHE (f);
+ if (cache)
+ {
+ for (int i = 0; i < cache->used; i++)
+ {
+ struct face *face2 = cache->faces_by_id[i];
+ if (face2 != 0 && face2 != face && face2->fontset == face->fontset)
+ {
+ message ("Freeing fontset %d that's still in use!", face->fontset);
+ goto dont;
+ }
+ }
+ }
+ free_face_fontset (f, face);
+ }
+ dont:
#ifdef HAVE_X_WINDOWS
/* This function might be called with the frame's display
However, that's not a fix; it would leak fontsets, and it's slow.
Will investigate further.
Thanks
Pip
next prev parent reply other threads:[~2024-08-18 12:43 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-18 8:29 bug#72692: Emacs 31.05 (40eecd594ac) get SIGSEGV on Linux (Linux 6.6.45 Kde Wayland) Eval EXEC
2024-08-18 8:58 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-18 9:08 ` Eval EXEC
2024-08-18 9:23 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-18 9:24 ` execvy
2024-08-18 9:34 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-18 9:36 ` execvy
2024-08-18 12:43 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2024-08-18 12:53 ` execvy
2024-08-18 13:35 ` Eli Zaretskii
2024-08-18 13:44 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-18 14:12 ` Eli Zaretskii
2024-08-18 14:59 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-18 15:38 ` Eli Zaretskii
2024-08-18 16:08 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-18 17:55 ` Eli Zaretskii
2024-08-18 18:11 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-18 18:52 ` Eli Zaretskii
2024-08-19 6:17 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-18 17:56 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-18 18:38 ` Eli Zaretskii
2024-08-19 6:28 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-19 11:30 ` Eli Zaretskii
2024-08-19 13:32 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-19 14:35 ` Eli Zaretskii
2024-08-19 15:03 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-19 15:54 ` Eli Zaretskii
2024-08-19 16:34 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-19 16:49 ` Eli Zaretskii
2024-08-24 9:09 ` Eli Zaretskii
2024-08-24 10:04 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-24 10:13 ` Eli Zaretskii
2024-08-25 17:58 ` Juri Linkov
2024-08-25 18:49 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-27 16:31 ` Juri Linkov
2024-08-28 11:50 ` Eli Zaretskii
2024-08-28 16:21 ` Juri Linkov
2024-08-28 17:53 ` Eli Zaretskii
2024-08-28 18:35 ` Juri Linkov
2024-08-28 18:57 ` Eli Zaretskii
2024-08-28 19:02 ` Juri Linkov
2024-08-29 4:36 ` Eli Zaretskii
2024-08-29 10:06 ` Eli Zaretskii
2024-08-29 12:06 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-29 12:26 ` Eli Zaretskii
2024-09-07 7:52 ` Eli Zaretskii
2024-09-08 0:42 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-28 17:56 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-25 18:57 ` Eli Zaretskii
2024-08-26 5:52 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-26 12:39 ` Eli Zaretskii
2024-08-26 19:04 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-26 19:20 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-27 11:47 ` Eli Zaretskii
2024-08-27 19:26 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-28 11:48 ` Eli Zaretskii
2024-08-28 11:58 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-27 11:44 ` Eli Zaretskii
2024-08-27 19:23 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-28 11:41 ` Eli Zaretskii
2024-08-28 12:07 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-28 12:51 ` Eli Zaretskii
2024-08-18 19:24 ` Eli Zaretskii
2024-08-19 6:07 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-19 14:17 ` Eli Zaretskii
2024-08-19 14:44 ` Pip Cet via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877ccegfxj.fsf@protonmail.com \
--to=bug-gnu-emacs@gnu.org \
--cc=72692@debbugs.gnu.org \
--cc=execvy@gmail.com \
--cc=pipcet@protonmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).