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

From: Eli Zaretskii <[email-masked]>
Date: Tue, 01 Sep 2015 22:37:16 +0300

> Date: Tue, 1 Sep 2015 18:52:44 +0000
> From: Pip Cet <[email-masked]>
> Cc: [email-masked]
> 
>     I see the problematic face always has face ID of 18, and the 'used'
>     field is always 15 when the segfault strikes. So I guess the next
>     step is to make the breakpoint in cache_face conditional on i being
>     18,
> 
> i is used in two different ways in that function, as a face hash and as an
> index into faces_by_id. I assume you mean the latter?

Yes.

>     and then see whether c->used is set to 19 during that call to
>     cache_face. If it does, then a watchpoint (by location) on c->used
>     should show which code makes the value smaller.
> 
> So I wrote a perl script to set a watchpoint on c->used whenever we allocate a
> new face cache c in make_face_cache, and clear the watchpoint when we hit
> free_face_cache. Output attached, but do let me know what else you would like
> watched. I think that has all the information your approach would have given
> us.

Sounds like the face ID of 18 is "remembered" somewhere, and not
"forgotten" when the face cache is free'd?