all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: "Gerd Möllmann" <gerd.moellmann@gmail.com>
Cc: luangruo@yahoo.com, 58334@debbugs.gnu.org
Subject: bug#58334: 29.0.50; ASAN heap use after free in gui_produce_glyphs
Date: Fri, 07 Oct 2022 14:44:02 +0300	[thread overview]
Message-ID: <83h70foo3h.fsf@gnu.org> (raw)
In-Reply-To: <m2zge7zxb1.fsf@Mini.fritz.box> (message from Gerd Möllmann on Fri, 07 Oct 2022 13:29:38 +0200)

> From: Gerd Möllmann <gerd.moellmann@gmail.com>
> Cc: luangruo@yahoo.com,  58334@debbugs.gnu.org
> Date: Fri, 07 Oct 2022 13:29:38 +0200
> 
> If we don't change some other shared state, then we're safe if we
> prevent freeing faces?  That's would be good.

Yes, I think so.  But preventing freeing the faces is a losing game,
in the long run, because we cannot prevent that forever without
adversely affecting the Emacs memory footprint.

I think a better way is to re-generate the faces when we discover they
were freed.  This is easy for the basic faces, but fundamentally
impossible for non-basic ones.  That's why I asked you earlier whether
the offending face was a basic one.  However, I think we can rely on
inhibit_free_realized_faces to avoid freeing non-basic faces, if we
use that flag in strategic places.  Basically, non-basic faces are
realized and cached by redisplay itself, so theoretically we should be
able to prevent their freeing (and perhaps we already have that in
place, see redisplay_internal).

So I would recommend to fix FACE_FROM_ID to re-generate the basic
faces if needed, on the assumption that the cases where we have
problems with using face ID are limited to basic faces.  If, after
that, we will find cases with non-basic faces, I'd first look for more
opportunities to use inhibit_free_realized_faces.

One other thing is that inhibit_free_realized_faces is a boolean, so
if nesting is possible, it cannot support such nesting; we'd need a
reference count instead.






  reply	other threads:[~2022-10-07 11:44 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-06 15:03 bug#58334: 29.0.50; ASAN heap use after free in gui_produce_glyphs Gerd Möllmann
2022-10-06 16:00 ` Eli Zaretskii
2022-10-06 18:01   ` Gerd Möllmann
2022-10-06 18:30     ` Eli Zaretskii
2022-10-06 18:36       ` Gerd Möllmann
2022-10-07 12:01         ` Eli Zaretskii
2022-10-07 12:03           ` Gerd Möllmann
2022-10-07 12:06             ` Eli Zaretskii
2022-10-07 12:08               ` Gerd Möllmann
2022-10-07 12:12                 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07 12:16                   ` Eli Zaretskii
2022-10-07 12:23                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07 12:14                 ` Eli Zaretskii
2022-10-07 12:34                   ` Gerd Möllmann
2022-10-07  0:37     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07  5:06       ` Gerd Möllmann
2022-10-07  7:12         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07  7:20           ` Gerd Möllmann
2022-10-07  0:46 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07  5:23   ` Gerd Möllmann
2022-10-07  7:03   ` Eli Zaretskii
2022-10-07  7:20     ` Gerd Möllmann
2022-10-07  8:07       ` Gerd Möllmann
2022-10-07  8:36         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07  8:54           ` Gerd Möllmann
2022-10-07 10:28             ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07 11:11               ` Gerd Möllmann
2022-10-07 11:19                 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07 11:34                   ` Eli Zaretskii
2022-10-07 11:38                   ` Gerd Möllmann
2022-10-07 11:29               ` Eli Zaretskii
2022-10-07 12:16                 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07 12:27                   ` Eli Zaretskii
2022-10-07 11:19             ` Eli Zaretskii
2022-10-07 11:34               ` Gerd Möllmann
2022-10-07 11:13           ` Eli Zaretskii
2022-10-07 11:08         ` Eli Zaretskii
2022-10-07 11:29           ` Gerd Möllmann
2022-10-07 11:44             ` Eli Zaretskii [this message]
2022-10-07 12:01               ` Gerd Möllmann
2022-10-07 12:05                 ` Eli Zaretskii
2022-10-07 12:14                 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07 12:17                   ` Gerd Möllmann
2022-10-07 12:22                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-07 12:36                       ` Gerd Möllmann
2022-10-08  6:58 ` Gerd Möllmann
2022-10-08  7:59   ` Eli Zaretskii

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83h70foo3h.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=58334@debbugs.gnu.org \
    --cc=gerd.moellmann@gmail.com \
    --cc=luangruo@yahoo.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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.