Cc: 43700@debbugs.gnu.org
From: Andy Moreton <andrewjmoreton@gmail.com>
Date: Sat, 3 Oct 2020 13:26:09 +0100
(gdb) watch -l f->face_cache->used if f->face_cache->used == 0
Then produce a backtrace from any time this watchpoint fires. That
should show us the culprit.
The watchpoint does not fire before the segfault, so there is clearly
something wrong with gdb on this platform :-(
Does the watchpoint fire if you remove the condition? IOW, do this:
(gdb) watch -l f->face_cache->used
If this works, then you should see also the events where faces are
added, which will show the 'used' count go up.
Another possibility is that the face cache gets reset not for the new
frame being created, but for the other frame. You can tell by
comparing the value of 'f' at the point where init_frame_faces is
called and at the segfault point. If this is what happens, then we
will need a slightly more sophisticated method of setting the
watchpoint.