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

From: Michael Welsh Duggan <[email-masked]>
Date: Wed, 24 Mar 2021 22:19:35 -0400

martin rudalics <[email-masked]> writes:

>>> The attached one should make more sense.  Please use that.
>>
>> I did, and the SEGFAULT happened fairly shortly afterward.  The error
>> did not trigger, so the cause is still unknown.  I'll keep the gdb
>> session around, but that backtrace is pretty much the same.
>
> I'm not surprised.  The check for `replace-buffer-in-windows' does
> pretty much the same as Eli's approach.  You just don't have to run
> Emacs in the debugger in order to use it.
>
> Maybe try now:
>
> diff --git a/src/buffer.c b/src/buffer.c
> index 8e33162989..9ca5731bcf 100644
> --- a/src/buffer.c
> +++ b/src/buffer.c
> @@ -2151,6 +2151,9 @@ set_buffer_internal_1 (register struct buffer *b)
>
>    BUFFER_CHECK_INDIRECTION (b);
>
> +  if (!BUFFER_LIVE_P (b))
> +    error ("Selecting deleted buffer");
> +
>    old_buf = current_buffer;
>    current_buffer = b;
>    last_known_column_point = -1;   /* Invalidate indentation cache.  */

Okay.  Building now and will run until...something happens?  Should I be
expecting an Emacs error from this?  Should I breakpoint the error()
clause?

-- 
Michael Welsh Duggan
([email-masked])