From: Dima Kogan <dima@secretsauce.net>
To: Dmitry Antipov <dmantipov@yandex.ru>
Cc: 21556@debbugs.gnu.org
Subject: bug#21556: 25.0.50; Memory leak in emacs -Q with lucid (font)
Date: Thu, 01 Oct 2015 02:42:32 -0700 [thread overview]
Message-ID: <87612q3oxj.fsf@secretsauce.net> (raw)
In-Reply-To: <560BB690.3020804@yandex.ru>
Dmitry Antipov <dmantipov@yandex.ru> writes:
> On 09/29/2015 12:28 PM, Dima Kogan wrote:
>
>> I found and fixed the bug, and the patch is attached. The issue was
>> that the compaction code wasn't checking all the right lisp objects
>> for the marks. The font entities were storing a list of fonts, and
>> this list had to be traversed, looking for the marks.
>
> In general, this patch hits the case where the font object is marked but the
> corresponding font entity is not; but is that legal? IIRC Emacs asks the font
> driver to find a font described by font spec, and returned object is a font entity,
> which is a list of font objects plus some extra stuff. Thus, there should be
> no "free-floating" font objects, i.e. for each font object, there should be
> at least one font entity object which references that font. IOW, having
> marked font object without marked font entity looks like GC mark bug for me.
OK. The target of the patch is as you describe: fonts marked inside an
unmarked entity. I'm observing this situation every time from an emacs
-Q. The font is marked inside mark_face_cache(), which looks like this:
NO_INLINE /* To reduce stack depth in mark_object. */
static void
mark_face_cache (struct face_cache *c)
{
if (c)
{
int i, j;
for (i = 0; i < c->used; ++i)
{
struct face *face = FACE_FROM_ID (c->f, i);
if (face)
{
if (face->font && !VECTOR_MARKED_P (face->font))
mark_vectorlike ((struct Lisp_Vector *) face->font);
for (j = 0; j < LFACE_VECTOR_SIZE; ++j)
mark_object (face->lface[j]);
}
}
}
}
Clearly in this function we mark the font. We don't obviously mark the
containing entity, unless it's one of the face->lface[] elements. If
even in this case we're supposed to be marking the entity, where would
this be?
next prev parent reply other threads:[~2015-10-01 9:42 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-25 0:05 bug#21556: 25.0.50; Memory leak in emacs -Q with lucid (font) Dima Kogan
2015-09-25 6:45 ` Eli Zaretskii
2015-09-25 6:57 ` Dima Kogan
2015-09-25 8:44 ` Eli Zaretskii
2015-09-25 8:13 ` Dima Kogan
2015-09-25 8:49 ` Eli Zaretskii
2015-09-25 9:10 ` Eli Zaretskii
2015-09-25 9:30 ` Dima Kogan
2015-09-25 9:45 ` Eli Zaretskii
2015-09-25 10:03 ` Eli Zaretskii
[not found] ` <83y4ftfbjw.fsf@gnu.org>
2015-09-27 7:56 ` K. Handa
2015-09-27 8:09 ` Eli Zaretskii
2015-09-28 9:22 ` Dima Kogan
2015-09-28 9:58 ` Eli Zaretskii
2015-09-29 9:28 ` Dima Kogan
2015-09-30 7:00 ` Eli Zaretskii
2015-09-30 10:16 ` Dmitry Antipov
2015-10-01 9:42 ` Dima Kogan [this message]
2015-10-01 13:27 ` Dmitry Antipov
2015-10-01 18:50 ` Dima Kogan
2015-10-02 5:04 ` Dmitry Antipov
2015-10-02 18:56 ` Dima Kogan
2015-10-29 22:51 ` Dima Kogan
2015-10-30 14:20 ` Eli Zaretskii
2015-10-30 19:17 ` Dima Kogan
2015-10-30 20:38 ` Eli Zaretskii
2015-10-30 20:50 ` Dima Kogan
2015-11-09 2:55 ` Dima Kogan
2015-11-09 16:38 ` Eli Zaretskii
2019-11-17 6:34 ` Lars Ingebrigtsen
2019-11-17 15:38 ` Eli Zaretskii
2019-11-17 21:27 ` Dima Kogan
2019-11-18 8:13 ` Lars Ingebrigtsen
2015-09-29 10:05 ` K. Handa
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=87612q3oxj.fsf@secretsauce.net \
--to=dima@secretsauce.net \
--cc=21556@debbugs.gnu.org \
--cc=dmantipov@yandex.ru \
/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.