Subject: Re: bug#75629: 30.0.93; restart-emacs does not reliably restart Emacs

From: Eli Zaretskii <[email-masked]>
Date: Thu, 30 Jan 2025 17:35:22 +0200

> From: Daniel Mendler <[email-masked]>
> Cc: [email-masked]
> Date: Thu, 30 Jan 2025 14:53:01 +0100
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> Date: Fri, 17 Jan 2025 12:15:22 +0100
> >> From:  Daniel Mendler via "Bug reports for GNU Emacs,
> >>  the Swiss army knife of text editors" <[email-masked]>
> >> 
> >> I've found the following backtrace in my .xsession-errors file. It seems
> >> that Emacs is somehow crashing during shutdown. So maybe the problem is
> >> not really about restart, but about some redisplay problem happening
> >> during shutdown.
> >> 
> >> X protocol error: BadDrawable (invalid Pixmap or Window parameter) on protocol request 62
> >> Serial no: 6422
> >> Failing resource ID (if any): 0x60014c
> >> Minor code: 0
> >> This is a bug!  Please report this to [email-masked]!
> >
> > So please run Emacs under GDB, and in X synchronous mode (see
> > etc/DEBUG for details), and when it crashes during shutdown, show the
> > full backtrace produced by GDB (the "thread apply all bt" command when
> > GDB kicks in).
> >
> > I think I understand what causes this problem, but more detailed
> > backtrace is needed to make sure my understanding is correct and the
> > solution is right.
> 
> I am sorry, but I failed to obtain a more detailed backtrace. The
> problem does not seem to occur at all with (x-synchronize t). Also I
> have difficulties running gdb from the .xsession. In my case, Emacs is
> started by X, since it acts as window manager. When Emacs crashes after
> M-x restart-emacs (without x-synchronize), I cannot access the gdb repl.

Can you use the recipe in the node "Crashing" of the Emacs manual to
produce a readable backtrace from what you have in .xsession-errors?
If thyat succeeds, please post the backtreace.

And maybe Po Lu (CC'ed) has some advice how to debug this further?  Or
why redisplay_preserve_echo_area signals a BadDrawable error in this
case?  Can we do something (like set some C variable or bind some Lisp
variable) to prevent fatal X errors in redisplay when we are shutting
down Emacs?