Subject: Re: bug#21394: 25.0.50; Segfault when displaying unprintable character in echo area while frames are being created

From: Eli Zaretskii <[email-masked]>
Date: Wed, 02 Sep 2015 18:16:22 +0300

> Date: Tue, 1 Sep 2015 20:19:58 +0000
> From: Pip Cet <[email-masked]>
> Cc: [email-masked]
> 
> That caches a face id in last_escape_glyph_merged_face_id, which is cleared
> only in redisplay_internal(). But message() doesn't call redisplay_internal(),
> it calls try_window() directly (xdisp.c:10687) (and resize_window before that,
> which blows up).

I think you are right, thanks.

> This patch appears, so far, to run without a segfault

Can you please verify that when the (unmodified) code does segfault,
the offending face ID is indeed stored in
last_escape_glyph_merged_face_id?  I'd like to be sure we have really
found the source of that face ID.

Also, I think that those 4 lines of code should be in a function, and
that function should also be called from free_realized_faces, where we
set c->used to zero.  I couldn't convince myself that
free_realized_faces could never be called while redisplay runs (and
even if now it isn't, I'd like us to be more future-proof in this
respect).