GNU bug report logs - #43700
28.0.50; Crash creating a second frame

Previous Next

Package: emacs;

Reported by: Andy Moreton <andrewjmoreton <at> gmail.com>

Date: Tue, 29 Sep 2020 10:48:01 UTC

Severity: normal

Found in version 28.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #32 received at 43700 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Andy Moreton <andrewjmoreton <at> gmail.com>
Cc: 43700 <at> debbugs.gnu.org
Subject: Re: bug#43700: 28.0.50; Crash creating a second frame
Date: Sat, 03 Oct 2020 11:16:18 +0300
> Cc: 43700 <at> debbugs.gnu.org
> From: Andy Moreton <andrewjmoreton <at> gmail.com>
> Date: Sat, 3 Oct 2020 00:07:11 +0100
> 
> > So the next question is: how come the default face is not available?
> > When that breakpoint breaks, what is the value of
> > 
> >     FRAME_FACE_CACHE (f)->used
> > 
> > Is it zero, per chance?  If so, I'd be interested to understand which
> > code resets the frame's face cache in this recipe.
> 
> Yes: let me know what else you would like to look at.

OK.  x-create-frame in w32fns.c initializes the basic faces of the
frame, here:

  /* Init faces first since we need the frame's column width/line
     height in various occasions.  */
  init_frame_faces (f);

I suggest to put a breakpoint after that function returns, and when it
breaks for the second frame you are creating, put a watchpoint on the
frame's face cache, like this:

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

Thanks.




This bug report was last modified 4 years and 282 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.