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

From: martin rudalics <[email-masked]>
Date: Thu, 1 Apr 2021 09:14:06 +0200

>>> Does it start with emacs -Q?
 >>
 >> Nope.  It fails.

Strange.  I have no problems running the changeset with ...

GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw3d scroll bars)
  of 2021-04-01 built on restno
Repository revision: b4a125e5ad1de3eb770dff12017f1e0658c4c6a2
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description: Debian GNU/Linux 10 (buster)

Configured using:
  'configure --with-gif=ifavailable --with-tiff=ifavailable
  --with-gnutls=no --without-pop --enable-gcc-warnings=warn-only
  --with-x-toolkit=lucid --enable-checking=yes
  --enable-check-lisp-object-type=yes 'CFLAGS=-O0 -g3 -no-pie''

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GSETTINGS HARFBUZZ JPEG LIBSELINUX MODULES
NOTIFY INOTIFY PDUMPER PNG SOUND THREADS TOOLKIT_SCROLL_BARS X11 XAW3D
XDBE XIM XPM LUCID ZLIB

... which is almost yours but for a few missing features.

 > Also verified that using with the previous changeset with
 > --enable-checking=yes still works.

Which of the two additions is responsible?  Try to remove or comment out
either the two lines in buffer.c

   if (!b->base_buffer)
     eassert (b->window_count == 0);

or all four lines containing replace_buffer_in_windows_safely_count in
window.c, as there are

static int replace_buffer_in_windows_safely_count;

		replace_buffer_in_windows_safely_count += 1;

   replace_buffer_in_windows_safely_count = 0;

   eassert (count == replace_buffer_in_windows_safely_count);

Otherwise I'm clueless.  Maybe Eli has an idea.

martin