From: Eli Zaretskii <eliz@gnu.org>
To: Dmitry Antipov <dmantipov@yandex.ru>
Cc: sva-news@mygooglest.com, 15876@debbugs.gnu.org
Subject: bug#15876: 24.3.50; Highly degraded performance between rev 114715 and 115006
Date: Tue, 03 Dec 2013 15:16:34 +0200 [thread overview]
Message-ID: <83ob4y3wi5.fsf@gnu.org> (raw)
In-Reply-To: <529DAAED.9000504@yandex.ru>
> Date: Tue, 03 Dec 2013 13:57:01 +0400
> From: Dmitry Antipov <dmantipov@yandex.ru>
> CC: sva-news@mygooglest.com, 15876@debbugs.gnu.org
>
> On 12/02/2013 09:52 PM, Eli Zaretskii wrote:
>
> > Thanks. But I think I didn't make myself clear: the issue is not just
> > to see ANY font-spec objects being marked. The issue is with those
> > font-spec objects that are recorded in the font caches that are
> > compacted by compact_font_caches. I don't see any code that makes
> > sure some Lisp object references those caches. Without that, they
> > cannot be possibly marked, and will be GC'ed, right?
>
> Yes, but this is somewhat similar to markers. All markers are chained
> via 'next' pointers into per-buffer lists, but there is no guarantee that
> _each_ marker is referenced in some other way. Instead, the marker _may_
> be referenced from some other object. If this is so, the marker is live.
> Otherwise it's dead.
OK, but the difference is that a buffer is a Lisp object that is
examined by GC, and so its marker list is examined. Where's something
similar for the font caches?
> But Vfontset_table should present on MS-Windows too, isn't it?
It is present, but how is it related to the issue at hand?
> > Anyway, I think we are mis-communicating again: the above Lisp code
> > will cause the breakpoint to fire with i == size, i.e. we will remove
> > the font-entities from the cache. I wanted the opposite: to see at
> > least 1 font-entity that is NOT removed. So my breakpoint condition
> > was "i != size", which means we will NOT drop the font-entity. What I
> > saw is that this condition is never true, which means we remove ALL of
> > the font-entities from the cache.
>
> I understand the problem, but (as of r115362) I'm able to hit the breakpoint
> on the 'break' statement before 'if (i == size)' and found marked font-entity:
>
> ...
> Breakpoint 1, compact_font_cache_entry (entry=...) at ../../trunk/src/alloc.c:5327
> 5327 break;
> (gdb) bt 4
> #0 compact_font_cache_entry (entry=...) at ../../trunk/src/alloc.c:5327
> #1 0x00000000005ea772 in compact_font_caches () at ../../trunk/src/alloc.c:5357
> #2 0x00000000005ead99 in Fgarbage_collect () at ../../trunk/src/alloc.c:5531
> #3 0x00000000005635d8 in maybe_gc () at ../../trunk/src/lisp.h:4462
> (More stack frames follow...)
> (gdb) p i
> $1 = 0
> (gdb) p size
> $2 = 4
> (gdb) p XFONT_ENTITY (AREF (XCDR (obj), i))
> $3 = (struct font_entity *) 0x12fd578
> (gdb) p /x XFONT_ENTITY (AREF (XCDR (obj), i))->header.size & ARRAY_MARK_FLAG
> $4 = 0x8000000000000000 ;;; non-zero ==> mark bit is set
> ...
>
> Since this font-entity is marked, the whole cache entry is not removed.
This never happened to me on Windows.
next prev parent reply other threads:[~2013-12-03 13:16 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-12 15:32 bug#15876: 24.3.50; Highly degraded performance between rev 114715 and 115006 Sebastien Vauban
2013-11-12 17:11 ` Glenn Morris
[not found] ` <wzwqkdfsts.fsf-iW7gFb+/I3LZHJUXO5efmti2O/JbrIOy@public.gmane.org>
2013-11-12 19:13 ` Sebastien Vauban
2013-11-13 11:43 ` Dani Moncayo
[not found] ` <mailman.5954.1384343055.10748.bug-gnu-emacs@gnu.org>
2013-11-13 13:58 ` Sebastien Vauban
[not found] ` <mailman.5925.1384283656.10748.bug-gnu-emacs@gnu.org>
[not found] ` <mailman.5925.1384283656.10748.bug-gnu-emacs-mXXj517/zsQ@public.gmane.org>
2013-11-13 14:04 ` Sebastien Vauban
2013-11-13 16:11 ` Eli Zaretskii
[not found] ` <83fvr01du4.fsf-mXXj517/zsQ@public.gmane.org>
2013-11-13 20:23 ` Sebastien Vauban
2013-11-13 20:35 ` Eli Zaretskii
2013-11-14 3:05 ` Glenn Morris
[not found] ` <jxeh6j1y4x.fsf-iW7gFb+/I3LZHJUXO5efmti2O/JbrIOy@public.gmane.org>
2013-11-14 10:05 ` Sebastien Vauban
[not found] ` <mailman.6048.1384423574.10748.bug-gnu-emacs@gnu.org>
2013-11-14 10:13 ` Sebastien Vauban
2013-11-14 17:04 ` Glenn Morris
[not found] ` <mailman.6048.1384423574.10748.bug-gnu-emacs-mXXj517/zsQ@public.gmane.org>
2013-11-19 22:52 ` Sebastien Vauban
2013-11-20 1:47 ` Stefan Monnier
2013-11-20 3:53 ` Eli Zaretskii
2013-11-20 3:48 ` Eli Zaretskii
[not found] ` <mailman.6579.1384912163.10748.bug-gnu-emacs@gnu.org>
[not found] ` <mailman.6579.1384912163.10748.bug-gnu-emacs-mXXj517/zsQ@public.gmane.org>
2013-11-20 8:48 ` Sebastien Vauban
[not found] ` <mailman.6575.1384901595.10748.bug-gnu-emacs@gnu.org>
[not found] ` <mailman.6575.1384901595.10748.bug-gnu-emacs-mXXj517/zsQ@public.gmane.org>
2013-11-20 22:32 ` Sebastien Vauban
2013-11-21 3:42 ` Eli Zaretskii
[not found] ` <mailman.6739.1385005456.10748.bug-gnu-emacs@gnu.org>
[not found] ` <mailman.6739.1385005456.10748.bug-gnu-emacs-mXXj517/zsQ@public.gmane.org>
2013-11-26 20:52 ` Sebastien Vauban
2013-11-26 21:04 ` Eli Zaretskii
[not found] ` <mailman.7212.1385499914.10748.bug-gnu-emacs@gnu.org>
[not found] ` <mailman.7212.1385499914.10748.bug-gnu-emacs-mXXj517/zsQ@public.gmane.org>
2013-11-29 21:01 ` Sebastien Vauban
2013-12-01 16:31 ` Eli Zaretskii
2013-12-02 10:45 ` Dmitry Antipov
2013-12-02 11:43 ` Dmitry Antipov
2013-12-02 18:00 ` Eli Zaretskii
2013-12-02 17:52 ` Eli Zaretskii
2013-12-03 9:57 ` Dmitry Antipov
2013-12-03 13:16 ` Eli Zaretskii [this message]
2013-12-03 15:09 ` Dmitry Antipov
2013-12-04 17:53 ` Eli Zaretskii
2013-12-05 6:29 ` Dmitry Antipov
2013-12-05 17:36 ` Eli Zaretskii
2013-12-11 6:52 ` Dmitry Antipov
2013-12-11 7:16 ` bug#15876: [SPAM] " Jarek Czekalski
2013-12-11 9:24 ` Dmitry Antipov
2013-12-11 16:28 ` Eli Zaretskii
2013-12-11 18:00 ` Dmitry Antipov
2013-12-11 18:12 ` Eli Zaretskii
2013-12-11 19:50 ` Jan Djärv
2013-12-13 15:22 ` Eli Zaretskii
2013-12-13 16:12 ` Dmitry Antipov
2013-12-13 16:45 ` Stefan Monnier
2013-12-13 18:53 ` Eli Zaretskii
2013-12-13 18:44 ` Eli Zaretskii
2013-12-16 8:05 ` Dmitry Antipov
2013-12-13 16:50 ` Stefan Monnier
2013-12-13 18:55 ` Eli Zaretskii
2013-12-14 2:13 ` Stefan Monnier
2013-12-14 8:47 ` Jan Djärv
[not found] ` <mailman.7746.1385915595.10748.bug-gnu-emacs@gnu.org>
[not found] ` <mailman.7746.1385915595.10748.bug-gnu-emacs-mXXj517/zsQ@public.gmane.org>
2013-12-01 20:20 ` Sebastien Vauban
2013-12-01 20:37 ` Eli Zaretskii
[not found] ` <mailman.7763.1385930292.10748.bug-gnu-emacs@gnu.org>
[not found] ` <mailman.7763.1385930292.10748.bug-gnu-emacs-mXXj517/zsQ@public.gmane.org>
2013-12-01 21:51 ` Sebastien Vauban
2013-12-02 3:45 ` Eli Zaretskii
[not found] ` <mailman.7786.1385955973.10748.bug-gnu-emacs@gnu.org>
[not found] ` <mailman.7786.1385955973.10748.bug-gnu-emacs-mXXj517/zsQ@public.gmane.org>
2013-12-02 9:29 ` Sebastien Vauban
2013-11-13 16:52 ` Stefan Monnier
2013-11-14 11:03 ` Jarek Czekalski
2013-11-14 16:35 ` 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=83ob4y3wi5.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=15876@debbugs.gnu.org \
--cc=dmantipov@yandex.ru \
--cc=sva-news@mygooglest.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.