Subject: Re: bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs

From: Eli Zaretskii <[email-masked]>
Date: Tue, 30 Mar 2021 17:48:01 +0300

> Cc: Eli Zaretskii <[email-masked]>, "[email-masked]" <[email-masked]>,
>  "[email-masked]" <[email-masked]>,
>  "[email-masked]" <[email-masked]>
> From: martin rudalics <[email-masked]>
> Date: Tue, 30 Mar 2021 16:36:50 +0200
> 
>  > The breakpoint I put on the error() clause added to buffer.c triggered
>  > again in the new build without touching any of the easserts.
> 
> And I thought I was overdoing with them.  This error is a bit too elusive
> for my brain.

Maybe instead of trying to find the exact culprit, we should simply
protect this code:

      /* Make sure the current window's buffer is selected.  */
      set_buffer_internal (XBUFFER (XWINDOW (selected_window)->contents));

from selecting a dead buffer?  For example, by using
other_buffer_safely if the selected-window's buffer is dead.  After
all the code in question, viz.:

      (gnus-kill-buffer (current-buffer))

is already quite crazy: who in their right mind kills the current
buffer in the middle of a Lisp program?  What were they thinking?