[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: xassert in get_glyph_face_and_encoding
From: |
Kim F. Storm |
Subject: |
Re: xassert in get_glyph_face_and_encoding |
Date: |
Mon, 07 Mar 2005 22:54:17 +0100 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) |
Juri Linkov <address@hidden> writes:
> The following xassert caused abort() in get_glyph_face_and_encoding:
>
> xassert (face != NULL);
>
> where face was NULL due to
>
> face = FACE_FROM_ID (f, glyph->face_id);
>
> which returns NULL because glyph->face_id is greater
> than f->face_cache->used.
This sounds like an instance of the following entry in FOR-RELEASE:
* FATAL ERRORS
** Investigate face cache related crash.
Indications: Face cache seems to have been cleared, but
redisplay uses an invalidated face_id with FACE_FROM_ID
which then returns a NULL pointer. Said to happen with
isearch faces.
Do you have a way to reproduce this?
If so, could you try to put a breakpoint on clear_face_cache (just before
you trigger the crash) to see why it is called during redisplay.
If you still have the trap in gdb, what is the value of clear_face_cache_count
I have installed a change to redisplay_internal which delays the clearing of the
face cache until redisplay has completed; previously, it could be done in
the middle of redisplay, which might be the cause of this crash.
--
Kim F. Storm <address@hidden> http://www.cua.dk