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

From: Eli Zaretskii <[email-masked]>
Date: Fri, 19 Mar 2021 10:19:55 +0200

> Cc: [email-masked], [email-masked], [email-masked]
> From: martin rudalics <[email-masked]>
> Date: Fri, 19 Mar 2021 09:15:07 +0100
> 
>  >>> So the selected window's buffer was killed.  How is that possible?
>  >>
>  >> Perhaps during run_window_change_functions.
>  >
>  > Something like that, yes.  But I don't understand how that can happen
>  > technically: kill-buffer selects another buffer when killing the
>  > current one.  So how was that buffer killed, and yet stayed current?
> 
> It's a problem of any hook we run during redisplay:
> 
> (1) Redisplay chooses a window as the selected and its buffer as the
>      current one.
> 
> (2) Lisp code in a hook deletes that window and/or its buffer.
> 
> (3) Redisplay continues to work on that window and/or its buffer as if
>      it were still alive.

Sorry, I don't understand: when kill-buffer kills the current buffer,
it replaces it with another one.  Are you saying we have a way of
killing buffers that bypasses kill-buffer? if so, can you describe how
that can be done?

Or what else am I missing?