Subject: Re: bug#43700: 28.0.50; Crash creating a second frame

From: Andy Moreton <[email-masked]>
Date: Sat, 3 Oct 2020 14:40:47 +0100

On 03/10/2020 13:45, Eli Zaretskii wrote:
>> Cc: [email-masked]
>> From: Andy Moreton <[email-masked]>
>> 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.

No - watchpoints seem to be completely broken in this build of gdb: 
hardware watchpoints don't work, and if software watchpoints work then I 
do not have the patience to wait for hours for them to fire.

> 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.

True, but not much use without working watchpoints.

     AndyM