unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
@ 2021-03-18 15:39 Michael Welsh Duggan
  2021-03-18 15:42 ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-18 15:39 UTC (permalink / raw)
  To: 47244

I have managed to catch a SEGFAULT in a long-running Emacs in the
debugger.  I've been unable to recreate this SEGFAULT on demand, but it
seems to be happening when I am attempting to "reset" gnus after
switching my work VPN on/off.  I will keep the gdb session up an running
in case there is some more that can be done with this.


In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0)
 of 2021-03-07 built on miko
Repository revision: c63d2ef59c511c1c48c69a202907b7edfcbb19b3
Repository branch: md5i
Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
System Description: Debian GNU/Linux bullseye/sid

Configured using:
 'configure --without-toolkit-scroll-bars --with-x-toolkit=lucid
 'CFLAGS=-O0 -ggdb3''

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SOUND THREADS TIFF X11 XAW3D XDBE XIM XPM LUCID
ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

<#part type="text/plain" filename="~/src/emacs/build/src/gdb.txt" disposition=inline>
<#/part>

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 15:39 bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs Michael Welsh Duggan
@ 2021-03-18 15:42 ` Michael Welsh Duggan
  2021-03-18 15:49   ` Michael Welsh Duggan
  2021-03-18 16:02   ` Eli Zaretskii
  0 siblings, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-18 15:42 UTC (permalink / raw)
  To: 47244

[-- Attachment #1: Type: text/plain, Size: 1157 bytes --]

Re-sent with actual attachment.

I have managed to catch a SEGFAULT in a long-running Emacs in the
debugger.  I've been unable to recreate this SEGFAULT on demand, but it
seems to be happening when I am attempting to "reset" gnus after
switching my work VPN on/off.  I will keep the gdb session up an running
in case there is some more that can be done with this.


In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0)
 of 2021-03-07 built on miko
Repository revision: c63d2ef59c511c1c48c69a202907b7edfcbb19b3
Repository branch: md5i
Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
System Description: Debian GNU/Linux bullseye/sid

Configured using:
 'configure --without-toolkit-scroll-bars --with-x-toolkit=lucid
 'CFLAGS=-O0 -ggdb3''

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SOUND THREADS TIFF X11 XAW3D XDBE XIM XPM LUCID
ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix


[-- Attachment #2: gdb.txt --]
[-- Type: text/plain, Size: 5908 bytes --]

#0  0x00005555555e1a61 in redisplay_internal ()
    at ../../master/src/xdisp.c:15789
        w = 0x555556b96340
        sw = 0x555556b96340
        fr = 0x555556b8ca50
        pending = false
        must_finish = true
        match_p = true
        tlbufpos = {
          charpos = 127,
          bytepos = 127
        }
        tlendpos = {
          charpos = 0,
          bytepos = 0
        }
        number_of_visible_frames = 4
        count = 3
        sf = 0x555556b8ca50
        polling_stopped_here = false
        tail = XIL(0)
        frame = XIL(0x555555d52afd)
        hscroll_retries = 0
        garbaged_frame_retries = 0
        consider_all_windows_p = false
        update_miniwindow_p = true
#1  0x00005555555e061e in redisplay () at ../../master/src/xdisp.c:15245
#2  0x00005555556e9991 in read_char
    (commandflag=1, map=XIL(0x555558a3e483), prev_event=XIL(0), used_mouse_menu=0x7fffffffdabf, end_time=0x0) at ../../master/src/keyboard.c:2496
        echo_current = false
        c = XIL(0)
        jmpcount = 93824999976800
        local_getcjmp = {{
            __jmpbuf = {93825000009536, 0, 93824999976800, 0, 0, 140737488345232, 93824994486337, 93825051609157},
            __mask_was_saved = -10032,
            __saved_mask = {
              __val = {93824994503322, 140737259960288, 140737259960240, 0, 46912259983440, 0, 140737259960288, 93824999976800, 0, 0, 140737488345344, 93824993977890, 4066572208, 93824999976800, 0, 0}
            }
          }}
        save_jump = {{
            __jmpbuf = {0, 32736, 0, 140737266320856, 0, 0, 93825051609152, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {93825000009536, 93824994486337, 0, 140737488345184, 93824994507922, 140737266320856, 12884891664, 0, 32736, 93825051609152, 140737266320856, 93824995128912, 51539607552, 93825051609157, 93825051609152, 93824995129355}
            }
          }}
        tem = XIL(0)
        save = make_fixnum(23456248494472)
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x555555dea0a0
#3  0x00005555556f86dc in read_key_sequence
    (keybuf=0x7fffffffdcc0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false)
    at ../../master/src/keyboard.c:9484
        interrupted_kboard = 0x555555dea0a0
        interrupted_frame = 0x555556b8ca50
        key = make_fixnum(23456248516455)
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = XIL(0x555557286ce0)
        count = 3
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x555558a3e483)
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {
          parent = XIL(0x5555568a0323),
          map = XIL(0x5555568a0323),
          start = 0,
          end = 0
        }
        keytran = {
          parent = XIL(0x7ffff2c27c4b),
          map = XIL(0x7ffff2c27c4b),
          start = 0,
          end = 0
        }
        indec = {
          parent = XIL(0x5555568a0353),
          map = XIL(0x5555568a0353),
          start = 0,
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        dummyflag = false
        starting_buffer = 0x555558df4840
        fake_prefixed_keys = XIL(0)
        first_event = XIL(0)
        second_event = XIL(0)
#4  0x00005555556e6c13 in command_loop_1 () at ../../master/src/keyboard.c:1353
        cmd = XIL(0x7fffffffde10)
        keybuf = {XIL(0), XIL(0x7ffff2c27bf5), XIL(0x555555765719), XIL(0x1655540), XIL(0x7fffffffdd70), XIL(0x55555579dc50), XIL(0x1655540), XIL(0x7ffff257b4c4), XIL(0x555558df8683), XIL(0x7ffff2c27bf5), XIL(0x7ffff2c27bf5), XIL(0x555558df8683), XIL(0x7ffff257b4c4), XIL(0x1655540), XIL(0), XIL(0), XIL(0x555555cb6f60), XIL(0), XIL(0), XIL(0x7fffffffdd70), XIL(0x5555556e3b34), XIL(0xffffddc0), XIL(0x555555cb6f60), XIL(0), XIL(0), XIL(0x7fffffffdda0), XIL(0x555555797748), make_fixnum(0), XIL(0x7fffffffdde0), XIL(0x55555579ae39)}
        i = 1
        prev_modiff = 0
        prev_buffer = 0x0
        already_adjusted = false
#5  0x000055555579aa34 in internal_condition_case (bfun=0x5555556e67cd <command_loop_1>, handlers=XIL(0x90), hfun=0x5555556e5f69 <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555556e3b34)
        c = 0x555555db1380
#6  0x00005555556e6495 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#7  0x000055555579a242 in internal_catch (tag=XIL(0xd950), func=0x5555556e6468 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd950)
        c = 0x555555d9a6f0
#8  0x00005555556e6434 in command_loop () at ../../master/src/keyboard.c:1073
#9  0x00005555556e5b3a in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf50)
#10 0x00005555556e5cbd in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#11 0x00005555556e26ea in main (argc=2, argv=0x7fffffffe1b8) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)

[-- Attachment #3: Type: text/plain, Size: 42 bytes --]


-- 
Michael Welsh Duggan
(md5i@md5i.com)

^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 15:42 ` Michael Welsh Duggan
@ 2021-03-18 15:49   ` Michael Welsh Duggan
  2021-03-18 16:02     ` Andreas Schwab
  2021-03-18 16:02   ` Eli Zaretskii
  1 sibling, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-18 15:49 UTC (permalink / raw)
  To: 47244

Actual debugger SIGSEGV message:

Thread 2.1 "emacs" received signal SIGSEGV, Segmentation fault.
0x00005555555e1a61 in redisplay_internal () at ../../master/src/xdisp.c:15789
15789             && FETCH_BYTE (BYTEPOS (tlbufpos) - 1) != '\n'


Also, this bit is probably important:

(gdb) p GPT_BYTE
$1 = 127
(gdb) p GAP_SIZE
$2 = 1896
(gdb) p BEG_ADDR
$3 = (unsigned char *) 0x0

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 15:42 ` Michael Welsh Duggan
  2021-03-18 15:49   ` Michael Welsh Duggan
@ 2021-03-18 16:02   ` Eli Zaretskii
  2021-03-18 16:27     ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-18 16:02 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: 47244

> From: Michael Welsh Duggan <md5i@md5i.com>
> Date: Thu, 18 Mar 2021 11:42:19 -0400
> 
> I have managed to catch a SEGFAULT in a long-running Emacs in the
> debugger.  I've been unable to recreate this SEGFAULT on demand, but it
> seems to be happening when I am attempting to "reset" gnus after
> switching my work VPN on/off.  I will keep the gdb session up an running
> in case there is some more that can be done with this.
> 
> 
> In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0)
>  of 2021-03-07 built on miko
> Repository revision: c63d2ef59c511c1c48c69a202907b7edfcbb19b3
> Repository branch: md5i

This is a build from several days ago, and on some branch that is
probably a local branch.  Do the line numbers still correspond to
what's on the current master?

> #0  0x00005555555e1a61 in redisplay_internal ()
>     at ../../master/src/xdisp.c:15789

The line number here corresponds to this in the current sources:

      if (CHARPOS (tlbufpos) > BEGV
	  && FETCH_BYTE (BYTEPOS (tlbufpos) - 1) != '\n'  <<<<<<<<<<<<<<<<<
	  && (CHARPOS (tlbufpos) == ZV
	      || FETCH_BYTE (BYTEPOS (tlbufpos)) == '\n'))

Is that so in your sources as well?  If so, I'm not sure I understand
how this could segfault, given that tlbufpos is 127.  What is the
value of ZV?  And what does the following produce:

  (gdb) p current_buffer->text->beg





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 15:49   ` Michael Welsh Duggan
@ 2021-03-18 16:02     ` Andreas Schwab
  0 siblings, 0 replies; 160+ messages in thread
From: Andreas Schwab @ 2021-03-18 16:02 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: 47244

On Mär 18 2021, Michael Welsh Duggan wrote:

> (gdb) p BEG_ADDR
> $3 = (unsigned char *) 0x0

Looks like a dead buffer.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 16:02   ` Eli Zaretskii
@ 2021-03-18 16:27     ` Michael Welsh Duggan
  2021-03-18 16:45       ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-18 16:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 47244

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <md5i@md5i.com>
>> Date: Thu, 18 Mar 2021 11:42:19 -0400
>> 
>> I have managed to catch a SEGFAULT in a long-running Emacs in the
>> debugger.  I've been unable to recreate this SEGFAULT on demand, but it
>> seems to be happening when I am attempting to "reset" gnus after
>> switching my work VPN on/off.  I will keep the gdb session up an running
>> in case there is some more that can be done with this.
>> 
>> 
>> In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
>> version 1.16.0)
>>  of 2021-03-07 built on miko
>> Repository revision: c63d2ef59c511c1c48c69a202907b7edfcbb19b3
>> Repository branch: md5i
>
> This is a build from several days ago, and on some branch that is
> probably a local branch.  Do the line numbers still correspond to
> what's on the current master?

They do match.  It is a branch, but the changed things in the branch are
extremely unlikely to have caused this problem.  (One is a patch to gnus
summary-producing that changes how thread sorting is ordered, the other
is a patch to .gdbinit that handles running gdb on emacs when running
with the --daemon option.)  I changed the Repository revision field to
match the version of Emacs I was using.  It's several days old because
it took several days before I was able to re-trigger this problem.

>> #0  0x00005555555e1a61 in redisplay_internal ()
>>     at ../../master/src/xdisp.c:15789
>
> The line number here corresponds to this in the current sources:
>
>       if (CHARPOS (tlbufpos) > BEGV
> 	  && FETCH_BYTE (BYTEPOS (tlbufpos) - 1) != '\n'  <<<<<<<<<<<<<<<<<
> 	  && (CHARPOS (tlbufpos) == ZV
> 	      || FETCH_BYTE (BYTEPOS (tlbufpos)) == '\n'))
>
> Is that so in your sources as well?  If so, I'm not sure I understand
> how this could segfault, given that tlbufpos is 127.  What is the
> value of ZV?  And what does the following produce:
>
>   (gdb) p current_buffer->text->beg

(gdb) p ZV
$6 = 127
(gdb) p current_buffer->text->beg
$7 = (unsigned char *) 0x0

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 16:27     ` Michael Welsh Duggan
@ 2021-03-18 16:45       ` Eli Zaretskii
  2021-03-18 16:54         ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-18 16:45 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: 47244

> From: Michael Welsh Duggan <mwd@md5i.com>
> Cc: 47244@debbugs.gnu.org
> Date: Thu, 18 Mar 2021 12:27:13 -0400
> 
> (gdb) p current_buffer->text->beg
> $7 = (unsigned char *) 0x0

That explains the crash.  What does this display:

  (gdb) source /path/to/emacs/src/.gdbinit
  (gdb) p current_buffer->name_
  (gdb) xstring

And, given the name of the buffer this will display, what can you tell
about that buffer?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 16:45       ` Eli Zaretskii
@ 2021-03-18 16:54         ` Michael Welsh Duggan
  2021-03-18 18:41           ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-18 16:54 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Michael Welsh Duggan, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@md5i.com>
>> Cc: 47244@debbugs.gnu.org
>> Date: Thu, 18 Mar 2021 12:27:13 -0400
>> 
>> (gdb) p current_buffer->text->beg
>> $7 = (unsigned char *) 0x0
>
> That explains the crash.  What does this display:
>
>   (gdb) source /path/to/emacs/src/.gdbinit
>   (gdb) p current_buffer->name_
>   (gdb) xstring
>
> And, given the name of the buffer this will display, what can you tell
> about that buffer?

(gdb) p current_buffer->name_
$8 = XIL(0)
(gdb) xstring
$9 = (struct Lisp_String *) 0x0
"DEAD"

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 16:54         ` Michael Welsh Duggan
@ 2021-03-18 18:41           ` Eli Zaretskii
  2021-03-18 18:54             ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-18 18:41 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>         "47244@debbugs.gnu.org"
>  <47244@debbugs.gnu.org>
> Date: Thu, 18 Mar 2021 12:54:20 -0400
> 
> (gdb) p current_buffer->name_
> $8 = XIL(0)
> (gdb) xstring
> $9 = (struct Lisp_String *) 0x0
> "DEAD"

So a buffer that was killed somehow became the current buffer, or the
selected buffer in some window.  I have no idea how that could happen.
At this point, all I can suggest is to try making redisplay simply
return when faced with such buffers, which is really just a band-aid.

Can you tell more about this "resetting" of Gnus, and what it means to
"switch VPN on/off"?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 18:41           ` Eli Zaretskii
@ 2021-03-18 18:54             ` Michael Welsh Duggan
  2021-03-18 19:16               ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-18 18:54 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>>         "47244@debbugs.gnu.org"
>>  <47244@debbugs.gnu.org>
>> Date: Thu, 18 Mar 2021 12:54:20 -0400
>> 
>> (gdb) p current_buffer->name_
>> $8 = XIL(0)
>> (gdb) xstring
>> $9 = (struct Lisp_String *) 0x0
>> "DEAD"
>
> So a buffer that was killed somehow became the current buffer, or the
> selected buffer in some window.  I have no idea how that could happen.
> At this point, all I can suggest is to try making redisplay simply
> return when faced with such buffers, which is really just a band-aid.
>
> Can you tell more about this "resetting" of Gnus, and what it means to
> "switch VPN on/off"?

Sure.  To connect to work I have to start the VPN, which changes my
network routing.  When Gnus tries to fetch new messages over an existing
IMAP connection (pre-VPN), it hangs.  I `C-g' out of it, go to the
server buffer (`^`), close the IMAP connection and then re-open it (`C
O`).  The crash happened when I hit `q` in the server buffer to get back
to the Group buffer.  This has happened several times, but the crash
doesn't happen every time.  I don't know that the VPN has anything to do
with this; it might simply provide the impetus that leads to the
problematic situation.

I do have a gnus demon running in the background:
  (gnus-demon-add-handler 'gnus-demon-scan-news 5 nil)

I don't know is this timer triggering at just the wrong time might
contribute to this.

If you want me to set a conditional breakpoint anywhere I can do that in
hopes of capturing something more useful the next time this happens.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 18:54             ` Michael Welsh Duggan
@ 2021-03-18 19:16               ` Eli Zaretskii
  2021-03-18 19:24                 ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-18 19:16 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>         "47244@debbugs.gnu.org"
>  <47244@debbugs.gnu.org>
> Date: Thu, 18 Mar 2021 14:54:19 -0400
> 
> I do have a gnus demon running in the background:
>   (gnus-demon-add-handler 'gnus-demon-scan-news 5 nil)

Maybe that is the reason that the current buffer is being killed under
our feet, I don't know.

Is the GDB session still alive?  If so, could you show what the
following displays?

  (gdb) p XWINDOW(selected_window)->contents
  (gdb) xtype

If "xtype" says it's a buffer, please type:

  (gdb) xbuffer

and tell what that shows.

> If you want me to set a conditional breakpoint anywhere I can do that in
> hopes of capturing something more useful the next time this happens.

I don't really have an idea where to set such a breakpoint, since I
don't understand how is this buffer killed.  I'm guessing you have
some elaborate hooks set up that succeed in killing the current buffer
while redisplay runs or something, that's how such problems are
usually born.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 19:16               ` Eli Zaretskii
@ 2021-03-18 19:24                 ` Michael Welsh Duggan
  2021-03-18 19:51                   ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-18 19:24 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>>         "47244@debbugs.gnu.org"
>>  <47244@debbugs.gnu.org>
>> Date: Thu, 18 Mar 2021 14:54:19 -0400
>> 
>> I do have a gnus demon running in the background:
>>   (gnus-demon-add-handler 'gnus-demon-scan-news 5 nil)
>
> Maybe that is the reason that the current buffer is being killed under
> our feet, I don't know.
>
> Is the GDB session still alive?  If so, could you show what the
> following displays?
>
>   (gdb) p XWINDOW(selected_window)->contents
>   (gdb) xtype
>
> If "xtype" says it's a buffer, please type:
>
>   (gdb) xbuffer
>
> and tell what that shows.

(gdb) p XWINDOW(selected_window)->contents
$10 = XIL(0x555558df4845)
(gdb) xtype
Lisp_Vectorlike
PVEC_BUFFER
(gdb) xbuffer
$11 = (struct buffer *) 0x555558df4840
"DEAD"

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 19:24                 ` Michael Welsh Duggan
@ 2021-03-18 19:51                   ` Eli Zaretskii
  2021-03-18 20:13                     ` Andreas Schwab
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-18 19:51 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>         "47244@debbugs.gnu.org"
>  <47244@debbugs.gnu.org>
> Date: Thu, 18 Mar 2021 15:24:42 -0400
> 
> (gdb) p XWINDOW(selected_window)->contents
> $10 = XIL(0x555558df4845)
> (gdb) xtype
> Lisp_Vectorlike
> PVEC_BUFFER
> (gdb) xbuffer
> $11 = (struct buffer *) 0x555558df4840
> "DEAD"

So the selected window's buffer was killed.  How is that possible?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 19:51                   ` Eli Zaretskii
@ 2021-03-18 20:13                     ` Andreas Schwab
  2021-03-18 20:27                       ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Andreas Schwab @ 2021-03-18 20:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, 47244, Michael Welsh Duggan

On Mär 18 2021, Eli Zaretskii wrote:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>>         "47244@debbugs.gnu.org"
>>  <47244@debbugs.gnu.org>
>> Date: Thu, 18 Mar 2021 15:24:42 -0400
>> 
>> (gdb) p XWINDOW(selected_window)->contents
>> $10 = XIL(0x555558df4845)
>> (gdb) xtype
>> Lisp_Vectorlike
>> PVEC_BUFFER
>> (gdb) xbuffer
>> $11 = (struct buffer *) 0x555558df4840
>> "DEAD"
>
> So the selected window's buffer was killed.  How is that possible?

Perhaps during run_window_change_functions.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 20:13                     ` Andreas Schwab
@ 2021-03-18 20:27                       ` Eli Zaretskii
  2021-03-19  1:50                         ` Michael Welsh Duggan
  2021-03-19  8:15                         ` martin rudalics
  0 siblings, 2 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-18 20:27 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: mwd, 47244, mwd

> From: Andreas Schwab <schwab@linux-m68k.org>
> Cc: Michael Welsh Duggan <mwd@cert.org>,  mwd@md5i.com,  47244@debbugs.gnu.org
> Date: Thu, 18 Mar 2021 21:13:40 +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?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 20:27                       ` Eli Zaretskii
@ 2021-03-19  1:50                         ` Michael Welsh Duggan
  2021-03-19  6:47                           ` Eli Zaretskii
  2021-03-19  8:15                         ` martin rudalics
  1 sibling, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-19  1:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, Andreas Schwab, 47244, mwd

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Andreas Schwab <schwab@linux-m68k.org>
>> Cc: Michael Welsh Duggan <mwd@cert.org>,  mwd@md5i.com,  47244@debbugs.gnu.org
>> Date: Thu, 18 Mar 2021 21:13:40 +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?

Hmm...  Is there a set of printfs we could add that would provide useful
information for the next time I trigger the crash?

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19  1:50                         ` Michael Welsh Duggan
@ 2021-03-19  6:47                           ` Eli Zaretskii
  2021-03-19 13:37                             ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-19  6:47 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: schwab, 47244, mwd

> From: Michael Welsh Duggan <mwd@md5i.com>
> Cc: Andreas Schwab <schwab@linux-m68k.org>,  mwd@cert.org,  mwd@md5i.com,
>   47244@debbugs.gnu.org
> Date: Thu, 18 Mar 2021 21:50:28 -0400
> 
> >> 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?
> 
> Hmm...  Is there a set of printfs we could add that would provide useful
> information for the next time I trigger the crash?

I'm open to ideas.  The problem is, killing buffers is so common in
Emacs (including the temporary buffers you never even suspect are
being used under the hood) that if you put a breakpoint there, even
with some sophisticated condition that I don't yet know how to
formulate, I'm afraid that will slow down Emacs so much you will be
unable to work.

But maybe my fears are exaggerated.  If you set a breakpoint on
Fkill_buffer with commands that say just

  silent
  continue
  end

does Emacs run reasonably fast for you to be able to work in such a
session?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-18 20:27                       ` Eli Zaretskii
  2021-03-19  1:50                         ` Michael Welsh Duggan
@ 2021-03-19  8:15                         ` martin rudalics
  2021-03-19  8:19                           ` Eli Zaretskii
  1 sibling, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-19  8:15 UTC (permalink / raw)
  To: Eli Zaretskii, Andreas Schwab; +Cc: mwd, 47244, mwd

 >>> 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.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19  8:15                         ` martin rudalics
@ 2021-03-19  8:19                           ` Eli Zaretskii
  2021-03-19  9:18                             ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-19  8:19 UTC (permalink / raw)
  To: martin rudalics; +Cc: mwd, schwab, 47244, mwd

> Cc: mwd@md5i.com, 47244@debbugs.gnu.org, mwd@cert.org
> From: martin rudalics <rudalics@gmx.at>
> 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?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19  8:19                           ` Eli Zaretskii
@ 2021-03-19  9:18                             ` martin rudalics
  2021-03-19  9:37                               ` martin rudalics
  2021-03-19 11:55                               ` Eli Zaretskii
  0 siblings, 2 replies; 160+ messages in thread
From: martin rudalics @ 2021-03-19  9:18 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, schwab, 47244, mwd

 > 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?

Redisplay occasionally does things like

	      saved_current_buffer = current_buffer;
	      current_buffer = XBUFFER (w->contents);
	      ...
  	      current_buffer = saved_current_buffer;

What if ... killed saved_current_buffer?

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19  9:18                             ` martin rudalics
@ 2021-03-19  9:37                               ` martin rudalics
  2021-03-19 11:55                               ` Eli Zaretskii
  1 sibling, 0 replies; 160+ messages in thread
From: martin rudalics @ 2021-03-19  9:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, schwab, 47244, mwd

 > What if ... killed saved_current_buffer?

Probably a silly question: Does set_buffer_internal ever check whether
its argument is live?

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19  9:18                             ` martin rudalics
  2021-03-19  9:37                               ` martin rudalics
@ 2021-03-19 11:55                               ` Eli Zaretskii
  1 sibling, 0 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-19 11:55 UTC (permalink / raw)
  To: martin rudalics; +Cc: mwd, schwab, 47244, mwd

> Cc: schwab@linux-m68k.org, mwd@md5i.com, 47244@debbugs.gnu.org, mwd@cert.org
> From: martin rudalics <rudalics@gmx.at>
> Date: Fri, 19 Mar 2021 10:18:33 +0100
> 
>  > 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?
> 
> Redisplay occasionally does things like
> 
> 	      saved_current_buffer = current_buffer;
> 	      current_buffer = XBUFFER (w->contents);
> 	      ...
>   	      current_buffer = saved_current_buffer;

It does? where?  We are talking about redisplay_internal here (because
that's where the segfault happened), not about redisplay_window and
its subroutines.  redisplay_internal generally doesn't need to be
bothered with the current buffer, it only does so once, in the
optimization it implements.  And in that code, I see no paradigm like
what you show.  Am I missing something?

> What if ... killed saved_current_buffer?

I don't see how that could happen in redisplay_internal.

Maybe you had redisplay_window in mind.  It does

  set_buffer_internal_1 (XBUFFER (w->contents));

If you imply that a window's buffer could be killed (which I still
don't understand how can happen, given what kill-buffer does), then I
think set_buffer_internal_1 would detect that.  If not, we could test
that explicitly, but then the question would be: what to do if we
detect that the buffer is indeed killed?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19  6:47                           ` Eli Zaretskii
@ 2021-03-19 13:37                             ` Michael Welsh Duggan
  2021-03-19 13:41                               ` Michael Welsh Duggan
  2021-03-19 13:49                               ` Eli Zaretskii
  0 siblings, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-19 13:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Michael Welsh Duggan, schwab, 47244, mwd

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@md5i.com>
>> Cc: Andreas Schwab <schwab@linux-m68k.org>,  mwd@cert.org,  mwd@md5i.com,
>>   47244@debbugs.gnu.org
>> Date: Thu, 18 Mar 2021 21:50:28 -0400
>> 
>> >> 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?
>> 
>> Hmm...  Is there a set of printfs we could add that would provide useful
>> information for the next time I trigger the crash?
>
> I'm open to ideas.  The problem is, killing buffers is so common in
> Emacs (including the temporary buffers you never even suspect are
> being used under the hood) that if you put a breakpoint there, even
> with some sophisticated condition that I don't yet know how to
> formulate, I'm afraid that will slow down Emacs so much you will be
> unable to work.
>
> But maybe my fears are exaggerated.  If you set a breakpoint on
> Fkill_buffer with commands that say just
>
>   silent
>   continue
>   end
>
> does Emacs run reasonably fast for you to be able to work in such a
> session?

I just tested this.  It runs fast enough even without silent.  (I did
this to make sure I had set up the breakpoint correctly and it was being
triggered. 

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19 13:37                             ` Michael Welsh Duggan
@ 2021-03-19 13:41                               ` Michael Welsh Duggan
  2021-03-19 13:51                                 ` Eli Zaretskii
  2021-03-19 13:49                               ` Eli Zaretskii
  1 sibling, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-19 13:41 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: schwab, 47244, mwd

Michael Welsh Duggan <mwd@md5i.com> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> From: Michael Welsh Duggan <mwd@md5i.com>
>>> Cc: Andreas Schwab <schwab@linux-m68k.org>,  mwd@cert.org,  mwd@md5i.com,
>>>   47244@debbugs.gnu.org
>>> Date: Thu, 18 Mar 2021 21:50:28 -0400
>>> 
>>> >> 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?
>>> 
>>> Hmm...  Is there a set of printfs we could add that would provide useful
>>> information for the next time I trigger the crash?
>>
>> I'm open to ideas.  The problem is, killing buffers is so common in
>> Emacs (including the temporary buffers you never even suspect are
>> being used under the hood) that if you put a breakpoint there, even
>> with some sophisticated condition that I don't yet know how to
>> formulate, I'm afraid that will slow down Emacs so much you will be
>> unable to work.
>>
>> But maybe my fears are exaggerated.  If you set a breakpoint on
>> Fkill_buffer with commands that say just
>>
>>   silent
>>   continue
>>   end
>>
>> does Emacs run reasonably fast for you to be able to work in such a
>> session?
>
> I just tested this.  It runs fast enough even without silent.  (I did
> this to make sure I had set up the breakpoint correctly and it was being
> triggered. 

Also, if you let me know what you would like in the breakpoint
command(s), let me know if I should first update to current master.

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19 13:37                             ` Michael Welsh Duggan
  2021-03-19 13:41                               ` Michael Welsh Duggan
@ 2021-03-19 13:49                               ` Eli Zaretskii
  2021-03-19 14:18                                 ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-19 13:49 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: schwab, 47244, mwd

> From: Michael Welsh Duggan <mwd@md5i.com>
> Cc: Michael Welsh Duggan <mwd@md5i.com>,  schwab@linux-m68k.org,
>   mwd@cert.org,  47244@debbugs.gnu.org
> Date: Fri, 19 Mar 2021 09:37:21 -0400
> 
> > But maybe my fears are exaggerated.  If you set a breakpoint on
> > Fkill_buffer with commands that say just
> >
> >   silent
> >   continue
> >   end
> >
> > does Emacs run reasonably fast for you to be able to work in such a
> > session?
> 
> I just tested this.  It runs fast enough even without silent.  (I did
> this to make sure I had set up the breakpoint correctly and it was being
> triggered. 

Then maybe we can try catching the culprit.  Try this:

  (gdb) break buffer.c:1840 if redisplaying_p != 0

This breakpoint is in this snippet from buffer.c:

  /* Make this buffer not be current.  Exit if it is the sole visible
     buffer.  */
  if (b == current_buffer)
    {
      tem = Fother_buffer (buffer, Qnil, Qnil);  <<<<<<<<<<<<<<<<<<
      Fset_buffer (tem);
      if (b == current_buffer)
	return Qnil;
    }

If this breaks, I'd be interested to see the backtrace (including
"xbacktrace" which shows the corresponding Lisp backtrace).

Thanks.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19 13:41                               ` Michael Welsh Duggan
@ 2021-03-19 13:51                                 ` Eli Zaretskii
  0 siblings, 0 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-19 13:51 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: schwab, 47244, mwd

> From: Michael Welsh Duggan <mwd@md5i.com>
> Cc: Eli Zaretskii <eliz@gnu.org>,  schwab@linux-m68k.org,  mwd@cert.org,
>   47244@debbugs.gnu.org
> Date: Fri, 19 Mar 2021 09:41:47 -0400
> 
> Also, if you let me know what you would like in the breakpoint
> command(s), let me know if I should first update to current master.

I suggest that you update regardless, so that we have a common ground
for talking about line numbers and backtraces.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19 13:49                               ` Eli Zaretskii
@ 2021-03-19 14:18                                 ` Michael Welsh Duggan
  2021-03-19 14:21                                   ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-19 14:18 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@md5i.com>
>> Cc: Michael Welsh Duggan <mwd@md5i.com>,  schwab@linux-m68k.org,
>>   mwd@cert.org,  47244@debbugs.gnu.org
>> Date: Fri, 19 Mar 2021 09:37:21 -0400
>> 
>> > But maybe my fears are exaggerated.  If you set a breakpoint on
>> > Fkill_buffer with commands that say just
>> >
>> >   silent
>> >   continue
>> >   end
>> >
>> > does Emacs run reasonably fast for you to be able to work in such a
>> > session?
>> 
>> I just tested this.  It runs fast enough even without silent.  (I did
>> this to make sure I had set up the breakpoint correctly and it was being
>> triggered. 
>
> Then maybe we can try catching the culprit.  Try this:
>
>   (gdb) break buffer.c:1840 if redisplaying_p != 0
>
> This breakpoint is in this snippet from buffer.c:
>
>   /* Make this buffer not be current.  Exit if it is the sole visible
>      buffer.  */
>   if (b == current_buffer)
>     {
>       tem = Fother_buffer (buffer, Qnil, Qnil);  <<<<<<<<<<<<<<<<<<
>       Fset_buffer (tem);
>       if (b == current_buffer)
> 	return Qnil;
>     }
>
> If this breaks, I'd be interested to see the backtrace (including
> "xbacktrace" which shows the corresponding Lisp backtrace).
>
> Thanks.

That triggered really quickly.

Here's the backtraces:

#0  0x00005555555e1a61 in redisplay_internal ()
    at ../../master/src/xdisp.c:15789
        w = 0x555556b96340
        sw = 0x555556b96340
        fr = 0x555556b8ca50
        pending = false
        must_finish = true
        match_p = true
        tlbufpos = {
          charpos = 127,
          bytepos = 127
        }
        tlendpos = {
          charpos = 0,
          bytepos = 0
        }
        number_of_visible_frames = 4
        count = 3
        sf = 0x555556b8ca50
        polling_stopped_here = false
        tail = XIL(0)
        frame = XIL(0x555555d52afd)
        hscroll_retries = 0
        garbaged_frame_retries = 0
        consider_all_windows_p = false
        update_miniwindow_p = true
#1  0x00005555555e061e in redisplay () at ../../master/src/xdisp.c:15245
#2  0x00005555556e9991 in read_char
    (commandflag=1, map=XIL(0x555558a3e483), prev_event=XIL(0), used_mouse_menu=0x7fffffffdabf, end_time=0x0) at ../../master/src/keyboard.c:2496
        echo_current = false
        c = XIL(0)
        jmpcount = 93824999976800
        local_getcjmp = {{
            __jmpbuf = {93825000009536, 0, 93824999976800, 0, 0, 140737488345232, 93824994486337, 93825051609157},
            __mask_was_saved = -10032,
            __saved_mask = {
              __val = {93824994503322, 140737259960288, 140737259960240, 0, 46912259983440, 0, 140737259960288, 93824999976800, 0, 0, 140737488345344, 93824993977890, 4066572208, 93824999976800, 0, 0}
            }
          }}
        save_jump = {{
            __jmpbuf = {0, 32736, 0, 140737266320856, 0, 0, 93825051609152, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {93825000009536, 93824994486337, 0, 140737488345184, 93824994507922, 140737266320856, 12884891664, 0, 32736, 93825051609152, 140737266320856, 93824995128912, 51539607552, 93825051609157, 93825051609152, 93824995129355}
            }
          }}
        tem = XIL(0)
        save = make_fixnum(23456248494472)
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x555555dea0a0
#3  0x00005555556f86dc in read_key_sequence
    (keybuf=0x7fffffffdcc0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false)
    at ../../master/src/keyboard.c:9484
        interrupted_kboard = 0x555555dea0a0
        interrupted_frame = 0x555556b8ca50
        key = make_fixnum(23456248516455)
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = XIL(0x555557286ce0)
        count = 3
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x555558a3e483)
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {
          parent = XIL(0x5555568a0323),
          map = XIL(0x5555568a0323),
          start = 0,
          end = 0
        }
        keytran = {
          parent = XIL(0x7ffff2c27c4b),
          map = XIL(0x7ffff2c27c4b),
          start = 0,
          end = 0
        }
        indec = {
          parent = XIL(0x5555568a0353),
          map = XIL(0x5555568a0353),
          start = 0,
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        dummyflag = false
        starting_buffer = 0x555558df4840
        fake_prefixed_keys = XIL(0)
        first_event = XIL(0)
        second_event = XIL(0)
#4  0x00005555556e6c13 in command_loop_1 () at ../../master/src/keyboard.c:1353
        cmd = XIL(0x7fffffffde10)
        keybuf = {XIL(0), XIL(0x7ffff2c27bf5), XIL(0x555555765719), XIL(0x1655540), XIL(0x7fffffffdd70), XIL(0x55555579dc50), XIL(0x1655540), XIL(0x7ffff257b4c4), XIL(0x555558df8683), XIL(0x7ffff2c27bf5), XIL(0x7ffff2c27bf5), XIL(0x555558df8683), XIL(0x7ffff257b4c4), XIL(0x1655540), XIL(0), XIL(0), XIL(0x555555cb6f60), XIL(0), XIL(0), XIL(0x7fffffffdd70), XIL(0x5555556e3b34), XIL(0xffffddc0), XIL(0x555555cb6f60), XIL(0), XIL(0), XIL(0x7fffffffdda0), XIL(0x555555797748), make_fixnum(0), XIL(0x7fffffffdde0), XIL(0x55555579ae39)}
        i = 1
        prev_modiff = 0
        prev_buffer = 0x0
        already_adjusted = false
#5  0x000055555579aa34 in internal_condition_case (bfun=0x5555556e67cd <command_loop_1>, handlers=XIL(0x90), hfun=0x5555556e5f69 <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555556e3b34)
        c = 0x555555db1380
#6  0x00005555556e6495 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#7  0x000055555579a242 in internal_catch (tag=XIL(0xd950), func=0x5555556e6468 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd950)
        c = 0x555555d9a6f0
#8  0x00005555556e6434 in command_loop () at ../../master/src/keyboard.c:1073
#9  0x00005555556e5b3a in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf50)
#10 0x00005555556e5cbd in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#11 0x00005555556e26ea in main (argc=2, argv=0x7fffffffe1b8) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)
#0  Fkill_buffer (buffer_or_name=XIL(0x555556da6cd5))
    at ../../master/src/buffer.c:1840
        buffer = XIL(0x555556da6cd5)
        b = 0x555556da6cd0
        tem = XIL(0x55555570ee2b)
        m = 0x7ffffffec990
#1  0x000055555579e96e in funcall_subr
    (subr=0x555555c4c080 <Skill_buffer>, numargs=1, args=0x7ffffffeca60)
    at ../../master/src/eval.c:2987
        internal_argbuf = 
          {XIL(0x7ffff2b2d86d), XIL(0), XIL(0), XIL(0x7ffffffec9a0), XIL(0x555555cc4f80), XIL(0x1000000000), XIL(0x555555c4c080), XIL(0x7ffffffec9c8)}
        internal_args = 0x7ffffffeca60
#2  0x000055555579e582 in Ffuncall (nargs=2, args=0x7ffffffeca58)
    at ../../master/src/eval.c:2914
        fun = XIL(0x555555c4c085)
        original_fun = XIL(0x2aaa9c8bf8c0)
        funcar = make_fixnum(0)
        numargs = 1
        val = XIL(0)
        count = 35
#3  0x00005555557e9a00 in exec_byte_code
    (bytestr=XIL(0x7ffff25d43f4), vector=XIL(0x555556d4ec7d), maxdepth=make_fixnum(2), args_template=make_fixnum(0), nargs=0, args=0x7ffffffecf10)
    at ../../master/src/bytecode.c:632
        op = 1
        type = (CATCHER_ALL | unknown: 0x558181a0)
        targets = 
          {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 3
        bytestr_length = 10
        vectorp = 0x555556d4ec80
        quitcounter = 1 '\001'
        stack_items = 3
        sa_avail = 16350
        sa_count = 35
        alloc = 0x7ffffffeca50
        stack_base = 0x7ffffffeca50
        top = 0x7ffffffeca58
        stack_lim = 0x7ffffffeca68
        bytestr_data = 0x7ffffffeca68 "\301\300!\205\t"
        pc = 0x7ffffffeca71 "\207\376\377\377\177"
        count = 35
        result = make_fixnum(8)
#4  0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x555556e58d75), syms_left=make_fixnum(0), nargs=0, args=0x7ffffffecf10) at ../../master/src/eval.c:3036
#5  0x000055555579efae in funcall_lambda (fun=XIL(0x555556e58d75), nargs=0, arg_vector=0x7ffffffecf10) at ../../master/src/eval.c:3117
        val = XIL(0x7ffffffece90)
        syms_left = make_fixnum(0)
        next = XIL(0x1)
        lexenv = XIL(0x1800000000)
        count = 35
        i = 93824994606300
        optional = false
        rest = false
#6  0x000055555579e5c6 in Ffuncall (nargs=1, args=0x7ffffffecf08) at ../../master/src/eval.c:2916
        fun = XIL(0x555556e58d75)
        original_fun = XIL(0x555556e58d75)
        funcar = XIL(0x7ffffffecec0)
        numargs = 0
        val = XIL(0x7ffffffecf20)
        count = 34
#7  0x00005555557e8f1b in bcall0 (f=XIL(0x555556e58d75)) at ../../master/src/bytecode.c:340
#8  0x00005555557a0125 in do_one_unbind (this_binding=0x7ffffffecf80, unwinding=true, bindflag=SET_INTERNAL_UNBIND) at ../../master/src/eval.c:3575
#9  0x00005555557a04de in unbind_to (count=33, value=XIL(0)) at ../../master/src/eval.c:3713
        this_binding = {
          kind = SPECPDL_UNWIND,
          unwind = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>,
            arg = XIL(0x555556e58d75),
            eval_depth = 7
          },
          unwind_array = {
            kind = SPECPDL_UNWIND,
            nelts = 93824994938622,
            array = 0x555556e58d75
          },
          unwind_ptr = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>,
            arg = 0x555556e58d75
          },
          unwind_int = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>,
            arg = 1457884533
          },
          unwind_intmax = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>,
            arg = 93825018465653
          },
          unwind_excursion = {
            kind = SPECPDL_UNWIND,
            marker = make_fixnum(23456248734655),
            window = XIL(0x555556e58d75)
          },
          unwind_void = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>
          },
          let = {
            kind = SPECPDL_UNWIND,
            symbol = make_fixnum(23456248734655),
            old_value = XIL(0x555556e58d75),
            where = XIL(0x7),
            saved_value = XIL(0)
          },
          bt = {
            kind = SPECPDL_UNWIND,
            debug_on_exit = false,
            function = make_fixnum(23456248734655),
            args = 0x555556e58d75,
            nargs = 7
          }
        }
        quitf = XIL(0)
#10 0x00005555557e9ab1 in exec_byte_code (bytestr=XIL(0x7ffff291441c), vector=XIL(0x7ffff29140cd), maxdepth=make_fixnum(23), args_template=make_fixnum(257), nargs=1, args=0x7ffffffed730) at ../../master/src/bytecode.c:652
        op = 2
        type = (unknown: 0xf2c42280)
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 51
        bytestr_length = 494
        vectorp = 0x7ffff29140d0
        quitcounter = 44 ','
        stack_items = 24
        sa_avail = 15698
        sa_count = 32
        alloc = 0x7ffffffecfd0
        stack_base = 0x7ffffffecfd0
        top = 0x7ffffffed000
        stack_lim = 0x7ffffffed090
        bytestr_data = 0x7ffffffed090 "\211??\205\355\001\b\302p\001\031\303\304\302\"r\211q\210\305\306\002\"\216\004c\210eb\210`dW\203\345\001`lj\211\211g\310U\203\234\001\311\061:"
        pc = 0x7ffffffed278 "\262\001)\266\203\207"
        count = 32
        result = XIL(0xc6002383a2010007)
#11 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x7ffff291409d), syms_left=make_fixnum(257), nargs=1, args=0x7ffffffed728) at ../../master/src/eval.c:3036
#12 0x000055555579efae in funcall_lambda (fun=XIL(0x7ffff291409d), nargs=1, arg_vector=0x7ffffffed728) at ../../master/src/eval.c:3117
        val = XIL(0x7ffffffed6a0)
        syms_left = make_fixnum(257)
        next = XIL(0)
        lexenv = XIL(0x1800000000)
        count = 32
        i = 93824994606300
        optional = false
        rest = false
#13 0x000055555579e5c6 in Ffuncall (nargs=2, args=0x7ffffffed720) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff291409d)
        original_fun = XIL(0xcff0)
        funcar = XIL(0x555555cc4f80)
        numargs = 1
        val = XIL(0)
        count = 31
#14 0x000055555579de5b in call1 (fn=XIL(0xcff0), arg1=XIL(0x7ffff276d6fc)) at ../../master/src/eval.c:2774
#15 0x00005555556e8cac in help_echo_substitute_command_keys (help=XIL(0x7ffff276d6fc)) at ../../master/src/keyboard.c:2042
#16 0x00005555556f46c0 in parse_menu_item (item=XIL(0x7ffff276d6eb), inmenubar=0) at ../../master/src/keyboard.c:7700
        help = XIL(0x7ffff276d6fc)
        li = {
          tortoise = XIL(0x7ffff292d363),
          max = 2,
          n = 0,
          q = 1
        }
        def = XIL(0x555556c64823)
        tem = XIL(0xea0)
        item_string = XIL(0x9ae0)
        start = XIL(0x7ffff292d353)
        filter = XIL(0)
        keyhint = XIL(0)
        i = 8
#17 0x000055555561da4c in single_menu_item (key=XIL(0x2aaa9ca7dfa8), item=XIL(0x7ffff292d333), dummy=XIL(0), skp_v=0x7ffffffeda60) at ../../master/src/menu.c:323
        map = XIL(0x7ffffffed9e0)
        item_string = XIL(0x30)
        enabled = XIL(0x7ffff29295a3)
        res = false
        skp = 0x7ffffffeda60
#18 0x00005555557003a6 in map_keymap_item (fun=0x55555561d9ff <single_menu_item>, args=XIL(0), key=XIL(0x2aaa9ca7dfa8), val=XIL(0x7ffff292d333), data=0x7ffffffeda60) at ../../master/src/keymap.c:502
#19 0x000055555570051a in map_keymap_internal (map=XIL(0x555556c64823), fun=0x55555561d9ff <single_menu_item>, args=XIL(0), data=0x7ffffffeda60) at ../../master/src/keymap.c:549
        binding = XIL(0x555556c5d203)
        tail = XIL(0x555556c645f3)
#20 0x00005555557007c2 in map_keymap_canonical (map=XIL(0x555556c64823), fun=0x55555561d9ff <single_menu_item>, args=XIL(0), data=0x7ffffffeda60) at ../../master/src/keymap.c:609
#21 0x000055555561d971 in single_keymap_panes (keymap=XIL(0x7ffff29295a3), pane_name=XIL(0x7ffff2631c84), prefix=XIL(0x2aaa9c96cd20), maxdepth=10) at ../../master/src/menu.c:292
        skp = {
          pending_maps = XIL(0),
          maxdepth = 10,
          notbuttons = 0
        }
#22 0x000055555561e640 in parse_single_submenu (item_key=XIL(0x2aaa9c96cd20), item_name=XIL(0x7ffff2631c84), maps=XIL(0)) at ../../master/src/menu.c:556
        prompt = XIL(0x7ffff2631c84)
        i = 0
        mapvec = 0x7ffffffedab0
        top_level_items = false
        sa_avail = 16376
        sa_count = 31
        len = 1
#23 0x00005555556218f4 in set_frame_menubar (f=0x555556d8c360, deep_p=true) at ../../master/src/xmenu.c:794
        key = XIL(0x2aaa9c96cd20)
        string = XIL(0x7ffff2631c84)
        maps = XIL(0x555556c5da43)
        buffer = XIL(0x7ffff257c6fd)
        specpdl_count = 25
        previous_menu_items_used = 5427
        previous_items = 0x7ffffffedc20
        subitems = 9
        prev = 0x7ffff257c6f8
        menubar_widget = 0x555556f93790
        old_widget = 0x555556f93790
        id = 1
        items = XIL(0x555556d9cead)
        wv = 0x3
        first_wv = 0x7fffffff85b0
        prev_wv = 0x0
        i = 0
        submenu_start = 0x7ffffffedbf0
        submenu_end = 0x7ffffffedbc0
        submenu_top_level_items = 0x7ffffffedb70
        submenu_n_panes = 0x7ffffffedb90
#24 0x00005555555db3e4 in update_menu_bar (f=0x555556d8c360, save_match_data=false, hooks_run=true) at ../../master/src/xdisp.c:12913
        prev = 0x7ffff257c6f8
        count = 22
        window = XIL(0x555556e2e2c5)
        w = 0x555556e2e2c0
#25 0x00005555555db062 in prepare_menu_bars () at ../../master/src/xdisp.c:12799
        f = 0x555556d8c360
        w = 0x555556e2e2c0
        tail = XIL(0x5555569d0ed3)
        frame = XIL(0x555556d8c365)
        count = 21
        menu_bar_hooks_run = false
        all_windows = true
        some_windows = false
#26 0x00005555555e14d7 in redisplay_internal () at ../../master/src/xdisp.c:15661
        w = 0x555556e2e2c0
        sw = 0x555556e2e2c0
        fr = 0x555556d8c360
        pending = false
        must_finish = false
        match_p = false
        tlbufpos = {
          charpos = 139642271694850,
          bytepos = 140737488329552
        }
        tlendpos = {
          charpos = 140737488329520,
          bytepos = 93824994640165
        }
        number_of_visible_frames = 2
        count = 18
        sf = 0x555556d8c360
        polling_stopped_here = false
        tail = XIL(0)
        frame = XIL(0x555555d61a05)
        hscroll_retries = 0
        garbaged_frame_retries = 0
        consider_all_windows_p = false
        update_miniwindow_p = false
#27 0x00005555555e2e05 in redisplay_preserve_echo_area (from_where=13) at ../../master/src/xdisp.c:16382
        count = 17
#28 0x00005555557efd2d in Fdelete_process (process=XIL(0x555556da8c1d)) at ../../master/src/process.c:1090
        p = 0x555556da8c18
#29 0x000055555579e96e in funcall_subr (subr=0x555555c55e00 <Sdelete_process>, numargs=1, args=0x7fffffff9dd8) at ../../master/src/eval.c:2987
        internal_argbuf = {XIL(0x10), XIL(0x3fd0), make_fixnum(23456248621749), XIL(0x2f2704730), XIL(0x555555cc4f80), XIL(0x1000000000), XIL(0x555555c55e00), XIL(0x7fffffff9d28)}
        internal_args = 0x7fffffff9dd8
#30 0x000055555579e582 in Ffuncall (nargs=2, args=0x7fffffff9dd0) at ../../master/src/eval.c:2914
        fun = XIL(0x555555c55e05)
        original_fun = XIL(0x2aaa9ca9f370)
        funcar = make_fixnum(23456248621749)
        numargs = 1
        val = XIL(0)
        count = 16
#31 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x555556536fb4), vector=XIL(0x5555564f336d), maxdepth=make_fixnum(10), args_template=make_fixnum(513), nargs=1, args=0x7fffffffa3b8) at ../../master/src/bytecode.c:632
        op = 1
        type = (CONDITION_CASE | CATCHER_ALL | unknown: 0x557101b0)
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 34
        bytestr_length = 196
        vectorp = 0x5555564f3370
        quitcounter = 3 '\003'
        stack_items = 11
        sa_avail = 16100
        sa_count = 16
        alloc = 0x7fffffff9db0
        stack_base = 0x7fffffff9db0
        top = 0x7fffffff9dd0
        stack_lim = 0x7fffffff9e08
        bytestr_data = 0x7fffffff9e08 "\305\306\002\205\a"
        pc = 0x7fffffff9ec4 "\210\305\341\004\"\262\001\207"
        count = 16
        result = XIL(0)
#32 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x5555564f3485), syms_left=make_fixnum(513), nargs=1, args=0x7fffffffa3b0) at ../../master/src/eval.c:3036
#33 0x000055555579efae in funcall_lambda (fun=XIL(0x5555564f3485), nargs=1, arg_vector=0x7fffffffa3b0) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffa2f0)
        syms_left = make_fixnum(513)
        next = XIL(0)
        lexenv = XIL(0x1800000000)
        count = 16
        i = 93824994606300
        optional = false
        rest = false
#34 0x000055555579e5c6 in Ffuncall (nargs=2, args=0x7fffffffa3a8) at ../../master/src/eval.c:2916
        fun = XIL(0x5555564f3485)
        original_fun = XIL(0x794bd0)
        funcar = XIL(0x7fffffffa350)
        numargs = 1
        val = XIL(0)
        count = 15
#35 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x55555653fb84), vector=XIL(0x5555564f6e4d), maxdepth=make_fixnum(15), args_template=make_fixnum(1799), nargs=7, args=0x7fffffffa9a8) at ../../master/src/bytecode.c:632
        op = 1
        type = CONDITION_CASE
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 42
        bytestr_length = 233
        vectorp = 0x5555564f6e50
        quitcounter = 1 '\001'
        stack_items = 16
        sa_avail = 16023
        sa_count = 14
        alloc = 0x7fffffffa360
        stack_base = 0x7fffffffa360
        top = 0x7fffffffa3a8
        stack_lim = 0x7fffffffa3e0
        bytestr_data = 0x7fffffffa3e0 "\305", <incomplete sequence \342>
        pc = 0x7fffffffa435 "\210\202l"
        count = 14
        result = XIL(0x7fffffff94c0)
#36 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x5555564f6fa5), syms_left=make_fixnum(1799), nargs=7, args=0x7fffffffa970) at ../../master/src/eval.c:3036
#37 0x000055555579efae in funcall_lambda (fun=XIL(0x5555564f6fa5), nargs=7, arg_vector=0x7fffffffa970) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffa8f0)
        syms_left = make_fixnum(1799)
        next = XIL(0x30)
        lexenv = XIL(0x1800000000)
        count = 14
        i = 93824994606300
        optional = false
        rest = false
#38 0x000055555579e5c6 in Ffuncall (nargs=8, args=0x7fffffffa968) at ../../master/src/eval.c:2916
        fun = XIL(0x5555564f6fa5)
        original_fun = XIL(0x876290)
        funcar = XIL(0x7fffffffa950)
        numargs = 7
        val = XIL(0x555555dd01a4)
        count = 13
#39 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x55555653fb24), vector=XIL(0x555556db15f5), maxdepth=make_fixnum(8), args_template=make_fixnum(0), nargs=0, args=0x7fffffffae80) at ../../master/src/bytecode.c:632
        op = 7
        type = (unknown: 0x5577ef7c)
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 13
        bytestr_length = 46
        vectorp = 0x555556db15f8
        quitcounter = 1 '\001'
        stack_items = 9
        sa_avail = 16266
        sa_count = 11
        alloc = 0x7fffffffa960
        stack_base = 0x7fffffffa960
        top = 0x7fffffffa968
        stack_lim = 0x7fffffffa9a8
        bytestr_data = 0x7fffffffa9a8 "r\310\016\v!q\210Ţ\203\030"
        pc = 0x7fffffffa9d4 "*\207"
        count = 11
        result = XIL(0x555556d18793)
#40 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x555556dff405), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffae80) at ../../master/src/eval.c:3036
#41 0x000055555579efae in funcall_lambda (fun=XIL(0x555556dff405), nargs=0, arg_vector=0x7fffffffae80) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffadf0)
        syms_left = make_fixnum(0)
        next = XIL(0x7fffffffae20)
        lexenv = XIL(0x1800000000)
        count = 11
        i = 93824994606300
        optional = false
        rest = false
#42 0x000055555579e5c6 in Ffuncall (nargs=1, args=0x7fffffffae78) at ../../master/src/eval.c:2916
        fun = XIL(0x555556dff405)
        original_fun = XIL(0x555556dff405)
        funcar = XIL(0x5555557e84a5)
        numargs = 0
        val = XIL(0x100000000)
        count = 10
#43 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x55555653adb4), vector=XIL(0x5555565006ed), maxdepth=make_fixnum(6), args_template=make_fixnum(257), nargs=1, args=0x7fffffffb3e8) at ../../master/src/bytecode.c:632
        op = 0
        type = CONDITION_CASE
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 5
        bytestr_length = 25
        vectorp = 0x5555565006f0
        quitcounter = 1 '\001'
        stack_items = 7
        sa_avail = 16303
        sa_count = 10
        alloc = 0x7fffffffae60
        stack_base = 0x7fffffffae60
        top = 0x7fffffffae78
        stack_lim = 0x7fffffffae98
        bytestr_data = 0x7fffffffae98 "\300\001\301\"\302\002\301\303#\210\211\205\030"
        pc = 0x7fffffffaeac "0\207\210Ç\262\377\377\377\177"
        count = 10
        result = XIL(0)
#44 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x55555650071d), syms_left=make_fixnum(257), nargs=1, args=0x7fffffffb3e0) at ../../master/src/eval.c:3036
#45 0x000055555579efae in funcall_lambda (fun=XIL(0x55555650071d), nargs=1, arg_vector=0x7fffffffb3e0) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffb2d0)
        syms_left = make_fixnum(257)
        next = XIL(0x5555557a301c)
        lexenv = XIL(0x1800000000)
        count = 10
        i = 93824994606300
        optional = false
        rest = false
#46 0x000055555579e5c6 in Ffuncall (nargs=2, args=0x7fffffffb3d8) at ../../master/src/eval.c:2916
        fun = XIL(0x55555650071d)
        original_fun = XIL(0x8735c0)
        funcar = XIL(0x555556d8c365)
        numargs = 1
        val = XIL(0)
        count = 9
#47 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x55555653add4), vector=XIL(0x5555564f6b7d), maxdepth=make_fixnum(31), args_template=make_fixnum(514), nargs=2, args=0x7fffffffbca8) at ../../master/src/bytecode.c:632
        op = 1
        type = CONDITION_CASE
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 83
        bytestr_length = 967
        vectorp = 0x5555564f6b80
        quitcounter = 45 '-'
        stack_items = 32
        sa_avail = 15161
        sa_count = 9
        alloc = 0x7fffffffb340
        stack_base = 0x7fffffffb340
        top = 0x7fffffffb3d8
        stack_lim = 0x7fffffffb440
        bytestr_data = 0x7fffffffb440 "\305\062\306\003\306\307\002P\003\"\210\310\002\311\"\204U"
        pc = 0x7fffffffb7f7 "\266\220\060\202\305\003\201R"
        count = 9
        result = XIL(0x7fffffffb8a8)
#48 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x5555564f6e1d), syms_left=make_fixnum(514), nargs=2, args=0x7fffffffbc98) at ../../master/src/eval.c:3036
#49 0x000055555579efae in funcall_lambda (fun=XIL(0x5555564f6e1d), nargs=2, arg_vector=0x7fffffffbc98) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffbc20)
        syms_left = make_fixnum(514)
        next = XIL(0x1)
        lexenv = XIL(0x1800000000)
        count = 9
        i = 93824994606300
        optional = false
        rest = false
#50 0x000055555579e5c6 in Ffuncall (nargs=3, args=0x7fffffffbc90) at ../../master/src/eval.c:2916
        fun = XIL(0x5555564f6e1d)
        original_fun = XIL(0x873290)
        funcar = XIL(0)
        numargs = 2
        val = XIL(0)
        count = 8
#51 0x000055555579d89f in Fapply (nargs=2, args=0x7fffffffbd40) at ../../master/src/eval.c:2544
        i = 3
        funcall_nargs = 3
        funcall_args = 0x7fffffffbc90
        spread_arg = XIL(0)
        fun = XIL(0x5555564f6e1d)
        sa_avail = 16360
        sa_count = 8
        numargs = 2
        retval = XIL(0)
#52 0x000055555579de09 in apply1 (fn=XIL(0x873290), arg=XIL(0x555556d186f3)) at ../../master/src/eval.c:2760
#53 0x00005555557fa958 in read_process_output_call (fun_and_args=XIL(0x555556d186e3)) at ../../master/src/process.c:5930
#54 0x000055555579ad70 in internal_condition_case_1 (bfun=0x5555557fa92a <read_process_output_call>, arg=XIL(0x555556d186e3), handlers=XIL(0x90), hfun=0x5555557fa95a <read_process_output_error_handler>) at ../../master/src/eval.c:1463
        val = XIL(0x555556da8c1d)
        c = 0x555555dc0550
#55 0x00005555557fb24a in read_and_dispose_of_process_output (p=0x555556da8c18, chars=0x7fffffffbe50 "-env GJS_DEBUG_TOPICS=JS&_ERROR;JS&_LOG -env USER=md5i -env XDG_SESSION_TYPE=wayland -env SHLVL=0 -env HOME=/home/md5i -env DESKTOP_SESSION=gnome -env GIO_LAUNCHED_DESKTOP_FILE=/home/md5i/.local/share"..., nbytes=1383, coding=0x555555eccd50) at ../../master/src/process.c:6153
        outstream = XIL(0x873290)
        text = XIL(0x555556db8a84)
        outer_running_asynch_code = false
        waiting = -1
#56 0x00005555557fae68 in read_process_output (proc=XIL(0x555556da8c1d), channel=4) at ../../master/src/process.c:6063
        nbytes = 1383
        p = 0x555556da8c18
        coding = 0x555555eccd50
        carryover = 0
        readmax = 4096
        count = 5
        odeactivate = XIL(0)
        chars = 0x7fffffffbe50 "-env GJS_DEBUG_TOPICS=JS&_ERROR;JS&_LOG -env USER=md5i -env XDG_SESSION_TYPE=wayland -env SHLVL=0 -env HOME=/home/md5i -env DESKTOP_SESSION=gnome -env GIO_LAUNCHED_DESKTOP_FILE=/home/md5i/.local/share"...
        sa_avail = 12224
        sa_count = 5
#57 0x00005555557fa1a3 in wait_reading_process_output (time_limit=0, nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0), wait_proc=0x0, just_wait_proc=0) at ../../master/src/process.c:5749
        nread = -2011028988
        process_skipped = false
        child_fd = 6
        channel = 4
        nfds = 1
        Available = {
          fds_bits = {16, 0 <repeats 15 times>}
        }
        Writeok = {
          fds_bits = {0 <repeats 16 times>}
        }
        check_write = true
        check_delay = 0
        no_avail = false
        xerrno = 2
        proc = XIL(0x555556da8c1d)
        timeout = {
          tv_sec = 40,
          tv_nsec = 613408153
        }
        end_time = {
          tv_sec = 140737488343328,
          tv_nsec = 93824994634785
        }
        timer_delay = {
          tv_sec = 40,
          tv_nsec = 613408153
        }
        got_output_end_time = {
          tv_sec = 1616263190,
          tv_nsec = 619007247
        }
        wait = FOREVER
        got_some_output = -1
        prev_wait_proc_nbytes_read = 0
        retry_for_async = false
        count = 4
        now = {
          tv_sec = 0,
          tv_nsec = -1
        }
#58 0x00005555556ecbfd in kbd_buffer_get_event (kbp=0x7fffffffd478, used_mouse_menu=0x7fffffffdabf, end_time=0x0) at ../../master/src/keyboard.c:3869
        do_display = true
        obj = XIL(0x24e5275c)
#59 0x00005555556e8f68 in read_event_from_main_queue (end_time=0x0, local_getcjmp=0x7fffffffd850, used_mouse_menu=0x7fffffffdabf) at ../../master/src/keyboard.c:2159
        c = XIL(0)
        save_jump = {{
            __jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {0 <repeats 16 times>}
            }
          }}
        kb = 0x3a352944002
        count = 3
#60 0x00005555556e9201 in read_decoded_event_from_main_queue (end_time=0x0, local_getcjmp=0x7fffffffd850, prev_event=XIL(0), used_mouse_menu=0x7fffffffdabf) at ../../master/src/keyboard.c:2223
        nextevt = XIL(0)
        frame = 0x0
        terminal = 0x1556ff75f
        events = {XIL(0x555556ae1d5d), XIL(0x555555cc4f80), XIL(0), XIL(0), XIL(0x7fffffffd668), XIL(0x5555556e3c40), XIL(0), XIL(0x7fffffffd690), XIL(0x5555556e685b), XIL(0x555556d18eb3), XIL(0), XIL(0), XIL(0x7fffffffd6c0), make_fixnum(23456248475707), XIL(0), XIL(0x1ffffd6c0)}
        n = 0
#61 0x00005555556ea809 in read_char (commandflag=1, map=XIL(0x555556d18ed3), prev_event=XIL(0), used_mouse_menu=0x7fffffffdabf, end_time=0x0) at ../../master/src/keyboard.c:2833
        c = XIL(0)
        jmpcount = 3
        local_getcjmp = {{
            __jmpbuf = {0, -8377641525854313018, 93824992490624, 0, 0, 0, -8377641526313589306, -2384103731268917818},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {93824994503983, 140737259836008, 140737259835960, 0, 46912259801784, 0, 140737259836008, 93825000034176, 0, 0, 140737488345344, 93824993978237, 4066447928, 93825000034176, 0, 0}
            }
          }}
        save_jump = {{
            __jmpbuf = {0, 32880, 140737488345232, 140737266328160, 140737488345200, 140737259226872, 140737259226872, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {93825000067056, 93824994486998, 0, 140737488345184, 93824994508583, 140737266328160, 12884891664, 0, 32880, 140737259226872, 140737266328160, 93824995129573, 51539607552, 140737259226877, 140737259226872, 93824995130016}
            }
          }}
        tem = XIL(0)
        save = XIL(0x5555556fe77d)
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = true
        orig_kboard = 0x555555d07730
#62 0x00005555556f8848 in read_key_sequence (keybuf=0x7fffffffdcc0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at ../../master/src/keyboard.c:9491
        interrupted_kboard = 0x555555d07730
        interrupted_frame = 0x555555d61a00
        key = XIL(0)
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = XIL(0)
        count = 3
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x555556d18ed3)
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {
          parent = XIL(0x555555d65f43),
          map = XIL(0x555555d65f43),
          start = 0,
          end = 0
        }
        keytran = {
          parent = XIL(0x7ffff2c29383),
          map = XIL(0x7ffff2c29383),
          start = 0,
          end = 0
        }
        indec = {
          parent = XIL(0x555555d65f33),
          map = XIL(0x555555d65f33),
          start = 0,
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        dummyflag = false
        starting_buffer = 0x7ffff257c6f8
        fake_prefixed_keys = XIL(0)
        first_event = XIL(0)
        second_event = XIL(0)
#63 0x00005555556e6d1f in command_loop_1 () at ../../master/src/keyboard.c:1353
        cmd = XIL(0x7fffffffde10)
        keybuf = {XIL(0x7fffffffdd40), XIL(0x7ffff2c42290), XIL(0x100000000), XIL(0), XIL(0), XIL(0x8520), XIL(0x130), XIL(0x555555ccd4a0), XIL(0x555555ccd4a0), XIL(0), XIL(0x7fffffffdd60), make_fixnum(23456248660141), make_fixnum(1073741824), XIL(0x7fffffffdd80), XIL(0x555555cc4f80), XIL(0), XIL(0), XIL(0x7fffffffdd60), XIL(0x5555557979dd), XIL(0xf257c6fd), XIL(0x7fffffffddc0), XIL(0x5555557a0538), XIL(0x555555cc4f80), XIL(0), XIL(0), XIL(0x7fffffffdda0), XIL(0x5555557979dd), XIL(0xf257c6fd), XIL(0x7fffffffdde0), make_fixnum(23456248654899)}
        i = 0
        prev_modiff = 0
        prev_buffer = 0x0
        already_adjusted = false
#64 0x000055555579acc9 in internal_condition_case (bfun=0x5555556e68d9 <command_loop_1>, handlers=XIL(0x90), hfun=0x5555556e6075 <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555556e3c40)
        c = 0x555555dc03e0
#65 0x00005555556e65a1 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = XIL(0)
#66 0x000055555579a4d7 in internal_catch (tag=XIL(0xd9e0), func=0x5555556e6574 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555da9710
#67 0x00005555556e6540 in command_loop () at ../../master/src/keyboard.c:1073
#68 0x00005555556e5c46 in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf50)
#69 0x00005555556e5dc9 in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#70 0x00005555556e27f6 in main (argc=2, argv=0x7fffffffe1b8) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"kill-buffer" (0xfffeca60)
0x56e58d70 PVEC_COMPILED
"substitute-command-keys" (0xfffed728)
"redisplay_internal (C function)" (0x0)
"delete-process" (0xffff9dd8)
"server-delete-client" (0xffffa3b0)
"server-execute" (0xffffa970)
0x56dff400 PVEC_COMPILED
"server-execute-continuation" (0xffffb3e0)
"server-process-filter" (0xffffbc98)


-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19 14:18                                 ` Michael Welsh Duggan
@ 2021-03-19 14:21                                   ` Michael Welsh Duggan
  2021-03-19 15:00                                     ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-19 14:21 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

I didn't realize that gdb logging appended to my old log.  Here's the
portion you wanted:

#0  Fkill_buffer (buffer_or_name=XIL(0x555556da6cd5))
    at ../../master/src/buffer.c:1840
        buffer = XIL(0x555556da6cd5)
        b = 0x555556da6cd0
        tem = XIL(0x55555570ee2b)
        m = 0x7ffffffec990
#1  0x000055555579e96e in funcall_subr
    (subr=0x555555c4c080 <Skill_buffer>, numargs=1, args=0x7ffffffeca60)
    at ../../master/src/eval.c:2987
        internal_argbuf = 
          {XIL(0x7ffff2b2d86d), XIL(0), XIL(0), XIL(0x7ffffffec9a0), XIL(0x555555cc4f80), XIL(0x1000000000), XIL(0x555555c4c080), XIL(0x7ffffffec9c8)}
        internal_args = 0x7ffffffeca60
#2  0x000055555579e582 in Ffuncall (nargs=2, args=0x7ffffffeca58)
    at ../../master/src/eval.c:2914
        fun = XIL(0x555555c4c085)
        original_fun = XIL(0x2aaa9c8bf8c0)
        funcar = make_fixnum(0)
        numargs = 1
        val = XIL(0)
        count = 35
#3  0x00005555557e9a00 in exec_byte_code
    (bytestr=XIL(0x7ffff25d43f4), vector=XIL(0x555556d4ec7d), maxdepth=make_fixnum(2), args_template=make_fixnum(0), nargs=0, args=0x7ffffffecf10)
    at ../../master/src/bytecode.c:632
        op = 1
        type = (CATCHER_ALL | unknown: 0x558181a0)
        targets = 
          {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 3
        bytestr_length = 10
        vectorp = 0x555556d4ec80
        quitcounter = 1 '\001'
        stack_items = 3
        sa_avail = 16350
        sa_count = 35
        alloc = 0x7ffffffeca50
        stack_base = 0x7ffffffeca50
        top = 0x7ffffffeca58
        stack_lim = 0x7ffffffeca68
        bytestr_data = 0x7ffffffeca68 "\301\300!\205\t"
        pc = 0x7ffffffeca71 "\207\376\377\377\177"
        count = 35
        result = make_fixnum(8)
#4  0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x555556e58d75), syms_left=make_fixnum(0), nargs=0, args=0x7ffffffecf10) at ../../master/src/eval.c:3036
#5  0x000055555579efae in funcall_lambda (fun=XIL(0x555556e58d75), nargs=0, arg_vector=0x7ffffffecf10) at ../../master/src/eval.c:3117
        val = XIL(0x7ffffffece90)
        syms_left = make_fixnum(0)
        next = XIL(0x1)
        lexenv = XIL(0x1800000000)
        count = 35
        i = 93824994606300
        optional = false
        rest = false
#6  0x000055555579e5c6 in Ffuncall (nargs=1, args=0x7ffffffecf08) at ../../master/src/eval.c:2916
        fun = XIL(0x555556e58d75)
        original_fun = XIL(0x555556e58d75)
        funcar = XIL(0x7ffffffecec0)
        numargs = 0
        val = XIL(0x7ffffffecf20)
        count = 34
#7  0x00005555557e8f1b in bcall0 (f=XIL(0x555556e58d75)) at ../../master/src/bytecode.c:340
#8  0x00005555557a0125 in do_one_unbind (this_binding=0x7ffffffecf80, unwinding=true, bindflag=SET_INTERNAL_UNBIND) at ../../master/src/eval.c:3575
#9  0x00005555557a04de in unbind_to (count=33, value=XIL(0)) at ../../master/src/eval.c:3713
        this_binding = {
          kind = SPECPDL_UNWIND,
          unwind = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>,
            arg = XIL(0x555556e58d75),
            eval_depth = 7
          },
          unwind_array = {
            kind = SPECPDL_UNWIND,
            nelts = 93824994938622,
            array = 0x555556e58d75
          },
          unwind_ptr = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>,
            arg = 0x555556e58d75
          },
          unwind_int = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>,
            arg = 1457884533
          },
          unwind_intmax = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>,
            arg = 93825018465653
          },
          unwind_excursion = {
            kind = SPECPDL_UNWIND,
            marker = make_fixnum(23456248734655),
            window = XIL(0x555556e58d75)
          },
          unwind_void = {
            kind = SPECPDL_UNWIND,
            func = 0x5555557e8efe <bcall0>
          },
          let = {
            kind = SPECPDL_UNWIND,
            symbol = make_fixnum(23456248734655),
            old_value = XIL(0x555556e58d75),
            where = XIL(0x7),
            saved_value = XIL(0)
          },
          bt = {
            kind = SPECPDL_UNWIND,
            debug_on_exit = false,
            function = make_fixnum(23456248734655),
            args = 0x555556e58d75,
            nargs = 7
          }
        }
        quitf = XIL(0)
#10 0x00005555557e9ab1 in exec_byte_code (bytestr=XIL(0x7ffff291441c), vector=XIL(0x7ffff29140cd), maxdepth=make_fixnum(23), args_template=make_fixnum(257), nargs=1, args=0x7ffffffed730) at ../../master/src/bytecode.c:652
        op = 2
        type = (unknown: 0xf2c42280)
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 51
        bytestr_length = 494
        vectorp = 0x7ffff29140d0
        quitcounter = 44 ','
        stack_items = 24
        sa_avail = 15698
        sa_count = 32
        alloc = 0x7ffffffecfd0
        stack_base = 0x7ffffffecfd0
        top = 0x7ffffffed000
        stack_lim = 0x7ffffffed090
        bytestr_data = 0x7ffffffed090 "\211??\205\355\001\b\302p\001\031\303\304\302\"r\211q\210\305\306\002\"\216\004c\210eb\210`dW\203\345\001`lj\211\211g\310U\203\234\001\311\061:"
        pc = 0x7ffffffed278 "\262\001)\266\203\207"
        count = 32
        result = XIL(0xc6002383a2010007)
#11 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x7ffff291409d), syms_left=make_fixnum(257), nargs=1, args=0x7ffffffed728) at ../../master/src/eval.c:3036
#12 0x000055555579efae in funcall_lambda (fun=XIL(0x7ffff291409d), nargs=1, arg_vector=0x7ffffffed728) at ../../master/src/eval.c:3117
        val = XIL(0x7ffffffed6a0)
        syms_left = make_fixnum(257)
        next = XIL(0)
        lexenv = XIL(0x1800000000)
        count = 32
        i = 93824994606300
        optional = false
        rest = false
#13 0x000055555579e5c6 in Ffuncall (nargs=2, args=0x7ffffffed720) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff291409d)
        original_fun = XIL(0xcff0)
        funcar = XIL(0x555555cc4f80)
        numargs = 1
        val = XIL(0)
        count = 31
#14 0x000055555579de5b in call1 (fn=XIL(0xcff0), arg1=XIL(0x7ffff276d6fc)) at ../../master/src/eval.c:2774
#15 0x00005555556e8cac in help_echo_substitute_command_keys (help=XIL(0x7ffff276d6fc)) at ../../master/src/keyboard.c:2042
#16 0x00005555556f46c0 in parse_menu_item (item=XIL(0x7ffff276d6eb), inmenubar=0) at ../../master/src/keyboard.c:7700
        help = XIL(0x7ffff276d6fc)
        li = {
          tortoise = XIL(0x7ffff292d363),
          max = 2,
          n = 0,
          q = 1
        }
        def = XIL(0x555556c64823)
        tem = XIL(0xea0)
        item_string = XIL(0x9ae0)
        start = XIL(0x7ffff292d353)
        filter = XIL(0)
        keyhint = XIL(0)
        i = 8
#17 0x000055555561da4c in single_menu_item (key=XIL(0x2aaa9ca7dfa8), item=XIL(0x7ffff292d333), dummy=XIL(0), skp_v=0x7ffffffeda60) at ../../master/src/menu.c:323
        map = XIL(0x7ffffffed9e0)
        item_string = XIL(0x30)
        enabled = XIL(0x7ffff29295a3)
        res = false
        skp = 0x7ffffffeda60
#18 0x00005555557003a6 in map_keymap_item (fun=0x55555561d9ff <single_menu_item>, args=XIL(0), key=XIL(0x2aaa9ca7dfa8), val=XIL(0x7ffff292d333), data=0x7ffffffeda60) at ../../master/src/keymap.c:502
#19 0x000055555570051a in map_keymap_internal (map=XIL(0x555556c64823), fun=0x55555561d9ff <single_menu_item>, args=XIL(0), data=0x7ffffffeda60) at ../../master/src/keymap.c:549
        binding = XIL(0x555556c5d203)
        tail = XIL(0x555556c645f3)
#20 0x00005555557007c2 in map_keymap_canonical (map=XIL(0x555556c64823), fun=0x55555561d9ff <single_menu_item>, args=XIL(0), data=0x7ffffffeda60) at ../../master/src/keymap.c:609
#21 0x000055555561d971 in single_keymap_panes (keymap=XIL(0x7ffff29295a3), pane_name=XIL(0x7ffff2631c84), prefix=XIL(0x2aaa9c96cd20), maxdepth=10) at ../../master/src/menu.c:292
        skp = {
          pending_maps = XIL(0),
          maxdepth = 10,
          notbuttons = 0
        }
#22 0x000055555561e640 in parse_single_submenu (item_key=XIL(0x2aaa9c96cd20), item_name=XIL(0x7ffff2631c84), maps=XIL(0)) at ../../master/src/menu.c:556
        prompt = XIL(0x7ffff2631c84)
        i = 0
        mapvec = 0x7ffffffedab0
        top_level_items = false
        sa_avail = 16376
        sa_count = 31
        len = 1
#23 0x00005555556218f4 in set_frame_menubar (f=0x555556d8c360, deep_p=true) at ../../master/src/xmenu.c:794
        key = XIL(0x2aaa9c96cd20)
        string = XIL(0x7ffff2631c84)
        maps = XIL(0x555556c5da43)
        buffer = XIL(0x7ffff257c6fd)
        specpdl_count = 25
        previous_menu_items_used = 5427
        previous_items = 0x7ffffffedc20
        subitems = 9
        prev = 0x7ffff257c6f8
        menubar_widget = 0x555556f93790
        old_widget = 0x555556f93790
        id = 1
        items = XIL(0x555556d9cead)
        wv = 0x3
        first_wv = 0x7fffffff85b0
        prev_wv = 0x0
        i = 0
        submenu_start = 0x7ffffffedbf0
        submenu_end = 0x7ffffffedbc0
        submenu_top_level_items = 0x7ffffffedb70
        submenu_n_panes = 0x7ffffffedb90
#24 0x00005555555db3e4 in update_menu_bar (f=0x555556d8c360, save_match_data=false, hooks_run=true) at ../../master/src/xdisp.c:12913
        prev = 0x7ffff257c6f8
        count = 22
        window = XIL(0x555556e2e2c5)
        w = 0x555556e2e2c0
#25 0x00005555555db062 in prepare_menu_bars () at ../../master/src/xdisp.c:12799
        f = 0x555556d8c360
        w = 0x555556e2e2c0
        tail = XIL(0x5555569d0ed3)
        frame = XIL(0x555556d8c365)
        count = 21
        menu_bar_hooks_run = false
        all_windows = true
        some_windows = false
#26 0x00005555555e14d7 in redisplay_internal () at ../../master/src/xdisp.c:15661
        w = 0x555556e2e2c0
        sw = 0x555556e2e2c0
        fr = 0x555556d8c360
        pending = false
        must_finish = false
        match_p = false
        tlbufpos = {
          charpos = 139642271694850,
          bytepos = 140737488329552
        }
        tlendpos = {
          charpos = 140737488329520,
          bytepos = 93824994640165
        }
        number_of_visible_frames = 2
        count = 18
        sf = 0x555556d8c360
        polling_stopped_here = false
        tail = XIL(0)
        frame = XIL(0x555555d61a05)
        hscroll_retries = 0
        garbaged_frame_retries = 0
        consider_all_windows_p = false
        update_miniwindow_p = false
#27 0x00005555555e2e05 in redisplay_preserve_echo_area (from_where=13) at ../../master/src/xdisp.c:16382
        count = 17
#28 0x00005555557efd2d in Fdelete_process (process=XIL(0x555556da8c1d)) at ../../master/src/process.c:1090
        p = 0x555556da8c18
#29 0x000055555579e96e in funcall_subr (subr=0x555555c55e00 <Sdelete_process>, numargs=1, args=0x7fffffff9dd8) at ../../master/src/eval.c:2987
        internal_argbuf = {XIL(0x10), XIL(0x3fd0), make_fixnum(23456248621749), XIL(0x2f2704730), XIL(0x555555cc4f80), XIL(0x1000000000), XIL(0x555555c55e00), XIL(0x7fffffff9d28)}
        internal_args = 0x7fffffff9dd8
#30 0x000055555579e582 in Ffuncall (nargs=2, args=0x7fffffff9dd0) at ../../master/src/eval.c:2914
        fun = XIL(0x555555c55e05)
        original_fun = XIL(0x2aaa9ca9f370)
        funcar = make_fixnum(23456248621749)
        numargs = 1
        val = XIL(0)
        count = 16
#31 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x555556536fb4), vector=XIL(0x5555564f336d), maxdepth=make_fixnum(10), args_template=make_fixnum(513), nargs=1, args=0x7fffffffa3b8) at ../../master/src/bytecode.c:632
        op = 1
        type = (CONDITION_CASE | CATCHER_ALL | unknown: 0x557101b0)
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 34
        bytestr_length = 196
        vectorp = 0x5555564f3370
        quitcounter = 3 '\003'
        stack_items = 11
        sa_avail = 16100
        sa_count = 16
        alloc = 0x7fffffff9db0
        stack_base = 0x7fffffff9db0
        top = 0x7fffffff9dd0
        stack_lim = 0x7fffffff9e08
        bytestr_data = 0x7fffffff9e08 "\305\306\002\205\a"
        pc = 0x7fffffff9ec4 "\210\305\341\004\"\262\001\207"
        count = 16
        result = XIL(0)
#32 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x5555564f3485), syms_left=make_fixnum(513), nargs=1, args=0x7fffffffa3b0) at ../../master/src/eval.c:3036
#33 0x000055555579efae in funcall_lambda (fun=XIL(0x5555564f3485), nargs=1, arg_vector=0x7fffffffa3b0) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffa2f0)
        syms_left = make_fixnum(513)
        next = XIL(0)
        lexenv = XIL(0x1800000000)
        count = 16
        i = 93824994606300
        optional = false
        rest = false
#34 0x000055555579e5c6 in Ffuncall (nargs=2, args=0x7fffffffa3a8) at ../../master/src/eval.c:2916
        fun = XIL(0x5555564f3485)
        original_fun = XIL(0x794bd0)
        funcar = XIL(0x7fffffffa350)
        numargs = 1
        val = XIL(0)
        count = 15
#35 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x55555653fb84), vector=XIL(0x5555564f6e4d), maxdepth=make_fixnum(15), args_template=make_fixnum(1799), nargs=7, args=0x7fffffffa9a8) at ../../master/src/bytecode.c:632
        op = 1
        type = CONDITION_CASE
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 42
        bytestr_length = 233
        vectorp = 0x5555564f6e50
        quitcounter = 1 '\001'
        stack_items = 16
        sa_avail = 16023
        sa_count = 14
        alloc = 0x7fffffffa360
        stack_base = 0x7fffffffa360
        top = 0x7fffffffa3a8
        stack_lim = 0x7fffffffa3e0
        bytestr_data = 0x7fffffffa3e0 "\305", <incomplete sequence \342>
        pc = 0x7fffffffa435 "\210\202l"
        count = 14
        result = XIL(0x7fffffff94c0)
#36 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x5555564f6fa5), syms_left=make_fixnum(1799), nargs=7, args=0x7fffffffa970) at ../../master/src/eval.c:3036
#37 0x000055555579efae in funcall_lambda (fun=XIL(0x5555564f6fa5), nargs=7, arg_vector=0x7fffffffa970) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffa8f0)
        syms_left = make_fixnum(1799)
        next = XIL(0x30)
        lexenv = XIL(0x1800000000)
        count = 14
        i = 93824994606300
        optional = false
        rest = false
#38 0x000055555579e5c6 in Ffuncall (nargs=8, args=0x7fffffffa968) at ../../master/src/eval.c:2916
        fun = XIL(0x5555564f6fa5)
        original_fun = XIL(0x876290)
        funcar = XIL(0x7fffffffa950)
        numargs = 7
        val = XIL(0x555555dd01a4)
        count = 13
#39 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x55555653fb24), vector=XIL(0x555556db15f5), maxdepth=make_fixnum(8), args_template=make_fixnum(0), nargs=0, args=0x7fffffffae80) at ../../master/src/bytecode.c:632
        op = 7
        type = (unknown: 0x5577ef7c)
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 13
        bytestr_length = 46
        vectorp = 0x555556db15f8
        quitcounter = 1 '\001'
        stack_items = 9
        sa_avail = 16266
        sa_count = 11
        alloc = 0x7fffffffa960
        stack_base = 0x7fffffffa960
        top = 0x7fffffffa968
        stack_lim = 0x7fffffffa9a8
        bytestr_data = 0x7fffffffa9a8 "r\310\016\v!q\210Ţ\203\030"
        pc = 0x7fffffffa9d4 "*\207"
        count = 11
        result = XIL(0x555556d18793)
#40 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x555556dff405), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffae80) at ../../master/src/eval.c:3036
#41 0x000055555579efae in funcall_lambda (fun=XIL(0x555556dff405), nargs=0, arg_vector=0x7fffffffae80) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffadf0)
        syms_left = make_fixnum(0)
        next = XIL(0x7fffffffae20)
        lexenv = XIL(0x1800000000)
        count = 11
        i = 93824994606300
        optional = false
        rest = false
#42 0x000055555579e5c6 in Ffuncall (nargs=1, args=0x7fffffffae78) at ../../master/src/eval.c:2916
        fun = XIL(0x555556dff405)
        original_fun = XIL(0x555556dff405)
        funcar = XIL(0x5555557e84a5)
        numargs = 0
        val = XIL(0x100000000)
        count = 10
#43 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x55555653adb4), vector=XIL(0x5555565006ed), maxdepth=make_fixnum(6), args_template=make_fixnum(257), nargs=1, args=0x7fffffffb3e8) at ../../master/src/bytecode.c:632
        op = 0
        type = CONDITION_CASE
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 5
        bytestr_length = 25
        vectorp = 0x5555565006f0
        quitcounter = 1 '\001'
        stack_items = 7
        sa_avail = 16303
        sa_count = 10
        alloc = 0x7fffffffae60
        stack_base = 0x7fffffffae60
        top = 0x7fffffffae78
        stack_lim = 0x7fffffffae98
        bytestr_data = 0x7fffffffae98 "\300\001\301\"\302\002\301\303#\210\211\205\030"
        pc = 0x7fffffffaeac "0\207\210Ç\262\377\377\377\177"
        count = 10
        result = XIL(0)
#44 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x55555650071d), syms_left=make_fixnum(257), nargs=1, args=0x7fffffffb3e0) at ../../master/src/eval.c:3036
#45 0x000055555579efae in funcall_lambda (fun=XIL(0x55555650071d), nargs=1, arg_vector=0x7fffffffb3e0) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffb2d0)
        syms_left = make_fixnum(257)
        next = XIL(0x5555557a301c)
        lexenv = XIL(0x1800000000)
        count = 10
        i = 93824994606300
        optional = false
        rest = false
#46 0x000055555579e5c6 in Ffuncall (nargs=2, args=0x7fffffffb3d8) at ../../master/src/eval.c:2916
        fun = XIL(0x55555650071d)
        original_fun = XIL(0x8735c0)
        funcar = XIL(0x555556d8c365)
        numargs = 1
        val = XIL(0)
        count = 9
#47 0x00005555557e9a00 in exec_byte_code (bytestr=XIL(0x55555653add4), vector=XIL(0x5555564f6b7d), maxdepth=make_fixnum(31), args_template=make_fixnum(514), nargs=2, args=0x7fffffffbca8) at ../../master/src/bytecode.c:632
        op = 1
        type = CONDITION_CASE
        targets = {0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec748 <exec_byte_code+14378>, 0x5555557ec74a <exec_byte_code+14380>, 0x5555557ec74c <exec_byte_code+14382>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec74e <exec_byte_code+14384>, 0x5555557ec7b3 <exec_byte_code+14485>, 0x5555557ec827 <exec_byte_code+14601>, 0x5555557e93ac <exec_byte_code+1166>, 0x5555557e93ae <exec_byte_code+1168>, 0x5555557e93b0 <exec_byte_code+1170>, 0x5555557e93b2 <exec_byte_code+1172>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93b4 <exec_byte_code+1174>, 0x5555557e93ba <exec_byte_code+1180>, 0x5555557e937b <exec_byte_code+1117>, 0x5555557e972a <exec_byte_code+2060>, 0x5555557e972c <exec_byte_code+2062>, 0x5555557e972e <exec_byte_code+2064>, 0x5555557e9730 <exec_byte_code+2066>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9732 <exec_byte_code+2068>, 0x5555557e9767 <exec_byte_code+2121>, 0x5555557e9738 <exec_byte_code+2074>, 0x5555557e9918 <exec_byte_code+2554>, 0x5555557e991a <exec_byte_code+2556>, 0x5555557e991c <exec_byte_code+2558>, 0x5555557e991e <exec_byte_code+2560>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e9920 <exec_byte_code+2562>, 0x5555557e98d2 <exec_byte_code+2484>, 0x5555557e98e9 <exec_byte_code+2507>, 0x5555557e99cd <exec_byte_code+2735>, 0x5555557e99cf <exec_byte_code+2737>, 0x5555557e99d1 <exec_byte_code+2739>, 0x5555557e99d3 <exec_byte_code+2741>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e99d5 <exec_byte_code+2743>, 0x5555557e9987 <exec_byte_code+2665>, 0x5555557e999e <exec_byte_code+2688>, 0x5555557e9a7f <exec_byte_code+2913>, 0x5555557e9a81 <exec_byte_code+2915>, 0x5555557e9a83 <exec_byte_code+2917>, 0x5555557e9a85 <exec_byte_code+2919>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a87 <exec_byte_code+2921>, 0x5555557e9a39 <exec_byte_code+2843>, 0x5555557e9a50 <exec_byte_code+2866>, 0x5555557ea2e7 <exec_byte_code+5065>, 0x5555557ea1ca <exec_byte_code+4780>, 0x5555557ea1c1 <exec_byte_code+4771>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ea521 <exec_byte_code+5635>, 0x5555557ea602 <exec_byte_code+5860>, 0x5555557ea65f <exec_byte_code+5953>, 0x5555557ea6bf <exec_byte_code+6049>, 0x5555557ea721 <exec_byte_code+6147>, 0x5555557e95b7 <exec_byte_code+1689>, 0x5555557e9632 <exec_byte_code+1812>, 0x5555557ea79a <exec_byte_code+6268>, 0x5555557e9528 <exec_byte_code+1546>, 0x5555557e969a <exec_byte_code+1916>, 0x5555557ea802 <exec_byte_code+6372>, 0x5555557ea86a <exec_byte_code+6476>, 0x5555557ea8b2 <exec_byte_code+6548>, 0x5555557ea91a <exec_byte_code+6652>, 0x5555557ea980 <exec_byte_code+6754>, 0x5555557eaa66 <exec_byte_code+6984>, 0x5555557eaaae <exec_byte_code+7056>, 0x5555557eab16 <exec_byte_code+7160>, 0x5555557eab9b <exec_byte_code+7293>, 0x5555557eabe3 <exec_byte_code+7365>, 0x5555557eac2b <exec_byte_code+7437>, 0x5555557eac93 <exec_byte_code+7541>, 0x5555557eacfb <exec_byte_code+7645>, 0x5555557ead63 <exec_byte_code+7749>, 0x5555557eade8 <exec_byte_code+7882>, 0x5555557eae37 <exec_byte_code+7961>, 0x5555557eae86 <exec_byte_code+8040>, 0x5555557eaf4d <exec_byte_code+8239>, 0x5555557eafef <exec_byte_code+8401>, 0x5555557eb091 <exec_byte_code+8563>, 0x5555557eb0fe <exec_byte_code+8672>, 0x5555557eb16b <exec_byte_code+8781>, 0x5555557eb1d8 <exec_byte_code+8890>, 0x5555557eb245 <exec_byte_code+8999>, 0x5555557eb2b2 <exec_byte_code+9108>, 0x5555557eb301 <exec_byte_code+9187>, 0x5555557eb3a4 <exec_byte_code+9350>, 0x5555557eb3f3 <exec_byte_code+9429>, 0x5555557eb442 <exec_byte_code+9508>, 0x5555557eb491 <exec_byte_code+9587>, 0x5555557eb597 <exec_byte_code+9849>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557eb5f2 <exec_byte_code+9940>, 0x5555557eb63a <exec_byte_code+10012>, 0x5555557eb6fc <exec_byte_code+10206>, 0x5555557eb765 <exec_byte_code+10311>, 0x5555557eb7c0 <exec_byte_code+10402>, 0x5555557eb808 <exec_byte_code+10474>, 0x5555557eb84b <exec_byte_code+10541>, 0x5555557eb88e <exec_byte_code+10608>, 0x5555557eb8d9 <exec_byte_code+10683>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557eb931 <exec_byte_code+10771>, 0x5555557eb974 <exec_byte_code+10838>, 0x5555557eb9b7 <exec_byte_code+10905>, 0x5555557eb9fa <exec_byte_code+10972>, 0x5555557eba3d <exec_byte_code+11039>, 0x5555557eba80 <exec_byte_code+11106>, 0x5555557ea041 <exec_byte_code+4387>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ebac8 <exec_byte_code+11178>, 0x5555557ebb1a <exec_byte_code+11260>, 0x5555557ebb62 <exec_byte_code+11332>, 0x5555557ebbaa <exec_byte_code+11404>, 0x5555557ebc12 <exec_byte_code+11508>, 0x5555557ebc7a <exec_byte_code+11612>, 0x5555557ebcc2 <exec_byte_code+11684>, 0x5555557ebd7f <exec_byte_code+11873>, 0x5555557ebde7 <exec_byte_code+11977>, 0x5555557ebe4f <exec_byte_code+12081>, 0x5555557ebeb7 <exec_byte_code+12185>, 0x5555557ebefa <exec_byte_code+12252>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9f87 <exec_byte_code+4201>, 0x5555557e9b31 <exec_byte_code+3091>, 0x5555557e9496 <exec_byte_code+1400>, 0x5555557e9be2 <exec_byte_code+3268>, 0x5555557e9c66 <exec_byte_code+3400>, 0x5555557e9ce7 <exec_byte_code+3529>, 0x5555557e9f3b <exec_byte_code+4125>, 0x5555557e9f50 <exec_byte_code+4146>, 0x5555557e987f <exec_byte_code+2401>, 0x5555557ea00a <exec_byte_code+4332>, 0x5555557ea078 <exec_byte_code+4442>, 0x5555557ea109 <exec_byte_code+4587>, 0x5555557ea152 <exec_byte_code+4660>, 0x5555557ea333 <exec_byte_code+5141>, 0x5555557ea3b0 <exec_byte_code+5266>, 0x5555557ea435 <exec_byte_code+5399>, 0x5555557ea49b <exec_byte_code+5501>, 0x5555557e9ae3 <exec_byte_code+3013>, 0x5555557ebf42 <exec_byte_code+12324>, 0x5555557ebfc7 <exec_byte_code+12457>, 0x5555557ec00f <exec_byte_code+12529>, 0x5555557ec057 <exec_byte_code+12601>, 0x5555557ec09f <exec_byte_code+12673>, 0x5555557ec0e7 <exec_byte_code+12745>, 0x5555557ec14f <exec_byte_code+12849>, 0x5555557ec1b7 <exec_byte_code+12953>, 0x5555557ec21f <exec_byte_code+13057>, 0x5555557ec287 <exec_byte_code+13161>, 0x5555557ec398 <exec_byte_code+13434>, 0x5555557ec400 <exec_byte_code+13538>, 0x5555557ec468 <exec_byte_code+13642>, 0x5555557ec4b0 <exec_byte_code+13714>, 0x5555557ec518 <exec_byte_code+13818>, 0x5555557ec580 <exec_byte_code+13922>, 0x5555557ec5c8 <exec_byte_code+13994>, 0x5555557ec610 <exec_byte_code+14066>, 0x5555557eb4e0 <exec_byte_code+9666>, 0x5555557eb52f <exec_byte_code+9745>, 0x5555557ec65f <exec_byte_code+14145>, 0x5555557ec6c1 <exec_byte_code+14243>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557e9d68 <exec_byte_code+3658>, 0x5555557e9d85 <exec_byte_code+3687>, 0x5555557e9df4 <exec_byte_code+3798>, 0x5555557e9e63 <exec_byte_code+3909>, 0x5555557e9ecf <exec_byte_code+4017>, 0x5555557ea9ee <exec_byte_code+6864>, 0x5555557eaed5 <exec_byte_code+8119>, 0x5555557eb684 <exec_byte_code+10086>, 0x5555557ec8ba <exec_byte_code+14748>, 0x5555557ec92f <exec_byte_code+14865>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec9c5 <exec_byte_code+15015>, 0x5555557eca4c <exec_byte_code+15150>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ec723 <exec_byte_code+14341>, 0x5555557ecb9a <exec_byte_code+15484> <repeats 64 times>}
        const_length = 83
        bytestr_length = 967
        vectorp = 0x5555564f6b80
        quitcounter = 45 '-'
        stack_items = 32
        sa_avail = 15161
        sa_count = 9
        alloc = 0x7fffffffb340
        stack_base = 0x7fffffffb340
        top = 0x7fffffffb3d8
        stack_lim = 0x7fffffffb440
        bytestr_data = 0x7fffffffb440 "\305\062\306\003\306\307\002P\003\"\210\310\002\311\"\204U"
        pc = 0x7fffffffb7f7 "\266\220\060\202\305\003\201R"
        count = 9
        result = XIL(0x7fffffffb8a8)
#48 0x000055555579ec21 in fetch_and_exec_byte_code (fun=XIL(0x5555564f6e1d), syms_left=make_fixnum(514), nargs=2, args=0x7fffffffbc98) at ../../master/src/eval.c:3036
#49 0x000055555579efae in funcall_lambda (fun=XIL(0x5555564f6e1d), nargs=2, arg_vector=0x7fffffffbc98) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffbc20)
        syms_left = make_fixnum(514)
        next = XIL(0x1)
        lexenv = XIL(0x1800000000)
        count = 9
        i = 93824994606300
        optional = false
        rest = false
#50 0x000055555579e5c6 in Ffuncall (nargs=3, args=0x7fffffffbc90) at ../../master/src/eval.c:2916
        fun = XIL(0x5555564f6e1d)
        original_fun = XIL(0x873290)
        funcar = XIL(0)
        numargs = 2
        val = XIL(0)
        count = 8
#51 0x000055555579d89f in Fapply (nargs=2, args=0x7fffffffbd40) at ../../master/src/eval.c:2544
        i = 3
        funcall_nargs = 3
        funcall_args = 0x7fffffffbc90
        spread_arg = XIL(0)
        fun = XIL(0x5555564f6e1d)
        sa_avail = 16360
        sa_count = 8
        numargs = 2
        retval = XIL(0)
#52 0x000055555579de09 in apply1 (fn=XIL(0x873290), arg=XIL(0x555556d186f3)) at ../../master/src/eval.c:2760
#53 0x00005555557fa958 in read_process_output_call (fun_and_args=XIL(0x555556d186e3)) at ../../master/src/process.c:5930
#54 0x000055555579ad70 in internal_condition_case_1 (bfun=0x5555557fa92a <read_process_output_call>, arg=XIL(0x555556d186e3), handlers=XIL(0x90), hfun=0x5555557fa95a <read_process_output_error_handler>) at ../../master/src/eval.c:1463
        val = XIL(0x555556da8c1d)
        c = 0x555555dc0550
#55 0x00005555557fb24a in read_and_dispose_of_process_output (p=0x555556da8c18, chars=0x7fffffffbe50 "-env GJS_DEBUG_TOPICS=JS&_ERROR;JS&_LOG -env USER=md5i -env XDG_SESSION_TYPE=wayland -env SHLVL=0 -env HOME=/home/md5i -env DESKTOP_SESSION=gnome -env GIO_LAUNCHED_DESKTOP_FILE=/home/md5i/.local/share"..., nbytes=1383, coding=0x555555eccd50) at ../../master/src/process.c:6153
        outstream = XIL(0x873290)
        text = XIL(0x555556db8a84)
        outer_running_asynch_code = false
        waiting = -1
#56 0x00005555557fae68 in read_process_output (proc=XIL(0x555556da8c1d), channel=4) at ../../master/src/process.c:6063
        nbytes = 1383
        p = 0x555556da8c18
        coding = 0x555555eccd50
        carryover = 0
        readmax = 4096
        count = 5
        odeactivate = XIL(0)
        chars = 0x7fffffffbe50 "-env GJS_DEBUG_TOPICS=JS&_ERROR;JS&_LOG -env USER=md5i -env XDG_SESSION_TYPE=wayland -env SHLVL=0 -env HOME=/home/md5i -env DESKTOP_SESSION=gnome -env GIO_LAUNCHED_DESKTOP_FILE=/home/md5i/.local/share"...
        sa_avail = 12224
        sa_count = 5
#57 0x00005555557fa1a3 in wait_reading_process_output (time_limit=0, nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0), wait_proc=0x0, just_wait_proc=0) at ../../master/src/process.c:5749
        nread = -2011028988
        process_skipped = false
        child_fd = 6
        channel = 4
        nfds = 1
        Available = {
          fds_bits = {16, 0 <repeats 15 times>}
        }
        Writeok = {
          fds_bits = {0 <repeats 16 times>}
        }
        check_write = true
        check_delay = 0
        no_avail = false
        xerrno = 2
        proc = XIL(0x555556da8c1d)
        timeout = {
          tv_sec = 40,
          tv_nsec = 613408153
        }
        end_time = {
          tv_sec = 140737488343328,
          tv_nsec = 93824994634785
        }
        timer_delay = {
          tv_sec = 40,
          tv_nsec = 613408153
        }
        got_output_end_time = {
          tv_sec = 1616263190,
          tv_nsec = 619007247
        }
        wait = FOREVER
        got_some_output = -1
        prev_wait_proc_nbytes_read = 0
        retry_for_async = false
        count = 4
        now = {
          tv_sec = 0,
          tv_nsec = -1
        }
#58 0x00005555556ecbfd in kbd_buffer_get_event (kbp=0x7fffffffd478, used_mouse_menu=0x7fffffffdabf, end_time=0x0) at ../../master/src/keyboard.c:3869
        do_display = true
        obj = XIL(0x24e5275c)
#59 0x00005555556e8f68 in read_event_from_main_queue (end_time=0x0, local_getcjmp=0x7fffffffd850, used_mouse_menu=0x7fffffffdabf) at ../../master/src/keyboard.c:2159
        c = XIL(0)
        save_jump = {{
            __jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {0 <repeats 16 times>}
            }
          }}
        kb = 0x3a352944002
        count = 3
#60 0x00005555556e9201 in read_decoded_event_from_main_queue (end_time=0x0, local_getcjmp=0x7fffffffd850, prev_event=XIL(0), used_mouse_menu=0x7fffffffdabf) at ../../master/src/keyboard.c:2223
        nextevt = XIL(0)
        frame = 0x0
        terminal = 0x1556ff75f
        events = {XIL(0x555556ae1d5d), XIL(0x555555cc4f80), XIL(0), XIL(0), XIL(0x7fffffffd668), XIL(0x5555556e3c40), XIL(0), XIL(0x7fffffffd690), XIL(0x5555556e685b), XIL(0x555556d18eb3), XIL(0), XIL(0), XIL(0x7fffffffd6c0), make_fixnum(23456248475707), XIL(0), XIL(0x1ffffd6c0)}
        n = 0
#61 0x00005555556ea809 in read_char (commandflag=1, map=XIL(0x555556d18ed3), prev_event=XIL(0), used_mouse_menu=0x7fffffffdabf, end_time=0x0) at ../../master/src/keyboard.c:2833
        c = XIL(0)
        jmpcount = 3
        local_getcjmp = {{
            __jmpbuf = {0, -8377641525854313018, 93824992490624, 0, 0, 0, -8377641526313589306, -2384103731268917818},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {93824994503983, 140737259836008, 140737259835960, 0, 46912259801784, 0, 140737259836008, 93825000034176, 0, 0, 140737488345344, 93824993978237, 4066447928, 93825000034176, 0, 0}
            }
          }}
        save_jump = {{
            __jmpbuf = {0, 32880, 140737488345232, 140737266328160, 140737488345200, 140737259226872, 140737259226872, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {93825000067056, 93824994486998, 0, 140737488345184, 93824994508583, 140737266328160, 12884891664, 0, 32880, 140737259226872, 140737266328160, 93824995129573, 51539607552, 140737259226877, 140737259226872, 93824995130016}
            }
          }}
        tem = XIL(0)
        save = XIL(0x5555556fe77d)
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = true
        orig_kboard = 0x555555d07730
#62 0x00005555556f8848 in read_key_sequence (keybuf=0x7fffffffdcc0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at ../../master/src/keyboard.c:9491
        interrupted_kboard = 0x555555d07730
        interrupted_frame = 0x555555d61a00
        key = XIL(0)
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = XIL(0)
        count = 3
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x555556d18ed3)
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {
          parent = XIL(0x555555d65f43),
          map = XIL(0x555555d65f43),
          start = 0,
          end = 0
        }
        keytran = {
          parent = XIL(0x7ffff2c29383),
          map = XIL(0x7ffff2c29383),
          start = 0,
          end = 0
        }
        indec = {
          parent = XIL(0x555555d65f33),
          map = XIL(0x555555d65f33),
          start = 0,
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        dummyflag = false
        starting_buffer = 0x7ffff257c6f8
        fake_prefixed_keys = XIL(0)
        first_event = XIL(0)
        second_event = XIL(0)
#63 0x00005555556e6d1f in command_loop_1 () at ../../master/src/keyboard.c:1353
        cmd = XIL(0x7fffffffde10)
        keybuf = {XIL(0x7fffffffdd40), XIL(0x7ffff2c42290), XIL(0x100000000), XIL(0), XIL(0), XIL(0x8520), XIL(0x130), XIL(0x555555ccd4a0), XIL(0x555555ccd4a0), XIL(0), XIL(0x7fffffffdd60), make_fixnum(23456248660141), make_fixnum(1073741824), XIL(0x7fffffffdd80), XIL(0x555555cc4f80), XIL(0), XIL(0), XIL(0x7fffffffdd60), XIL(0x5555557979dd), XIL(0xf257c6fd), XIL(0x7fffffffddc0), XIL(0x5555557a0538), XIL(0x555555cc4f80), XIL(0), XIL(0), XIL(0x7fffffffdda0), XIL(0x5555557979dd), XIL(0xf257c6fd), XIL(0x7fffffffdde0), make_fixnum(23456248654899)}
        i = 0
        prev_modiff = 0
        prev_buffer = 0x0
        already_adjusted = false
#64 0x000055555579acc9 in internal_condition_case (bfun=0x5555556e68d9 <command_loop_1>, handlers=XIL(0x90), hfun=0x5555556e6075 <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555556e3c40)
        c = 0x555555dc03e0
#65 0x00005555556e65a1 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = XIL(0)
#66 0x000055555579a4d7 in internal_catch (tag=XIL(0xd9e0), func=0x5555556e6574 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555da9710
#67 0x00005555556e6540 in command_loop () at ../../master/src/keyboard.c:1073
#68 0x00005555556e5c46 in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf50)
#69 0x00005555556e5dc9 in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#70 0x00005555556e27f6 in main (argc=2, argv=0x7fffffffe1b8) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"kill-buffer" (0xfffeca60)
0x56e58d70 PVEC_COMPILED
"substitute-command-keys" (0xfffed728)
"redisplay_internal (C function)" (0x0)
"delete-process" (0xffff9dd8)
"server-delete-client" (0xffffa3b0)
"server-execute" (0xffffa970)
0x56dff400 PVEC_COMPILED
"server-execute-continuation" (0xffffb3e0)
"server-process-filter" (0xffffbc98)

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19 14:21                                   ` Michael Welsh Duggan
@ 2021-03-19 15:00                                     ` Eli Zaretskii
  2021-03-19 15:14                                       ` Michael Welsh Duggan
  2021-03-23 14:18                                       ` Michael Welsh Duggan
  0 siblings, 2 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-19 15:00 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>         "schwab@linux-m68k.org"
>  <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Fri, 19 Mar 2021 10:21:18 -0400
> 
> Lisp Backtrace:
> "kill-buffer" (0xfffeca60)
> 0x56e58d70 PVEC_COMPILED
> "substitute-command-keys" (0xfffed728)
> "redisplay_internal (C function)" (0x0)

Thanks.  This case isn't interesting, because this is a temporary
buffer we don't display.  So I guess we need to augment the breakpoint
condition:

  break buffer.c:1840 if redisplaying_p != 0 && b->window_count > 0





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19 15:00                                     ` Eli Zaretskii
@ 2021-03-19 15:14                                       ` Michael Welsh Duggan
  2021-03-23 14:18                                       ` Michael Welsh Duggan
  1 sibling, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-19 15:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>>         "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Fri, 19 Mar 2021 10:21:18 -0400
>> 
>> Lisp Backtrace:
>> "kill-buffer" (0xfffeca60)
>> 0x56e58d70 PVEC_COMPILED
>> "substitute-command-keys" (0xfffed728)
>> "redisplay_internal (C function)" (0x0)
>
> Thanks.  This case isn't interesting, because this is a temporary
> buffer we don't display.  So I guess we need to augment the breakpoint
> condition:
>
>   break buffer.c:1840 if redisplaying_p != 0 && b->window_count > 0

Okay.  I'll run with that for a while and see if I can't trigger the
crash (or breakpoint) again.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-19 15:00                                     ` Eli Zaretskii
  2021-03-19 15:14                                       ` Michael Welsh Duggan
@ 2021-03-23 14:18                                       ` Michael Welsh Duggan
  2021-03-23 15:02                                         ` Eli Zaretskii
  2021-03-23 15:23                                         ` martin rudalics
  1 sibling, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-23 14:18 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>>         "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Fri, 19 Mar 2021 10:21:18 -0400
>> 
>> Lisp Backtrace:
>> "kill-buffer" (0xfffeca60)
>> 0x56e58d70 PVEC_COMPILED
>> "substitute-command-keys" (0xfffed728)
>> "redisplay_internal (C function)" (0x0)
>
> Thanks.  This case isn't interesting, because this is a temporary
> buffer we don't display.  So I guess we need to augment the breakpoint
> condition:
>
>   break buffer.c:1840 if redisplaying_p != 0 && b->window_count > 0

This triggered today.

#0  0x00005555555e1b6d in redisplay_internal ()
    at ../../master/src/xdisp.c:15789
        w = 0x555557ef0018
        sw = 0x555557ef0018
        fr = 0x555556d8c360
        pending = false
        must_finish = true
        match_p = true
        tlbufpos = {
          charpos = 127,
          bytepos = 127
        }
        tlendpos = {
          charpos = 0,
          bytepos = 0
        }
        number_of_visible_frames = 6
        count = 3
        sf = 0x555556d8c360
        polling_stopped_here = false
        tail = XIL(0)
        frame = XIL(0x555555d61a05)
        hscroll_retries = 0
        garbaged_frame_retries = 0
        consider_all_windows_p = false
        update_miniwindow_p = true
#1  0x00005555555e072a in redisplay () at ../../master/src/xdisp.c:15245
#2  0x00005555556e9a9d in read_char
    (commandflag=1, map=XIL(0x555559e15883), prev_event=XIL(0), used_mouse_menu=0x7fffffffdabf, end_time=0x0) at ../../master/src/keyboard.c:2496
        echo_current = false
        c = XIL(0)
        jmpcount = 93825000034176
        local_getcjmp = {{
            __jmpbuf = {93825000067056, 0, 93825000034176, 0, 0, 140737488345232, 93824994486998, 93825057660325},
            __mask_was_saved = -10032,
            __saved_mask = {
              __val = {93824994503983, 140737259836008, 140737259835960, 0, 46912259801784, 0, 140737259836008, 93825000034176, 0, 0, 140737488345344, 93824993978237, 4066447928, 93825000034176, 0, 0}
            }
          }}
        save_jump = {{
            __jmpbuf = {0, 32880, 0, 140737266328160, 0, 0, 93825057660320, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {93825000067056, 93824994486998, 0, 140737488345184, 93824994508583, 140737266328160, 12884891664, 0, 32880, 93825057660320, 140737266328160, 93824995129573, 51539607552, 93825057660325, 93825057660320, 93824995130016}
            }
          }}
        tem = XIL(0)
        save = XIL(0x5555556fe77d)
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x555555df8ad0
#3  0x00005555556f8848 in read_key_sequence
    (keybuf=0x7fffffffdcc0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false)
    at ../../master/src/keyboard.c:9491
        interrupted_kboard = 0x555555df8ad0
        interrupted_frame = 0x555556d8c360
        key = XIL(0x555555713fdd)
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = XIL(0x555556e620a0)
        count = 3
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x555559e15883)
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {
          parent = XIL(0x555556b8de53),
          map = XIL(0x555556b8de53),
          start = 0,
          end = 0
        }
        keytran = {
          parent = XIL(0x7ffff2c29383),
          map = XIL(0x7ffff2c29383),
          start = 0,
          end = 0
        }
        indec = {
          parent = XIL(0x555556b8de43),
          map = XIL(0x555556b8de43),
          start = 0,
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        dummyflag = false
        starting_buffer = 0x5555593b9da0
        fake_prefixed_keys = XIL(0)
        first_event = XIL(0)
        second_event = XIL(0)
#4  0x00005555556e6d1f in command_loop_1 () at ../../master/src/keyboard.c:1353
        cmd = XIL(0x7fffffffde10)
        keybuf = {XIL(0), XIL(0x7ffff2c2932d), make_fixnum(23456248600171), XIL(0x15665d0), XIL(0x7fffffffdd70), XIL(0x55555579dee5), XIL(0x15665d0), XIL(0x7ffff25804c4), XIL(0x555559e15ae3), XIL(0x7ffff2c2932d), XIL(0x7ffff2c2932d), XIL(0x555559e15ae3), XIL(0x7ffff25804c4), XIL(0x15665d0), XIL(0), XIL(0), XIL(0x555555cc4f80), XIL(0), XIL(0), XIL(0x7fffffffdd70), XIL(0x5555556e3c40), XIL(0xffffddc0), XIL(0x555555cc4f80), XIL(0), XIL(0), XIL(0x7fffffffdda0), XIL(0x5555557979dd), make_fixnum(0), XIL(0x7fffffffdde0), make_fixnum(23456248654899)}
        i = 1
        prev_modiff = 0
        prev_buffer = 0x0
        already_adjusted = false
#5  0x000055555579acc9 in internal_condition_case (bfun=0x5555556e68d9 <command_loop_1>, handlers=XIL(0x90), hfun=0x5555556e6075 <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555556e3c40)
        c = 0x555555dc03e0
#6  0x00005555556e65a1 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#7  0x000055555579a4d7 in internal_catch (tag=XIL(0xd9e0), func=0x5555556e6574 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555da9710
#8  0x00005555556e6540 in command_loop () at ../../master/src/keyboard.c:1073
#9  0x00005555556e5c46 in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf50)
#10 0x00005555556e5dc9 in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#11 0x00005555556e27f6 in main (argc=2, argv=0x7fffffffe1b8) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)


-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-23 14:18                                       ` Michael Welsh Duggan
@ 2021-03-23 15:02                                         ` Eli Zaretskii
  2021-03-23 15:08                                           ` Michael Welsh Duggan
  2021-03-23 15:23                                         ` martin rudalics
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-23 15:02 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>         "schwab@linux-m68k.org"
>  <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Tue, 23 Mar 2021 10:18:25 -0400
> 
> >   break buffer.c:1840 if redisplaying_p != 0 && b->window_count > 0
> 
> This triggered today.
> 
> #0  0x00005555555e1b6d in redisplay_internal ()
>     at ../../master/src/xdisp.c:15789

I don't understand: the breakpoint was supposed to be on line 1840 in
buffer.c, so why does frame #0 show line 15789 in xdisp.c?  What am I
missing here?  Is this the right backtrace?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-23 15:02                                         ` Eli Zaretskii
@ 2021-03-23 15:08                                           ` Michael Welsh Duggan
  2021-03-23 16:42                                             ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-23 15:08 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>>         "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Tue, 23 Mar 2021 10:18:25 -0400
>> 
>> >   break buffer.c:1840 if redisplaying_p != 0 && b->window_count > 0
>> 
>> This triggered today.
>> 
>> #0  0x00005555555e1b6d in redisplay_internal ()
>>     at ../../master/src/xdisp.c:15789
>
> I don't understand: the breakpoint was supposed to be on line 1840 in
> buffer.c, so why does frame #0 show line 15789 in xdisp.c?  What am I
> missing here?  Is this the right backtrace?

My mistake.  It was a segfault.  The breakpoint did not trigger.  Here's
the breakpoint in question:

5       breakpoint     keep y   0x0000555555713580 in Fkill_buffer 
                                                   at ../../master/src/buffer.c:1840 inf 1, 2
        stop only if redisplaying_p != 0 && b->window_count > 0


-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-23 14:18                                       ` Michael Welsh Duggan
  2021-03-23 15:02                                         ` Eli Zaretskii
@ 2021-03-23 15:23                                         ` martin rudalics
  2021-03-23 15:53                                           ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-23 15:23 UTC (permalink / raw)
  To: Michael Welsh Duggan, Eli Zaretskii
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

 >>    break buffer.c:1840 if redisplaying_p != 0 && b->window_count > 0
 >
 > This triggered today.

Could you try running Emacs inserting before the last two lines of
`switch-to-prev-buffer'

     ;; Return new-buffer.
     new-buffer))

a check so this stretch appears as

     (when (and (eq bury-or-kill 'kill) (eq new-buffer old-buffer))
       (error "Could not replace buffer %s in window %s"
              old-buffer window))

     ;; Return new-buffer.
     new-buffer))

If `replace-buffer-in-windows' is the culprit, this should trigger the
bug sooner.

Thanks, martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-23 15:23                                         ` martin rudalics
@ 2021-03-23 15:53                                           ` Michael Welsh Duggan
  2021-03-23 16:45                                             ` Eli Zaretskii
  2021-03-24  6:53                                             ` martin rudalics
  0 siblings, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-23 15:53 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  >>    break buffer.c:1840 if redisplaying_p != 0 && b->window_count > 0
>  >
>  > This triggered today.
>
> Could you try running Emacs inserting before the last two lines of
> `switch-to-prev-buffer'
>
>      ;; Return new-buffer.
>      new-buffer))
>
> a check so this stretch appears as
>
>      (when (and (eq bury-or-kill 'kill) (eq new-buffer old-buffer))
>        (error "Could not replace buffer %s in window %s"
>               old-buffer window))
>
>      ;; Return new-buffer.
>      new-buffer))
>
> If `replace-buffer-in-windows' is the culprit, this should trigger the
> bug sooner.
>
> Thanks, martin

Okay.  Running with this.  I still have the other emacs that segfaulted
in gdb if you want/need anything else from it.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-23 15:08                                           ` Michael Welsh Duggan
@ 2021-03-23 16:42                                             ` Eli Zaretskii
  0 siblings, 0 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-23 16:42 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>         "schwab@linux-m68k.org"
>  <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Tue, 23 Mar 2021 11:08:36 -0400
> 
> >> #0  0x00005555555e1b6d in redisplay_internal ()
> >>     at ../../master/src/xdisp.c:15789
> >
> > I don't understand: the breakpoint was supposed to be on line 1840 in
> > buffer.c, so why does frame #0 show line 15789 in xdisp.c?  What am I
> > missing here?  Is this the right backtrace?
> 
> My mistake.  It was a segfault.  The breakpoint did not trigger.  Here's
> the breakpoint in question:
> 
> 5       breakpoint     keep y   0x0000555555713580 in Fkill_buffer 
>                                                    at ../../master/src/buffer.c:1840 inf 1, 2
>         stop only if redisplaying_p != 0 && b->window_count > 0

Then I guess the hypothesis about the scenario which causes the crash
was wrong.  Let's see if Martin's suggestion has better luck.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-23 15:53                                           ` Michael Welsh Duggan
@ 2021-03-23 16:45                                             ` Eli Zaretskii
  2021-03-24  6:53                                             ` martin rudalics
  1 sibling, 0 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-23 16:45 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: Eli Zaretskii <eliz@gnu.org>, "mwd@md5i.com" <mwd@md5i.com>,
>         "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org"
>  <47244@debbugs.gnu.org>
> Date: Tue, 23 Mar 2021 11:53:52 -0400
> 
> I still have the other emacs that segfaulted in gdb if you want/need
> anything else from it.

It's identical to the original one, so I think you can close that
session.

Thanks.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-23 15:53                                           ` Michael Welsh Duggan
  2021-03-23 16:45                                             ` Eli Zaretskii
@ 2021-03-24  6:53                                             ` martin rudalics
  2021-03-24 14:14                                               ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-24  6:53 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 231 bytes --]

 > Okay.  Running with this.

The attached one should make more sense.  Please use that.

 > I still have the other emacs that segfaulted
 > in gdb if you want/need anything else from it.

I think you can close it.

Thanks, martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: window.el.diff --]
[-- Type: text/x-patch; name="window.el.diff", Size: 543 bytes --]

diff --git a/lisp/window.el b/lisp/window.el
index cfd9876ed0..7a636bb039 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -4686,6 +4686,12 @@ switch-to-prev-buffer
 	(set-window-next-buffers
 	 window (delq buffer (window-next-buffers window)))))

+    (when (and (eq bury-or-kill 'kill)
+               (window-live-p window)
+               (eq (window-buffer window) old-buffer))
+      (error "Could not replace buffer %s in window %s"
+             old-buffer window))
+
     ;; Return new-buffer.
     new-buffer))


^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-24  6:53                                             ` martin rudalics
@ 2021-03-24 14:14                                               ` Michael Welsh Duggan
  2021-03-24 16:09                                                 ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-24 14:14 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > Okay.  Running with this.
>
> 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 still have the other emacs that segfaulted
>  > in gdb if you want/need anything else from it.
>
> I think you can close it.
>
> Thanks, martin
>

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-24 14:14                                               ` Michael Welsh Duggan
@ 2021-03-24 16:09                                                 ` martin rudalics
  2021-03-25  2:19                                                   ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-24 16:09 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

 >> 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.  */

martin





^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-24 16:09                                                 ` martin rudalics
@ 2021-03-25  2:19                                                   ` Michael Welsh Duggan
  2021-03-25  6:25                                                     ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-25  2:19 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

martin rudalics <rudalics@gmx.at> 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
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-25  2:19                                                   ` Michael Welsh Duggan
@ 2021-03-25  6:25                                                     ` Eli Zaretskii
  2021-03-29 14:06                                                       ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-25  6:25 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244, mwd

> From: Michael Welsh Duggan <mwd@md5i.com>
> Cc: Michael Welsh Duggan <mwd@cert.org>,  Eli Zaretskii <eliz@gnu.org>,
>   "mwd@md5i.com" <mwd@md5i.com>,  "schwab@linux-m68k.org"
>  <schwab@linux-m68k.org>,  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Wed, 24 Mar 2021 22:19:35 -0400
> 
> > --- 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?

Yes.

> Should I breakpoint the error() clause?

Better put a breakpoint on this call to 'error' instead, because
'error' could be called for unrelated reasons, and it could be caught
-- you don't want those cases.

Thanks.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-25  6:25                                                     ` Eli Zaretskii
@ 2021-03-29 14:06                                                       ` Michael Welsh Duggan
  2021-03-29 14:28                                                         ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-29 14:06 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 1210 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@md5i.com>
>> Cc: Michael Welsh Duggan <mwd@cert.org>,  Eli Zaretskii <eliz@gnu.org>,
>>   "mwd@md5i.com" <mwd@md5i.com>,  "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Wed, 24 Mar 2021 22:19:35 -0400
>> 
>> > --- 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?
>
> Yes.
>
>> Should I breakpoint the error() clause?
>
> Better put a breakpoint on this call to 'error' instead, because
> 'error' could be called for unrelated reasons, and it could be caught
> -- you don't want those cases.

I have now hit this breakpoint.  Backtrace included.  xbacktrace was
empty.  I'll leave the gdb session up for forensics.


[-- Attachment #2: Type: text/plain, Size: 2540 bytes --]

#0  set_buffer_internal_2 (b=0x5555578f43d8) at ../../master/src/buffer.c:2155
        old_buf = 0x555555593480 <_start>
        tail = XIL(0)
#1  0x0000555555713f28 in set_buffer_internal_1 (b=0x1)
    at ../../master/src/buffer.c:2141
#2  0x00005555556e4ec6 in set_buffer_internal (b=0x5555578f43d8)
    at ../../master/src/buffer.h:1184
#3  0x00005555556e6b21 in command_loop_1 () at ../../master/src/keyboard.c:1289
        cmd = XIL(0x7fffffffde10)
        keybuf = 
          {XIL(0), XIL(0x7ffff2c27c1d), XIL(0x555555765cd4), XIL(0x11cf6b0), XIL(0x7fffffffdd70), XIL(0x55555579e20b), XIL(0x11cf6b0), XIL(0x7ffff257e4c4), XIL(0x555559de7123), XIL(0x7ffff2c27c1d), XIL(0x7ffff2c27c1d), XIL(0x555559de7123), XIL(0x7ffff257e4c4), XIL(0x11cf6b0), XIL(0), XIL(0), XIL(0x555555cc5f80), XIL(0), XIL(0), XIL(0x7fffffffdd70), XIL(0x5555556e3c73), XIL(0xffffddc0), XIL(0x555555cc5f80), XIL(0), XIL(0), XIL(0x7fffffffdda0), XIL(0x555555797d03), make_fixnum(0), XIL(0x7fffffffdde0), XIL(0x55555579b3f4)}
        i = 1
        prev_modiff = 0
        prev_buffer = 0x0
        already_adjusted = false
#4  0x000055555579afef in internal_condition_case
    (bfun=0x5555556e690c <command_loop_1>, handlers=XIL(0x90), hfun=0x5555556e60a8 <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555556e3c73)
        c = 0x555555dc13e0
#5  0x00005555556e65d4 in command_loop_2 (ignore=XIL(0))
    at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#6  0x000055555579a7fd in internal_catch
    (tag=XIL(0xd9e0), func=0x5555556e65a7 <command_loop_2>, arg=XIL(0))
    at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555daa710
#7  0x00005555556e6573 in command_loop () at ../../master/src/keyboard.c:1073
#8  0x00005555556e5c79 in recursive_edit_1 ()
    at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf50)
#9  0x00005555556e5dfc in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#10 0x00005555556e2829 in main (argc=2, argv=0x7fffffffe1b8)
    at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

[-- Attachment #3: Type: text/plain, Size: 41 bytes --]


-- 
Michael Welsh Duggan
(mwd@cert.org)

^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 14:06                                                       ` Michael Welsh Duggan
@ 2021-03-29 14:28                                                         ` Eli Zaretskii
  2021-03-29 14:39                                                           ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-29 14:28 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: Michael Welsh Duggan <mwd@md5i.com>, "rudalics@gmx.at"
>  <rudalics@gmx.at>,
>         "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Mon, 29 Mar 2021 10:06:43 -0400
> 
> #0  set_buffer_internal_2 (b=0x5555578f43d8) at ../../master/src/buffer.c:2155
>         old_buf = 0x555555593480 <_start>
>         tail = XIL(0)
> #1  0x0000555555713f28 in set_buffer_internal_1 (b=0x1)
>     at ../../master/src/buffer.c:2141
> #2  0x00005555556e4ec6 in set_buffer_internal (b=0x5555578f43d8)
>     at ../../master/src/buffer.h:1184
> #3  0x00005555556e6b21 in command_loop_1 () at ../../master/src/keyboard.c:1289
>         cmd = XIL(0x7fffffffde10)
>         keybuf = 
>           {XIL(0), XIL(0x7ffff2c27c1d), XIL(0x555555765cd4), XIL(0x11cf6b0), XIL(0x7fffffffdd70), XIL(0x55555579e20b), XIL(0x11cf6b0), XIL(0x7ffff257e4c4), XIL(0x555559de7123), XIL(0x7ffff2c27c1d), XIL(0x7ffff2c27c1d), XIL(0x555559de7123), XIL(0x7ffff257e4c4), XIL(0x11cf6b0), XIL(0), XIL(0), XIL(0x555555cc5f80), XIL(0), XIL(0), XIL(0x7fffffffdd70), XIL(0x5555556e3c73), XIL(0xffffddc0), XIL(0x555555cc5f80), XIL(0), XIL(0), XIL(0x7fffffffdda0), XIL(0x555555797d03), make_fixnum(0), XIL(0x7fffffffdde0), XIL(0x55555579b3f4)}
>         i = 1
>         prev_modiff = 0
>         prev_buffer = 0x0
>         already_adjusted = false

OK, we are switching to the selected window's buffer, and that buffer
was deleted.  We still don't understand how this happens.  Martin, any
ideas?

Please show the results of these commands:

 (gdb) p current_buffer->name_
 (gdb) xstring
 (gdb) frame 3
 (gdb) p cmd
 (gdb) xtype

Thanks.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 14:28                                                         ` Eli Zaretskii
@ 2021-03-29 14:39                                                           ` Michael Welsh Duggan
  2021-03-29 15:02                                                             ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-29 14:39 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: Michael Welsh Duggan <mwd@md5i.com>, "rudalics@gmx.at"
>>  <rudalics@gmx.at>,
>>         "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Mon, 29 Mar 2021 10:06:43 -0400
>> 
>> #0  set_buffer_internal_2 (b=0x5555578f43d8) at ../../master/src/buffer.c:2155
>>         old_buf = 0x555555593480 <_start>
>>         tail = XIL(0)
>> #1  0x0000555555713f28 in set_buffer_internal_1 (b=0x1)
>>     at ../../master/src/buffer.c:2141
>> #2  0x00005555556e4ec6 in set_buffer_internal (b=0x5555578f43d8)
>>     at ../../master/src/buffer.h:1184
>> #3  0x00005555556e6b21 in command_loop_1 () at ../../master/src/keyboard.c:1289
>>         cmd = XIL(0x7fffffffde10)
>>         keybuf = 
>>           {XIL(0), XIL(0x7ffff2c27c1d), XIL(0x555555765cd4), XIL(0x11cf6b0), XIL(0x7fffffffdd70), XIL(0x55555579e20b), XIL(0x11cf6b0), XIL(0x7ffff257e4c4), XIL(0x555559de7123), XIL(0x7ffff2c27c1d), XIL(0x7ffff2c27c1d), XIL(0x555559de7123), XIL(0x7ffff257e4c4), XIL(0x11cf6b0), XIL(0), XIL(0), XIL(0x555555cc5f80), XIL(0), XIL(0), XIL(0x7fffffffdd70), XIL(0x5555556e3c73), XIL(0xffffddc0), XIL(0x555555cc5f80), XIL(0), XIL(0), XIL(0x7fffffffdda0), XIL(0x555555797d03), make_fixnum(0), XIL(0x7fffffffdde0), XIL(0x55555579b3f4)}
>>         i = 1
>>         prev_modiff = 0
>>         prev_buffer = 0x0
>>         already_adjusted = false
>
> OK, we are switching to the selected window's buffer, and that buffer
> was deleted.  We still don't understand how this happens.  Martin, any
> ideas?
>
> Please show the results of these commands:
>
>  (gdb) p current_buffer->name_
>  (gdb) xstring
>  (gdb) frame 3
>  (gdb) p cmd
>  (gdb) xtype

(gdb) p current_buffer->name_
$4 = XIL(0x5555573519f4)
(gdb) xstring
$5 = (struct Lisp_String *) 0x5555573519f0
" *nntpd*"
(gdb) frame 3
#3  0x00005555556e6b21 in command_loop_1 () at ../../master/src/keyboard.c:1289
1289	      set_buffer_internal (XBUFFER (XWINDOW (selected_window)->contents));
(gdb) p cmd
$6 = XIL(0x7fffffffde10)
(gdb) xtype
Lisp_Symbol

I add also the following:

(gdb) p cmd
$7 = XIL(0x7fffffffde10)
(gdb) xsymbol
$8 = (struct Lisp_Symbol *) 0xd55555cc3d90
Cannot access memory at address 0xd55555cc3d98

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 14:39                                                           ` Michael Welsh Duggan
@ 2021-03-29 15:02                                                             ` Eli Zaretskii
  2021-03-29 15:07                                                               ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-29 15:02 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: "mwd@md5i.com" <mwd@md5i.com>, "rudalics@gmx.at" <rudalics@gmx.at>,
>         "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org"
>  <47244@debbugs.gnu.org>
> Date: Mon, 29 Mar 2021 10:39:35 -0400
> 
> (gdb) p current_buffer->name_
> $4 = XIL(0x5555573519f4)
> (gdb) xstring
> $5 = (struct Lisp_String *) 0x5555573519f0
> " *nntpd*"

Any idea where could be the Lisp code that switches from " *nntpd*" to
the buffer in the currently selected window?  Perhaps some
with-current-buffer thing somewhere?

Since " *nntpd*" is probably a buffer where Gnus fetches articles, or
otherwise communicates with an NNTP server, does this per chance
happen in a separate thread in your session?  (AFAIR, Gnus can fetch
articles in a separate Lisp thread.)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:02                                                             ` Eli Zaretskii
@ 2021-03-29 15:07                                                               ` Eli Zaretskii
  2021-03-29 15:21                                                                 ` Michael Welsh Duggan
  2021-03-29 15:21                                                                 ` Eli Zaretskii
  0 siblings, 2 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-29 15:07 UTC (permalink / raw)
  To: mwd; +Cc: mwd, schwab, 47244

> Date: Mon, 29 Mar 2021 18:02:24 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org
> 
> Any idea where could be the Lisp code that switches from " *nntpd*" to
> the buffer in the currently selected window?  Perhaps some
> with-current-buffer thing somewhere?

Actually, no, I don't think it can be with-current-buffer, it must be
something else.  I wonder how we ended up being at top-level with
current buffer being " *nntpd*" and the selected window's buffer being
something else, which was killed?  Hmm...





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:07                                                               ` Eli Zaretskii
@ 2021-03-29 15:21                                                                 ` Michael Welsh Duggan
  2021-03-29 15:26                                                                   ` Michael Welsh Duggan
  2021-03-29 15:27                                                                   ` Eli Zaretskii
  2021-03-29 15:21                                                                 ` Eli Zaretskii
  1 sibling, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-29 15:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Mon, 29 Mar 2021 18:02:24 +0300
>> From: Eli Zaretskii <eliz@gnu.org>
>> Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org
>> 
>> Any idea where could be the Lisp code that switches from " *nntpd*" to
>> the buffer in the currently selected window?  Perhaps some
>> with-current-buffer thing somewhere?
>
> Actually, no, I don't think it can be with-current-buffer, it must be
> something else.  I wonder how we ended up being at top-level with
> current buffer being " *nntpd*" and the selected window's buffer being
> something else, which was killed?  Hmm...

I'm far from certain myself.  I have no options specifically set
regarding threads and I run Gnus from Emacs sources.  What I can say is
that every time I can remember this happening, the following is the
sequence of events:

1) Emacs has locked up.  This is presumably because:
   a) I have switched my work VPN on, and
   b) Gnus uses my existing IMAP connection to attempt to check for new
      articles due to this clause in my .gnus file:

         (gnus-demon-add-handler 'gnus-demon-scan-news 5 nil)
2) From the *Group* buffer I hit `C-g` to cancel its attempt, and `^` to
   switch to the Gnus *Sever* buffer.
3) In that buffer I go to the imap connection and type `C O`, which runs
   `gnus-server-close-server` and `gnus-server-open-server`,
   respectively.
4) I type `q` to exit the server buffer.  This is when the breakpoint
   triggers.  `g` calls the following function:

    (defun gnus-server-exit ()
      "Return to the group buffer."
      (interactive nil gnus-server-mode)
      (gnus-run-hooks 'gnus-server-exit-hook)
      (gnus-kill-buffer (current-buffer))
      (gnus-configure-windows 'group t))

`gnus-sever-exit-hook` is nil.  The definition of `gnus-kill-buffer` is
as follows:

    (defmacro gnus-kill-buffer (buffer)
      "Kill BUFFER and remove from the list of Gnus buffers."
      `(let ((buf ,buffer))
         (when (gnus-buffer-live-p buf)
           (kill-buffer buf)
           (gnus-prune-buffers))))
    
    (defun gnus-buffers ()
      "Return a list of live Gnus buffers."
      (setq gnus-buffers (seq-filter #'buffer-live-p gnus-buffers)))
    
    (defalias 'gnus-prune-buffers #'gnus-buffers)

`gnus-configure-windows` is a quite complex function that I'm not going
to attach to this email, as it is easier to look at it in-situ from the
sources (gnus-win.el).

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:07                                                               ` Eli Zaretskii
  2021-03-29 15:21                                                                 ` Michael Welsh Duggan
@ 2021-03-29 15:21                                                                 ` Eli Zaretskii
  2021-03-29 16:05                                                                   ` martin rudalics
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-29 15:21 UTC (permalink / raw)
  To: martin rudalics; +Cc: mwd, schwab, 47244, mwd

> Date: Mon, 29 Mar 2021 18:07:18 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org
> 
> Actually, no, I don't think it can be with-current-buffer, it must be
> something else.  I wonder how we ended up being at top-level with
> current buffer being " *nntpd*" and the selected window's buffer being
> something else, which was killed?  Hmm...

Martin, could it be that replace-buffer-in-windows fails to replace a
buffer?  Suppose kill-buffer is called to kill a buffer that is shown
in the selected window, but replace-buffer-in-windows fails to replace
it -- can that happen?

And another question: can a window be selected if its buffer is dead?
Or is it possible to set a dead buffer as a window's buffer?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:21                                                                 ` Michael Welsh Duggan
@ 2021-03-29 15:26                                                                   ` Michael Welsh Duggan
  2021-03-29 15:27                                                                   ` Eli Zaretskii
  1 sibling, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-29 15:26 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Michael Welsh Duggan <mwd@cert.org> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> Date: Mon, 29 Mar 2021 18:02:24 +0300
>>> From: Eli Zaretskii <eliz@gnu.org>
>>> Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org
>>> 
>>> Any idea where could be the Lisp code that switches from " *nntpd*" to
>>> the buffer in the currently selected window?  Perhaps some
>>> with-current-buffer thing somewhere?
>>
>> Actually, no, I don't think it can be with-current-buffer, it must be
>> something else.  I wonder how we ended up being at top-level with
>> current buffer being " *nntpd*" and the selected window's buffer being
>> something else, which was killed?  Hmm...
>
> I'm far from certain myself.  I have no options specifically set
> regarding threads and I run Gnus from Emacs sources.  What I can say is
> that every time I can remember this happening, the following is the
> sequence of events:
>
> 1) Emacs has locked up.  This is presumably because:
>    a) I have switched my work VPN on, and
>    b) Gnus uses my existing IMAP connection to attempt to check for new
>       articles due to this clause in my .gnus file:
>
>          (gnus-demon-add-handler 'gnus-demon-scan-news 5 nil)
> 2) From the *Group* buffer I hit `C-g` to cancel its attempt, and `^` to
>    switch to the Gnus *Sever* buffer.
> 3) In that buffer I go to the imap connection and type `C O`, which runs
>    `gnus-server-close-server` and `gnus-server-open-server`,
>    respectively.
> 4) I type `q` to exit the server buffer.  This is when the breakpoint
>    triggers.  `g` calls the following function:
>
>     (defun gnus-server-exit ()
>       "Return to the group buffer."
>       (interactive nil gnus-server-mode)
>       (gnus-run-hooks 'gnus-server-exit-hook)
>       (gnus-kill-buffer (current-buffer))
>       (gnus-configure-windows 'group t))
>
> `gnus-sever-exit-hook` is nil.  The definition of `gnus-kill-buffer` is
> as follows:
>
>     (defmacro gnus-kill-buffer (buffer)
>       "Kill BUFFER and remove from the list of Gnus buffers."
>       `(let ((buf ,buffer))
>          (when (gnus-buffer-live-p buf)
>            (kill-buffer buf)
>            (gnus-prune-buffers))))
>     
>     (defun gnus-buffers ()
>       "Return a list of live Gnus buffers."
>       (setq gnus-buffers (seq-filter #'buffer-live-p gnus-buffers)))
>     
>     (defalias 'gnus-prune-buffers #'gnus-buffers)
>
> `gnus-configure-windows` is a quite complex function that I'm not going
> to attach to this email, as it is easier to look at it in-situ from the
> sources (gnus-win.el).

A further point of information.  I do have an nntp connection as well as
the imap connection.  It's an ntp connection to "news.gmane.io".  In the
sequence of events above, I do not specifically attempt to reset the
nntp connection, but it may to be affected by the VPN switch.  I do not
know what mechanism might have killed that buffer.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:21                                                                 ` Michael Welsh Duggan
  2021-03-29 15:26                                                                   ` Michael Welsh Duggan
@ 2021-03-29 15:27                                                                   ` Eli Zaretskii
  2021-03-29 15:33                                                                     ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-29 15:27 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>         "schwab@linux-m68k.org"
>  <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Mon, 29 Mar 2021 11:21:05 -0400
> 
> 2) From the *Group* buffer I hit `C-g` to cancel its attempt, and `^` to
>    switch to the Gnus *Sever* buffer.
> 3) In that buffer I go to the imap connection and type `C O`, which runs
>    `gnus-server-close-server` and `gnus-server-open-server`,
>    respectively.
> 4) I type `q` to exit the server buffer.  This is when the breakpoint
>    triggers.

Breakpoint or segfault?

> `g` calls the following function:
> 
>     (defun gnus-server-exit ()
>       "Return to the group buffer."
>       (interactive nil gnus-server-mode)
>       (gnus-run-hooks 'gnus-server-exit-hook)
>       (gnus-kill-buffer (current-buffer))

What is current-buffer at this point?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:27                                                                   ` Eli Zaretskii
@ 2021-03-29 15:33                                                                     ` Michael Welsh Duggan
  2021-03-29 15:34                                                                       ` Michael Welsh Duggan
  2021-03-29 15:41                                                                       ` Eli Zaretskii
  0 siblings, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-29 15:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>>         "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Mon, 29 Mar 2021 11:21:05 -0400
>> 
>> 2) From the *Group* buffer I hit `C-g` to cancel its attempt, and `^` to
>>    switch to the Gnus *Sever* buffer.
>> 3) In that buffer I go to the imap connection and type `C O`, which runs
>>    `gnus-server-close-server` and `gnus-server-open-server`,
>>    respectively.
>> 4) I type `q` to exit the server buffer.  This is when the breakpoint
>>    triggers.
>
> Breakpoint or segfault?

Breakpoint on the `error` clause that Martin asked me to add to
`set_buffer_internal_2`.

>> `g` calls the following function:
>> 
>>     (defun gnus-server-exit ()
>>       "Return to the group buffer."
>>       (interactive nil gnus-server-mode)
>>       (gnus-run-hooks 'gnus-server-exit-hook)
>>       (gnus-kill-buffer (current-buffer))
>
> What is current-buffer at this point?

#<buffer *Server*>

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:33                                                                     ` Michael Welsh Duggan
@ 2021-03-29 15:34                                                                       ` Michael Welsh Duggan
  2021-03-29 15:41                                                                       ` Eli Zaretskii
  1 sibling, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-29 15:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Michael Welsh Duggan <mwd@cert.org> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> From: Michael Welsh Duggan <mwd@cert.org>
>>> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>>>         "schwab@linux-m68k.org"
>>>  <schwab@linux-m68k.org>,
>>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>>> Date: Mon, 29 Mar 2021 11:21:05 -0400
>>> 
>>> 2) From the *Group* buffer I hit `C-g` to cancel its attempt, and `^` to
>>>    switch to the Gnus *Sever* buffer.
>>> 3) In that buffer I go to the imap connection and type `C O`, which runs
>>>    `gnus-server-close-server` and `gnus-server-open-server`,
>>>    respectively.
>>> 4) I type `q` to exit the server buffer.  This is when the breakpoint
>>>    triggers.
>>
>> Breakpoint or segfault?
>
> Breakpoint on the `error` clause that Martin asked me to add to
> `set_buffer_internal_2`.

To clarify, this is where the breakpoint triggered this time.  In this
identical scenario in past runs, this is when the segfault happened.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:33                                                                     ` Michael Welsh Duggan
  2021-03-29 15:34                                                                       ` Michael Welsh Duggan
@ 2021-03-29 15:41                                                                       ` Eli Zaretskii
  2021-03-29 16:23                                                                         ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-29 15:41 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>         "schwab@linux-m68k.org"
>  <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Mon, 29 Mar 2021 11:33:02 -0400
> 
> >> `g` calls the following function:
> >> 
> >>     (defun gnus-server-exit ()
> >>       "Return to the group buffer."
> >>       (interactive nil gnus-server-mode)
> >>       (gnus-run-hooks 'gnus-server-exit-hook)
> >>       (gnus-kill-buffer (current-buffer))
> >
> > What is current-buffer at this point?
> 
> #<buffer *Server*>

I guess this means kill-buffer replaced "*Server*" with " *nntpd*",
but the selected-window's buffer is still "*Server*", which is being
killed?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:21                                                                 ` Eli Zaretskii
@ 2021-03-29 16:05                                                                   ` martin rudalics
  2021-03-29 16:26                                                                     ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-29 16:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, schwab, 47244, mwd

 > Martin, could it be that replace-buffer-in-windows fails to replace a
 > buffer?  Suppose kill-buffer is called to kill a buffer that is shown
 > in the selected window, but replace-buffer-in-windows fails to replace
 > it -- can that happen?

That's what we tried earlier with the check in `switch-to-prev-buffer'.
Michael did you run with that check this time or did you remove it?  If
the latter, please reinsert it for the next time.  But let's recall that
at the time of the last segfault that particular check did not trigger.

 > And another question: can a window be selected if its buffer is dead?
 > Or is it possible to set a dead buffer as a window's buffer?

 From what we can say now one of these must have happened.  The dead
buffer comes from the selected window.  It does not come from the
attempt to restore the current buffer from a temporarily saved one.

One thing I'm not even sure about is whether the selected window is
still "live" when were trying to make its buffer current.  Michael is
this "window" supposed to be the only one on its frame?  Are we sure
that it is not the minibuffer window?  In either case we could try to
investigate its parent and geometry: What do

p XWINDOW (selected_window)->parent
p XWINDOW (selected_window)->prev
p XWINDOW (selected_window)->next
p XWINDOW (selected_window)->top_line
p XWINDOW (selected_window)->pixel_height

print?

Thanks, martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 15:41                                                                       ` Eli Zaretskii
@ 2021-03-29 16:23                                                                         ` Michael Welsh Duggan
  0 siblings, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-29 16:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>>         "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Mon, 29 Mar 2021 11:33:02 -0400
>> 
>> >> `g` calls the following function:
>> >> 
>> >>     (defun gnus-server-exit ()
>> >>       "Return to the group buffer."
>> >>       (interactive nil gnus-server-mode)
>> >>       (gnus-run-hooks 'gnus-server-exit-hook)
>> >>       (gnus-kill-buffer (current-buffer))
>> >
>> > What is current-buffer at this point?
>> 
>> #<buffer *Server*>
>
> I guess this means kill-buffer replaced "*Server*" with " *nntpd*",
> but the selected-window's buffer is still "*Server*", which is being
> killed?

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>>         "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Mon, 29 Mar 2021 11:33:02 -0400
>> 
>> >> `g` calls the following function:
>> >> 
>> >>     (defun gnus-server-exit ()
>> >>       "Return to the group buffer."
>> >>       (interactive nil gnus-server-mode)
>> >>       (gnus-run-hooks 'gnus-server-exit-hook)
>> >>       (gnus-kill-buffer (current-buffer))
>> >
>> > What is current-buffer at this point?
>> 
>> #<buffer *Server*>
>
> I guess this means kill-buffer replaced "*Server*" with " *nntpd*",
> but the selected-window's buffer is still "*Server*", which is being
> killed?

No idea.  Here's the few places I can see things going wrong, though I
don't know how or why.

kill-buffer calls `replace-buffer-in-windows`, which does a lot of stuff
that I can't account for one way or another.

Hmm...  Maybe the `(gnus-configure-windows 'group t)` call is important.
Tracing through it, it's trying to set it to the `group` setting, which
is:

    (group
      (vertical 1.0
                (group 1.0 point)))

This is from `gnus-buffer-configuration`.  When I debug
`gnus-all-windows-visible-p` from this `gnus-configure-windows` in a
session that does *not* hit the breakpoint, this function does return
a frame that has the ` *nntpd*` name in its print representation.

But frankly, I'll stick with my original "no idea" statement.

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 16:05                                                                   ` martin rudalics
@ 2021-03-29 16:26                                                                     ` Michael Welsh Duggan
  2021-03-29 17:33                                                                       ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-29 16:26 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > Martin, could it be that replace-buffer-in-windows fails to replace a
>  > buffer?  Suppose kill-buffer is called to kill a buffer that is shown
>  > in the selected window, but replace-buffer-in-windows fails to replace
>  > it -- can that happen?
>
> That's what we tried earlier with the check in `switch-to-prev-buffer'.
> Michael did you run with that check this time or did you remove it?  If
> the latter, please reinsert it for the next time.  But let's recall that
> at the time of the last segfault that particular check did not trigger.

I had removed it, sorry.  I'll put it in for the next time.

>  > And another question: can a window be selected if its buffer is dead?
>  > Or is it possible to set a dead buffer as a window's buffer?
>
>  From what we can say now one of these must have happened.  The dead
> buffer comes from the selected window.  It does not come from the
> attempt to restore the current buffer from a temporarily saved one.
>
> One thing I'm not even sure about is whether the selected window is
> still "live" when were trying to make its buffer current.  Michael is
> this "window" supposed to be the only one on its frame?  Are we sure
> that it is not the minibuffer window?  In either case we could try to
> investigate its parent and geometry: What do

I think so.  Both the *Server* window and the *Group* window will, under
normal circumstances, be the only window on the frame.

> p XWINDOW (selected_window)->parent
> p XWINDOW (selected_window)->prev
> p XWINDOW (selected_window)->next
> p XWINDOW (selected_window)->top_line
> p XWINDOW (selected_window)->pixel_height
>
> print?

(gdb) p XWINDOW (selected_window)->parent
$15 = XIL(0)
(gdb) p XWINDOW (selected_window)->prev
$16 = XIL(0)
(gdb) p XWINDOW (selected_window)->next
$17 = XIL(0x555556e96635)
(gdb) p XWINDOW (selected_window)->top_line
$18 = 0
(gdb) p XWINDOW (selected_window)->pixel_height
$19 = 995

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 16:26                                                                     ` Michael Welsh Duggan
@ 2021-03-29 17:33                                                                       ` martin rudalics
  2021-03-29 19:12                                                                         ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-29 17:33 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

 > I had removed it, sorry.  I'll put it in for the next time.

Don't.  I completely forgot that we do replace_buffer_in_windows_safely
when that fails which even recreates *scratch* when no other buffer is
found.

 > I think so.  Both the *Server* window and the *Group* window will, under
 > normal circumstances, be the only window on the frame.
 >
 >> p XWINDOW (selected_window)->parent
 >> p XWINDOW (selected_window)->prev
 >> p XWINDOW (selected_window)->next
 >> p XWINDOW (selected_window)->top_line
 >> p XWINDOW (selected_window)->pixel_height
 >>
 >> print?
 >
 > (gdb) p XWINDOW (selected_window)->parent
 > $15 = XIL(0)
 > (gdb) p XWINDOW (selected_window)->prev
 > $16 = XIL(0)
 > (gdb) p XWINDOW (selected_window)->next
 > $17 = XIL(0x555556e96635)
 > (gdb) p XWINDOW (selected_window)->top_line
 > $18 = 0
 > (gdb) p XWINDOW (selected_window)->pixel_height
 > $19 = 995

These confirm what you say above.  Maybe we get that dead buffer via
`set-window-configuration'?  Could

	  else if (!NILP (w->start))
	    /* Leaf window has no live buffer, get one.  */

have failed?  Can a "live window" have w->start equal nil?

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 17:33                                                                       ` martin rudalics
@ 2021-03-29 19:12                                                                         ` Michael Welsh Duggan
  2021-03-30  7:30                                                                           ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-29 19:12 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > I had removed it, sorry.  I'll put it in for the next time.
>
> Don't.  I completely forgot that we do replace_buffer_in_windows_safely
> when that fails which even recreates *scratch* when no other buffer is
> found.
>
>  > I think so.  Both the *Server* window and the *Group* window will, under
>  > normal circumstances, be the only window on the frame.
>  >
>  >> p XWINDOW (selected_window)->parent
>  >> p XWINDOW (selected_window)->prev
>  >> p XWINDOW (selected_window)->next
>  >> p XWINDOW (selected_window)->top_line
>  >> p XWINDOW (selected_window)->pixel_height
>  >>
>  >> print?
>  >
>  > (gdb) p XWINDOW (selected_window)->parent
>  > $15 = XIL(0)
>  > (gdb) p XWINDOW (selected_window)->prev
>  > $16 = XIL(0)
>  > (gdb) p XWINDOW (selected_window)->next
>  > $17 = XIL(0x555556e96635)
>  > (gdb) p XWINDOW (selected_window)->top_line
>  > $18 = 0
>  > (gdb) p XWINDOW (selected_window)->pixel_height
>  > $19 = 995
>
> These confirm what you say above.  Maybe we get that dead buffer via
> `set-window-configuration'?  Could
>
> 	  else if (!NILP (w->start))
> 	    /* Leaf window has no live buffer, get one.  */
>
> have failed?  Can a "live window" have w->start equal nil?

I sincerely hope that question is more addressed to Eli than to me, as I
have no idea.  I'm more than happy to run with different breakpoints
and/or debugging code inserted.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-29 19:12                                                                         ` Michael Welsh Duggan
@ 2021-03-30  7:30                                                                           ` martin rudalics
  2021-03-30 13:39                                                                             ` Michael Welsh Duggan
  2021-03-30 14:13                                                                             ` Michael Welsh Duggan
  0 siblings, 2 replies; 160+ messages in thread
From: martin rudalics @ 2021-03-30  7:30 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 626 bytes --]

 > I sincerely hope that question is more addressed to Eli than to me, as I
 > have no idea.

Don't worry, it was only a rhetoric question.

 > I'm more than happy to run with different breakpoints
 > and/or debugging code inserted.

The attached is an attempt to catch the condition where the selected
window's buffer is dead in a couple of strategic places.  Please run
with it in an unoptimized Emacs and wait till an assertion triggers.
Yet another shot in the dark but I have no better idea.

And if you still have the old session in the debugger, please tell us
what the value of old_selected_window is.

Thanks, martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 4392 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..9ad1e1d4d8 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1991,6 +1991,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2153,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.  */
diff --git a/src/window.c b/src/window.c
index eb16e2a433..539297c8fd 100644
--- a/src/window.c
+++ b/src/window.c
@@ -594,6 +594,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -3411,6 +3413,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3960,6 +3964,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4060,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -5174,6 +5183,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30  7:30                                                                           ` martin rudalics
@ 2021-03-30 13:39                                                                             ` Michael Welsh Duggan
  2021-03-30 14:36                                                                               ` martin rudalics
  2021-03-30 14:13                                                                             ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-30 13:39 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

martin rudalics <rudalics@gmx.at> writes:

> And if you still have the old session in the debugger, please tell us
> what the value of old_selected_window is.

(gdb) p old_selected_window
$20 = XIL(0x5555587e9065)
(gdb) xtype
Lisp_Vectorlike
PVEC_WINDOW
(gdb) xwindow
$21 = (struct window *) 0x5555587e9060
84x59+0+0
(gdb) p *$21
$22 = {
  header = {
    size = 4611686018595323929
  },
  frame = XIL(0x555556e24f95),
  next = XIL(0x555556e96635),
  prev = XIL(0),
  parent = XIL(0),
  normal_lines = XIL(0x5555569f93cf),
  normal_cols = XIL(0x5555569f93c7),
  new_total = make_fixnum(14),
  new_normal = XIL(0x555557529fb7),
  new_pixel = make_fixnum(238),
  contents = XIL(0x5555578f43dd),
  old_buffer = XIL(0x5555578f43dd),
  start = XIL(0x5555587e9275),
  pointm = XIL(0x5555587e92a5),
  old_pointm = XIL(0x5555587e92d5),
  temslot = make_fixnum(0),
  vertical_scroll_bar = XIL(0x555556d55735),
  vertical_scroll_bar_type = XIL(0x30),
  horizontal_scroll_bar = XIL(0),
  horizontal_scroll_bar_type = XIL(0),
  display_table = XIL(0),
  dedicated = XIL(0),
  redisplay_end_trigger = XIL(0),
  combination_limit = XIL(0),
  window_parameters = XIL(0x555558f54443),
  mode_line_help_echo = XIL(0),
  current_matrix = 0x55555829bf90,
  desired_matrix = 0x55555944e010,
  prev_buffers = XIL(0x5555593f8003),
  next_buffers = XIL(0),
  use_time = 10045,
  sequence_number = 179,
  change_stamp = 759,
  pixel_left = 0,
  pixel_top = 0,
  left_col = 0,
  top_line = 0,
  pixel_width = 672,
  pixel_height = 995,
  old_pixel_width = 672,
  old_pixel_height = 995,
  old_body_pixel_width = 640,
  old_body_pixel_height = 978,
  total_cols = 84,
  total_lines = 59,
  hscroll = 0,
  min_hscroll = 0,
  hscroll_whole = 0,
  last_modified = 60,
  last_overlay_modified = 1,
  last_point = 127,
  base_line_number = 1,
  base_line_pos = 1,
  column_number_displayed = -1,
  nrows_scale_factor = 1,
  ncols_scale_factor = 1,
  cursor = {
    x = 0,
    y = 68,
    hpos = 0,
    vpos = 4
  },
  phys_cursor = {
    x = 0,
    y = 68,
    hpos = 0,
    vpos = 4
  },
  output_cursor = {
    x = 0,
    y = 68,
    hpos = 0,
    vpos = 4
  },
  last_cursor_vpos = 4,
  phys_cursor_type = FILLED_BOX_CURSOR,
  phys_cursor_width = 8,
  phys_cursor_ascent = 13,
  phys_cursor_height = 17,
  left_fringe_width = -1,
  right_fringe_width = -1,
  left_margin_cols = 0,
  right_margin_cols = 0,
  scroll_bar_width = -1,
  scroll_bar_height = -1,
  mode_line_height = 17,
  header_line_height = -1,
  tab_line_height = -1,
  window_end_pos = 0,
  window_end_vpos = 3,
  mini = false,
  horizontal = false,
  update_mode_line = false,
  last_had_star = true,
  start_at_line_beg = true,
  force_start = false,
  optional_new_start = false,
  phys_cursor_on_p = true,
  cursor_off_p = false,
  last_cursor_off_p = false,
  must_be_updated_p = false,
  pseudo_window_p = false,
  fringes_outside_margins = false,
  fringes_persistent = false,
  scroll_bars_persistent = false,
  window_end_valid = true,
  redisplay = false,
  suspend_auto_hscroll = false,
  vscroll = 0,
  window_end_bytepos = 0
}

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30  7:30                                                                           ` martin rudalics
  2021-03-30 13:39                                                                             ` Michael Welsh Duggan
@ 2021-03-30 14:13                                                                             ` Michael Welsh Duggan
  2021-03-30 14:36                                                                               ` martin rudalics
  1 sibling, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-30 14:13 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > I sincerely hope that question is more addressed to Eli than to me, as I
>  > have no idea.
>
> Don't worry, it was only a rhetoric question.
>
>  > I'm more than happy to run with different breakpoints
>  > and/or debugging code inserted.
>
> The attached is an attempt to catch the condition where the selected
> window's buffer is dead in a couple of strategic places.  Please run
> with it in an unoptimized Emacs and wait till an assertion triggers.
> Yet another shot in the dark but I have no better idea.

The breakpoint I put on the error() clause added to buffer.c triggered
again in the new build without touching any of the easserts.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 13:39                                                                             ` Michael Welsh Duggan
@ 2021-03-30 14:36                                                                               ` martin rudalics
  2021-03-30 14:51                                                                                 ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-30 14:36 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

 >    contents = XIL(0x5555578f43dd),

So the selected window has not changed IIUC.  Can you please verify by
comparing the values of selected_window and old_selected_window?  And
what gives

p XBUFFER (XWINDOW (selected_window)->old_buffer)->name_

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 14:13                                                                             ` Michael Welsh Duggan
@ 2021-03-30 14:36                                                                               ` martin rudalics
  2021-03-30 14:48                                                                                 ` Eli Zaretskii
                                                                                                   ` (2 more replies)
  0 siblings, 3 replies; 160+ messages in thread
From: martin rudalics @ 2021-03-30 14:36 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

 > 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.  Are the buffer names the same as last time?

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 14:36                                                                               ` martin rudalics
@ 2021-03-30 14:48                                                                                 ` Eli Zaretskii
  2021-03-30 15:05                                                                                   ` martin rudalics
  2021-03-30 15:03                                                                                 ` Michael Welsh Duggan
  2021-03-31 13:23                                                                                 ` Michael Welsh Duggan
  2 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-30 14:48 UTC (permalink / raw)
  To: martin rudalics; +Cc: mwd, schwab, 47244, mwd

> Cc: Eli Zaretskii <eliz@gnu.org>, "mwd@md5i.com" <mwd@md5i.com>,
>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> From: martin rudalics <rudalics@gmx.at>
> 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?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 14:36                                                                               ` martin rudalics
@ 2021-03-30 14:51                                                                                 ` Michael Welsh Duggan
  2021-03-30 15:05                                                                                   ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-30 14:51 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  >    contents = XIL(0x5555578f43dd),
>
> So the selected window has not changed IIUC.  Can you please verify by
> comparing the values of selected_window and old_selected_window?  And
> what gives
>
> p XBUFFER (XWINDOW (selected_window)->old_buffer)->name_

(gdb) p selected_window
$1 = XIL(0x555556e7b645)
(gdb) p old_selected_window 
$2 = XIL(0x555556e7b645)
(gdb) p XBUFFER (XWINDOW (selected_window)->old_buffer)->name_
$3 = XIL(0)

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 14:36                                                                               ` martin rudalics
  2021-03-30 14:48                                                                                 ` Eli Zaretskii
@ 2021-03-30 15:03                                                                                 ` Michael Welsh Duggan
  2021-03-30 16:52                                                                                   ` martin rudalics
  2021-03-31 13:23                                                                                 ` Michael Welsh Duggan
  2 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-30 15:03 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > 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.  Are the buffer names the same as last time?

Yes.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 14:48                                                                                 ` Eli Zaretskii
@ 2021-03-30 15:05                                                                                   ` martin rudalics
  2021-03-30 15:13                                                                                     ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-30 15:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, schwab, 47244, mwd

 > 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.

The problem is that we already detect this situation too late in order
to tell who the real culprit is.  For example, a dead buffer stored in
the selected_window's contents field could have been a dead
current_buffer before.  So for some time we could have been already
running with a dead buffer in that filed.  Long enough maybe to cause
havoc elsewhere.  And what happened in between might not have used
set_buffer_internal but accessed that buffer more directly.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 14:51                                                                                 ` Michael Welsh Duggan
@ 2021-03-30 15:05                                                                                   ` martin rudalics
  0 siblings, 0 replies; 160+ messages in thread
From: martin rudalics @ 2021-03-30 15:05 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

 > (gdb) p selected_window
 > $1 = XIL(0x555556e7b645)
 > (gdb) p old_selected_window
 > $2 = XIL(0x555556e7b645)
 > (gdb) p XBUFFER (XWINDOW (selected_window)->old_buffer)->name_
 > $3 = XIL(0)

Thanks.  So this was the buffer as of last redisplay and was killed
since then.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 15:05                                                                                   ` martin rudalics
@ 2021-03-30 15:13                                                                                     ` Eli Zaretskii
  2021-03-30 16:52                                                                                       ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-30 15:13 UTC (permalink / raw)
  To: martin rudalics; +Cc: mwd, schwab, 47244, mwd

> Cc: mwd@cert.org, mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org
> From: martin rudalics <rudalics@gmx.at>
> Date: Tue, 30 Mar 2021 17:05:14 +0200
> 
>  > 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.
> 
> The problem is that we already detect this situation too late in order
> to tell who the real culprit is.  For example, a dead buffer stored in
> the selected_window's contents field could have been a dead
> current_buffer before.  So for some time we could have been already
> running with a dead buffer in that filed.  Long enough maybe to cause
> havoc elsewhere.  And what happened in between might not have used
> set_buffer_internal but accessed that buffer more directly.

The above code runs every iteration through the main loop, so fixing
it there will go along way towards avoiding the havoc.  Or are you
saying it could cause harm in some situation?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 15:03                                                                                 ` Michael Welsh Duggan
@ 2021-03-30 16:52                                                                                   ` martin rudalics
  0 siblings, 0 replies; 160+ messages in thread
From: martin rudalics @ 2021-03-30 16:52 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 207 bytes --]

 >> Are the buffer names the same as last time?
 >
 > Yes.

It all sounds so easily reproducible and I have no idea where to start.
Please bear with me and run with the attached from now on.

Thanks, martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 5336 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..9ad1e1d4d8 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1991,6 +1991,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2153,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.  */
diff --git a/src/window.c b/src/window.c
index eb16e2a433..8cea0af8ab 100644
--- a/src/window.c
+++ b/src/window.c
@@ -307,7 +307,11 @@ wset_buffer (struct window *w, Lisp_Object val)
   if (BUFFERP (val))
     /* Make sure that we do not assign the buffer
        to an internal window.  */
-    eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    {
+      eassert (BUFFER_LIVE_P (XBUFFER (val)));
+      eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    }
+
   w->contents = val;
   adjust_window_count (w, 1);
 }
@@ -315,6 +319,7 @@ wset_buffer (struct window *w, Lisp_Object val)
 static void
 wset_old_buffer (struct window *w, Lisp_Object val)
 {
+  eassert (BUFFER_LIVE_P (XBUFFER (val)));
   w->old_buffer = val;
 }
 
@@ -594,6 +599,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -3411,6 +3418,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3960,6 +3969,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4065,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -5174,6 +5188,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
@@ -7233,6 +7249,9 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
   minibuf_selected_window = data->minibuf_selected_window;
 
   SAFE_FREE ();
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return FRAME_LIVE_P (f) ? Qt : Qnil;
 }
 
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 15:13                                                                                     ` Eli Zaretskii
@ 2021-03-30 16:52                                                                                       ` martin rudalics
  2021-03-30 17:05                                                                                         ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-30 16:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, schwab, 47244, mwd

 > The above code runs every iteration through the main loop, so fixing
 > it there will go along way towards avoiding the havoc.  Or are you
 > saying it could cause harm in some situation?

No.  If worse comes to worst, it should improve the situation.  But we
then are sweeping the real problem under the carpet.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 16:52                                                                                       ` martin rudalics
@ 2021-03-30 17:05                                                                                         ` Eli Zaretskii
  2021-03-31  6:41                                                                                           ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-30 17:05 UTC (permalink / raw)
  To: martin rudalics; +Cc: mwd, schwab, 47244, mwd

> Cc: mwd@cert.org, mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org
> From: martin rudalics <rudalics@gmx.at>
> Date: Tue, 30 Mar 2021 18:52:24 +0200
> 
>  > The above code runs every iteration through the main loop, so fixing
>  > it there will go along way towards avoiding the havoc.  Or are you
>  > saying it could cause harm in some situation?
> 
> No.  If worse comes to worst, it should improve the situation.  But we
> then are sweeping the real problem under the carpet.

IME, there's any number of "real problems" out there, and the hope to
find them all is ... too optimistic.  There's nothing wrong with being
defensive against unknown factors.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 17:05                                                                                         ` Eli Zaretskii
@ 2021-03-31  6:41                                                                                           ` martin rudalics
  2021-03-31  7:09                                                                                             ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-31  6:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, schwab, 47244, mwd

 > IME, there's any number of "real problems" out there, and the hope to
 > find them all is ... too optimistic.

I'd be already happy to find just the one we talk about here.

 > There's nothing wrong with being
 > defensive against unknown factors.

Agreed.  What I meant was that if, as we suppose, the mischief happens
at time T1 somewhere in redisplay and is detected (by chance) and
corrected at time T2 in the main loop, any side effects that mischief
causes between T1 and T2 still go undetected and may cause arbitrary
harm.

In either case whatever you want to do here - set the selected window's
buffer or just the current buffer in the main loop - would not interfere
with finding the real culprit.  So I certainly won't object to your fix.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31  6:41                                                                                           ` martin rudalics
@ 2021-03-31  7:09                                                                                             ` Eli Zaretskii
  0 siblings, 0 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-31  7:09 UTC (permalink / raw)
  To: martin rudalics; +Cc: mwd, schwab, 47244, mwd

> Cc: mwd@cert.org, mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org
> From: martin rudalics <rudalics@gmx.at>
> Date: Wed, 31 Mar 2021 08:41:52 +0200
> 
>  > IME, there's any number of "real problems" out there, and the hope to
>  > find them all is ... too optimistic.
> 
> I'd be already happy to find just the one we talk about here.
> 
>  > There's nothing wrong with being
>  > defensive against unknown factors.
> 
> Agreed.  What I meant was that if, as we suppose, the mischief happens
> at time T1 somewhere in redisplay and is detected (by chance) and
> corrected at time T2 in the main loop, any side effects that mischief
> causes between T1 and T2 still go undetected and may cause arbitrary
> harm.

I think it's the other way around: we set the dead buffer as the
current one in the main loop, and then redisplay tries to redisplay
that window.

> In either case whatever you want to do here - set the selected window's
> buffer or just the current buffer in the main loop - would not interfere
> with finding the real culprit.  So I certainly won't object to your fix.

I will wait for a few days in the hope that the culprit is found.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-30 14:36                                                                               ` martin rudalics
  2021-03-30 14:48                                                                                 ` Eli Zaretskii
  2021-03-30 15:03                                                                                 ` Michael Welsh Duggan
@ 2021-03-31 13:23                                                                                 ` Michael Welsh Duggan
  2021-03-31 13:53                                                                                   ` Michael Welsh Duggan
  2 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-31 13:23 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > 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.  Are the buffer names the same as last time?

I realized this morning that the easserts probably wouldn't trigger because
I hadn't compiled with --enable-checking.  I've recompiled and will see
if anything triggers in the next couple of days.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 13:23                                                                                 ` Michael Welsh Duggan
@ 2021-03-31 13:53                                                                                   ` Michael Welsh Duggan
  2021-03-31 14:01                                                                                     ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-31 13:53 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

And, trapped!  Backtrace is included.  Maybe unfortunately, it isn't one
of the new easserts, but at least we now have a different backtrace.
Hopefully that will lead to new insights.  I will note that, in this
instance, the reproducer did not follow the same formula, as you can see
in the Lisp backtrace.

#0  raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:50
        set = {
          __val = {402653184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268435456, 0, 0, 93824994300624, 18446744067266838271}
        }
        pid = <optimized out>
        tid = <optimized out>
#1  0x00005555557197a1 in terminate_due_to_signal
    (sig=6, backtrace_limit=2147483647) at ../../master/src/emacs.c:416
#2  0x00005555557c4858 in die
    (msg=0x55555594f2a0 "b->window_count == 0", file=0x55555594da8a "../../master/src/buffer.c", line=1969) at ../../master/src/alloc.c:7420
#3  0x0000555555759190 in Fkill_buffer (buffer_or_name=XIL(0x555557888814))
    at ../../master/src/buffer.c:1969
        buffer = XIL(0x555557889325)
        b = 0x555557889320
        tem = XIL(0)
        m = 0x0
#4  0x00005555557fd881 in funcall_subr
    (subr=0x555555dd8ce0 <Skill_buffer>, numargs=1, args=0x7fffffffcbf0)
    at ../../master/src/eval.c:2987
        internal_argbuf = 
          {XIL(0x7fffffffcb10), XIL(0x1000000000), XIL(0x555555dd8ce0), XIL(0x7fffffffcb18), XIL(0x5555557f44c4), XIL(0x10557f3f8b), XIL(0x555555dd8ce5), XIL(0x7fffffffcb30)}
        internal_args = 0x7fffffffcbf0
#5  0x00005555557fd349 in Ffuncall (nargs=2, args=0x7fffffffcbe8)
    at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd8ce5)
        original_fun = XIL(0x2aaa9c7157e0)
        funcar = XIL(0x555557d5a980)
        numargs = 1
        val = XIL(0x7fffffffcbb0)
        count = 12
#6  0x0000555555856a0c in exec_byte_code
    (bytestr=XIL(0x5555575d6464), vector=XIL(0x5555575d5985), maxdepth=make_fixnum(9), args_template=make_fixnum(256), nargs=0, args=0x7fffffffd390)
    at ../../master/src/bytecode.c:632
        op = 1
        type = (CONDITION_CASE | CATCHER_ALL | unknown: 0x55855e08)
        targets = 
          {0x5555558598a1 <exec_byte_code+15219>, 0x5555558598c6 <exec_byte_code+15256>, 0x5555558598c8 <exec_byte_code+15258>, 0x5555558598ca <exec_byte_code+15260>, 0x5555558598cc <exec_byte_code+15262>, 0x5555558598cc <exec_byte_code+15262>, 0x555555859931 <exec_byte_code+15363>, 0x5555558599a5 <exec_byte_code+15479>, 0x5555558562cc <exec_byte_code+1438>, 0x5555558562ce <exec_byte_code+1440>, 0x5555558562d0 <exec_byte_code+1442>, 0x5555558562d2 <exec_byte_code+1444>, 0x5555558562d4 <exec_byte_code+1446>, 0x5555558562d4 <exec_byte_code+1446>, 0x5555558562da <exec_byte_code+1452>, 0x55555585629b <exec_byte_code+1389>, 0x5555558566f2 <exec_byte_code+2500>, 0x5555558566f4 <exec_byte_code+2502>, 0x5555558566f6 <exec_byte_code+2504>, 0x5555558566f8 <exec_byte_code+2506>, 0x5555558566fa <exec_byte_code+2508>, 0x5555558566fa <exec_byte_code+2508>, 0x55555585672f <exec_byte_code+2561>, 0x555555856700 <exec_byte_code+2514>, 0x555555856924 <exec_byte_code+3062>, 0x555555856926 <exec_byte_code+3064>, 0x555555856928 <exec_byte_code+3066>, 0x55555585692a <exec_byte_code+3068>, 0x55555585692c <exec_byte_code+3070>, 0x55555585692c <exec_byte_code+3070>, 0x5555558568de <exec_byte_code+2992>, 0x5555558568f5 <exec_byte_code+3015>, 0x5555558569d9 <exec_byte_code+3243>, 0x5555558569db <exec_byte_code+3245>, 0x5555558569dd <exec_byte_code+3247>, 0x5555558569df <exec_byte_code+3249>, 0x5555558569e1 <exec_byte_code+3251>, 0x5555558569e1 <exec_byte_code+3251>, 0x555555856993 <exec_byte_code+3173>, 0x5555558569aa <exec_byte_code+3196>, 0x555555856a8b <exec_byte_code+3421>, 0x555555856a8d <exec_byte_code+3423>, 0x555555856a8f <exec_byte_code+3425>, 0x555555856a91 <exec_byte_code+3427>, 0x555555856a93 <exec_byte_code+3429>, 0x555555856a93 <exec_byte_code+3429>, 0x555555856a45 <exec_byte_code+3351>, 0x555555856a5c <exec_byte_code+3374>, 0x5555558572f3 <exec_byte_code+5573>, 0x5555558571d6 <exec_byte_code+5288>, 0x5555558571cd <exec_byte_code+5279>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x55555585752d <exec_byte_code+6143>, 0x555555857643 <exec_byte_code+6421>, 0x5555558576a0 <exec_byte_code+6514>, 0x555555857700 <exec_byte_code+6610>, 0x555555857762 <exec_byte_code+6708>, 0x55555585654b <exec_byte_code+2077>, 0x5555558565c6 <exec_byte_code+2200>, 0x5555558577db <exec_byte_code+6829>, 0x555555856488 <exec_byte_code+1882>, 0x55555585662e <exec_byte_code+2304>, 0x555555857843 <exec_byte_code+6933>, 0x5555558578ab <exec_byte_code+7037>, 0x5555558578f3 <exec_byte_code+7109>, 0x55555585795b <exec_byte_code+7213>, 0x5555558579c1 <exec_byte_code+7315>, 0x555555857aa7 <exec_byte_code+7545>, 0x555555857aef <exec_byte_code+7617>, 0x555555857b57 <exec_byte_code+7721>, 0x555555857bdc <exec_byte_code+7854>, 0x555555857c24 <exec_byte_code+7926>, 0x555555857c6c <exec_byte_code+7998>, 0x555555857cd4 <exec_byte_code+8102>, 0x555555857d3c <exec_byte_code+8206>, 0x555555857da4 <exec_byte_code+8310>, 0x555555857e29 <exec_byte_code+8443>, 0x555555857e78 <exec_byte_code+8522>, 0x555555857ec7 <exec_byte_code+8601>, 0x555555857f8e <exec_byte_code+8800>, 0x555555858087 <exec_byte_code+9049>, 0x555555858180 <exec_byte_code+9298>, 0x5555558581ed <exec_byte_code+9407>, 0x55555585825a <exec_byte_code+9516>, 0x5555558582c7 <exec_byte_code+9625>, 0x555555858334 <exec_byte_code+9734>, 0x5555558583a1 <exec_byte_code+9843>, 0x5555558583f0 <exec_byte_code+9922>, 0x5555558584ea <exec_byte_code+10172>, 0x555555858539 <exec_byte_code+10251>, 0x555555858588 <exec_byte_code+10330>, 0x5555558585d7 <exec_byte_code+10409>, 0x5555558586dd <exec_byte_code+10671>, 0x55555585704d <exec_byte_code+4895>, 0x555555858738 <exec_byte_code+10762>, 0x555555858780 <exec_byte_code+10834>, 0x555555858842 <exec_byte_code+11028>, 0x5555558588ab <exec_byte_code+11133>, 0x555555858906 <exec_byte_code+11224>, 0x55555585894e <exec_byte_code+11296>, 0x555555858991 <exec_byte_code+11363>, 0x5555558589d4 <exec_byte_code+11430>, 0x555555858a1f <exec_byte_code+11505>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555858a77 <exec_byte_code+11593>, 0x555555858aba <exec_byte_code+11660>, 0x555555858afd <exec_byte_code+11727>, 0x555555858b40 <exec_byte_code+11794>, 0x555555858b83 <exec_byte_code+11861>, 0x555555858bc6 <exec_byte_code+11928>, 0x55555585704d <exec_byte_code+4895>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555858c0e <exec_byte_code+12000>, 0x555555858c60 <exec_byte_code+12082>, 0x555555858ca8 <exec_byte_code+12154>, 0x555555858cf0 <exec_byte_code+12226>, 0x555555858d58 <exec_byte_code+12330>, 0x555555858dc0 <exec_byte_code+12434>, 0x555555858e08 <exec_byte_code+12506>, 0x555555858ec5 <exec_byte_code+12695>, 0x555555858f2d <exec_byte_code+12799>, 0x555555858f95 <exec_byte_code+12903>, 0x555555858ffd <exec_byte_code+13007>, 0x555555859040 <exec_byte_code+13074>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555856f93 <exec_byte_code+4709>, 0x555555856b3d <exec_byte_code+3599>, 0x5555558563f6 <exec_byte_code+1736>, 0x555555856bee <exec_byte_code+3776>, 0x555555856c72 <exec_byte_code+3908>, 0x555555856cf3 <exec_byte_code+4037>, 0x555555856f47 <exec_byte_code+4633>, 0x555555856f5c <exec_byte_code+4654>, 0x55555585688b <exec_byte_code+2909>, 0x555555857016 <exec_byte_code+4840>, 0x555555857084 <exec_byte_code+4950>, 0x555555857115 <exec_byte_code+5095>, 0x55555585715e <exec_byte_code+5168>, 0x55555585733f <exec_byte_code+5649>, 0x5555558573bc <exec_byte_code+5774>, 0x555555857441 <exec_byte_code+5907>, 0x5555558574a7 <exec_byte_code+6009>, 0x555555856aef <exec_byte_code+3521>, 0x555555859088 <exec_byte_code+13146>, 0x55555585910d <exec_byte_code+13279>, 0x555555859155 <exec_byte_code+13351>, 0x55555585919d <exec_byte_code+13423>, 0x5555558591e5 <exec_byte_code+13495>, 0x55555585922d <exec_byte_code+13567>, 0x555555859295 <exec_byte_code+13671>, 0x5555558592fd <exec_byte_code+13775>, 0x555555859365 <exec_byte_code+13879>, 0x5555558593cd <exec_byte_code+13983>, 0x555555859516 <exec_byte_code+14312>, 0x55555585957e <exec_byte_code+14416>, 0x5555558595e6 <exec_byte_code+14520>, 0x55555585962e <exec_byte_code+14592>, 0x555555859696 <exec_byte_code+14696>, 0x5555558596fe <exec_byte_code+14800>, 0x555555859746 <exec_byte_code+14872>, 0x55555585978e <exec_byte_code+14944>, 0x555555858626 <exec_byte_code+10488>, 0x555555858675 <exec_byte_code+10567>, 0x5555558597dd <exec_byte_code+15023>, 0x55555585983f <exec_byte_code+15121>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555856d74 <exec_byte_code+4166>, 0x555555856d91 <exec_byte_code+4195>, 0x555555856e00 <exec_byte_code+4306>, 0x555555856e6f <exec_byte_code+4417>, 0x555555856edb <exec_byte_code+4525>, 0x555555857a2f <exec_byte_code+7425>, 0x555555857f16 <exec_byte_code+8680>, 0x5555558587ca <exec_byte_code+10908>, 0x555555859a38 <exec_byte_code+15626>, 0x555555859aad <exec_byte_code+15743>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555859b43 <exec_byte_code+15893>, 0x555555859bca <exec_byte_code+16028>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555859d18 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 42
        bytestr_length = 271
        vectorp = 0x5555575d5988
        quitcounter = 1 '\001'
        stack_items = 10
        sa_avail = 16033
        sa_count = 10
        alloc = 0x7fffffffcbc0
        stack_base = 0x7fffffffcbc0
        top = 0x7fffffffcbe8
        stack_lim = 0x7fffffffcc10
        bytestr_data = 0x7fffffffcc10 "\bƉ\031\032\307\001!\002\204\034"
        pc = 0x7fffffffcc7c "\210\325 \210\210\016%\211\211\205\204"
        count = 10
        result = XIL(0x30)
#7  0x00005555557fdb34 in fetch_and_exec_byte_code (fun=XIL(0x5555575d5af5), syms_left=make_fixnum(256), nargs=0, args=0x7fffffffd390) at ../../master/src/eval.c:3036
#8  0x00005555557fdfba in funcall_lambda (fun=XIL(0x5555575d5af5), nargs=0, arg_vector=0x7fffffffd390) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffd140)
        syms_left = make_fixnum(256)
        next = XIL(0x555555e62060)
        lexenv = XIL(0x1800000000)
        count = 10
        i = 93824994985156
        optional = false
        rest = false
#9  0x00005555557fd38d in Ffuncall (nargs=1, args=0x7fffffffd388) at ../../master/src/eval.c:2916
        fun = XIL(0x5555575d5af5)
        original_fun = XIL(0x17286d0)
        funcar = XIL(0xffffd1e0)
        numargs = 0
        val = XIL(0)
        count = 9
#10 0x00005555557f1481 in Ffuncall_interactively (nargs=1, args=0x7fffffffd388) at ../../master/src/callint.c:260
        speccount = 8
#11 0x00005555557fd772 in funcall_subr (subr=0x555555ddeca0 <Sfuncall_interactively>, numargs=1, args=0x7fffffffd388) at ../../master/src/eval.c:2967
#12 0x00005555557fd349 in Ffuncall (nargs=2, args=0x7fffffffd380) at ../../master/src/eval.c:2914
        fun = XIL(0x555555ddeca5)
        original_fun = XIL(0x70b0)
        funcar = XIL(0x7fffffffd2b0)
        numargs = 1
        val = XIL(0)
        count = 7
#13 0x00005555557fc032 in Fapply (nargs=3, args=0x7fffffffd380) at ../../master/src/eval.c:2497
        i = 2582717749968
        funcall_nargs = 0
        funcall_args = 0x0
        spread_arg = XIL(0)
        fun = XIL(0x70b0)
        sa_avail = 16384
        sa_count = 7
        numargs = 0
        retval = XIL(0x5555557f01c1)
#14 0x00005555557f18f6 in Fcall_interactively (function=XIL(0x17286d0), record_flag=XIL(0), keys=XIL(0x5555579ee805)) at ../../master/src/callint.c:353
        funval = XIL(0x5555575d5af5)
        events = 794
        input = XIL(0)
        speccount = 6
        arg_from_tty = false
        key_count = 1
        record_then_fail = false
        save_this_command = XIL(0x17286d0)
        save_this_original_command = XIL(0x17286d0)
        save_real_this_command = XIL(0x17286d0)
        save_last_command = XIL(0)
        prefix_arg = XIL(0)
        enable = XIL(0)
        up_event = XIL(0)
        form = XIL(0x555557520b53)
        specs = XIL(0)
        sa_avail = 93825001726048
        sa_count = 0
        string_len = 93824993913168
        string = 0x5555575d5af5 ""
        string_end = 0x7fffffffd4e0 ""
        next_event = 93824994845205
        nargs = 0
        args = 0x0
        visargs = 0x0
        varies = 0x555555e62060 <lispsym> "\230\001"
        tem = 0x7fffffffd570 "\365Z]WUU"
        val = XIL(0)
#15 0x00005555557fd8db in funcall_subr (subr=0x555555ddece0 <Scall_interactively>, numargs=3, args=0x7fffffffd720) at ../../master/src/eval.c:2992
        internal_argbuf = {XIL(0x7fffffffd630), XIL(0x1000000000), XIL(0x555555ddece0), XIL(0x7fffffffd638), XIL(0x5555557f44c4), XIL(0x10557f3f8b), XIL(0x555555ddece5), XIL(0x7fffffffd650)}
        internal_args = 0x7fffffffd720
#16 0x00005555557fd349 in Ffuncall (nargs=4, args=0x7fffffffd718) at ../../master/src/eval.c:2914
        fun = XIL(0x555555ddece5)
        original_fun = XIL(0x2aaa9c71a1f0)
        funcar = XIL(0x7fffffffd6b0)
        numargs = 3
        val = XIL(0x7fffffffd6d0)
        count = 5
#17 0x0000555555856a0c in exec_byte_code (bytestr=XIL(0x7ffff26110fc), vector=XIL(0x7ffff2610d65), maxdepth=make_fixnum(13), args_template=make_fixnum(1025), nargs=1, args=0x7fffffffdc90) at ../../master/src/bytecode.c:632
        op = 3
        type = CATCHER
        targets = {0x5555558598a1 <exec_byte_code+15219>, 0x5555558598c6 <exec_byte_code+15256>, 0x5555558598c8 <exec_byte_code+15258>, 0x5555558598ca <exec_byte_code+15260>, 0x5555558598cc <exec_byte_code+15262>, 0x5555558598cc <exec_byte_code+15262>, 0x555555859931 <exec_byte_code+15363>, 0x5555558599a5 <exec_byte_code+15479>, 0x5555558562cc <exec_byte_code+1438>, 0x5555558562ce <exec_byte_code+1440>, 0x5555558562d0 <exec_byte_code+1442>, 0x5555558562d2 <exec_byte_code+1444>, 0x5555558562d4 <exec_byte_code+1446>, 0x5555558562d4 <exec_byte_code+1446>, 0x5555558562da <exec_byte_code+1452>, 0x55555585629b <exec_byte_code+1389>, 0x5555558566f2 <exec_byte_code+2500>, 0x5555558566f4 <exec_byte_code+2502>, 0x5555558566f6 <exec_byte_code+2504>, 0x5555558566f8 <exec_byte_code+2506>, 0x5555558566fa <exec_byte_code+2508>, 0x5555558566fa <exec_byte_code+2508>, 0x55555585672f <exec_byte_code+2561>, 0x555555856700 <exec_byte_code+2514>, 0x555555856924 <exec_byte_code+3062>, 0x555555856926 <exec_byte_code+3064>, 0x555555856928 <exec_byte_code+3066>, 0x55555585692a <exec_byte_code+3068>, 0x55555585692c <exec_byte_code+3070>, 0x55555585692c <exec_byte_code+3070>, 0x5555558568de <exec_byte_code+2992>, 0x5555558568f5 <exec_byte_code+3015>, 0x5555558569d9 <exec_byte_code+3243>, 0x5555558569db <exec_byte_code+3245>, 0x5555558569dd <exec_byte_code+3247>, 0x5555558569df <exec_byte_code+3249>, 0x5555558569e1 <exec_byte_code+3251>, 0x5555558569e1 <exec_byte_code+3251>, 0x555555856993 <exec_byte_code+3173>, 0x5555558569aa <exec_byte_code+3196>, 0x555555856a8b <exec_byte_code+3421>, 0x555555856a8d <exec_byte_code+3423>, 0x555555856a8f <exec_byte_code+3425>, 0x555555856a91 <exec_byte_code+3427>, 0x555555856a93 <exec_byte_code+3429>, 0x555555856a93 <exec_byte_code+3429>, 0x555555856a45 <exec_byte_code+3351>, 0x555555856a5c <exec_byte_code+3374>, 0x5555558572f3 <exec_byte_code+5573>, 0x5555558571d6 <exec_byte_code+5288>, 0x5555558571cd <exec_byte_code+5279>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x55555585752d <exec_byte_code+6143>, 0x555555857643 <exec_byte_code+6421>, 0x5555558576a0 <exec_byte_code+6514>, 0x555555857700 <exec_byte_code+6610>, 0x555555857762 <exec_byte_code+6708>, 0x55555585654b <exec_byte_code+2077>, 0x5555558565c6 <exec_byte_code+2200>, 0x5555558577db <exec_byte_code+6829>, 0x555555856488 <exec_byte_code+1882>, 0x55555585662e <exec_byte_code+2304>, 0x555555857843 <exec_byte_code+6933>, 0x5555558578ab <exec_byte_code+7037>, 0x5555558578f3 <exec_byte_code+7109>, 0x55555585795b <exec_byte_code+7213>, 0x5555558579c1 <exec_byte_code+7315>, 0x555555857aa7 <exec_byte_code+7545>, 0x555555857aef <exec_byte_code+7617>, 0x555555857b57 <exec_byte_code+7721>, 0x555555857bdc <exec_byte_code+7854>, 0x555555857c24 <exec_byte_code+7926>, 0x555555857c6c <exec_byte_code+7998>, 0x555555857cd4 <exec_byte_code+8102>, 0x555555857d3c <exec_byte_code+8206>, 0x555555857da4 <exec_byte_code+8310>, 0x555555857e29 <exec_byte_code+8443>, 0x555555857e78 <exec_byte_code+8522>, 0x555555857ec7 <exec_byte_code+8601>, 0x555555857f8e <exec_byte_code+8800>, 0x555555858087 <exec_byte_code+9049>, 0x555555858180 <exec_byte_code+9298>, 0x5555558581ed <exec_byte_code+9407>, 0x55555585825a <exec_byte_code+9516>, 0x5555558582c7 <exec_byte_code+9625>, 0x555555858334 <exec_byte_code+9734>, 0x5555558583a1 <exec_byte_code+9843>, 0x5555558583f0 <exec_byte_code+9922>, 0x5555558584ea <exec_byte_code+10172>, 0x555555858539 <exec_byte_code+10251>, 0x555555858588 <exec_byte_code+10330>, 0x5555558585d7 <exec_byte_code+10409>, 0x5555558586dd <exec_byte_code+10671>, 0x55555585704d <exec_byte_code+4895>, 0x555555858738 <exec_byte_code+10762>, 0x555555858780 <exec_byte_code+10834>, 0x555555858842 <exec_byte_code+11028>, 0x5555558588ab <exec_byte_code+11133>, 0x555555858906 <exec_byte_code+11224>, 0x55555585894e <exec_byte_code+11296>, 0x555555858991 <exec_byte_code+11363>, 0x5555558589d4 <exec_byte_code+11430>, 0x555555858a1f <exec_byte_code+11505>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555858a77 <exec_byte_code+11593>, 0x555555858aba <exec_byte_code+11660>, 0x555555858afd <exec_byte_code+11727>, 0x555555858b40 <exec_byte_code+11794>, 0x555555858b83 <exec_byte_code+11861>, 0x555555858bc6 <exec_byte_code+11928>, 0x55555585704d <exec_byte_code+4895>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555858c0e <exec_byte_code+12000>, 0x555555858c60 <exec_byte_code+12082>, 0x555555858ca8 <exec_byte_code+12154>, 0x555555858cf0 <exec_byte_code+12226>, 0x555555858d58 <exec_byte_code+12330>, 0x555555858dc0 <exec_byte_code+12434>, 0x555555858e08 <exec_byte_code+12506>, 0x555555858ec5 <exec_byte_code+12695>, 0x555555858f2d <exec_byte_code+12799>, 0x555555858f95 <exec_byte_code+12903>, 0x555555858ffd <exec_byte_code+13007>, 0x555555859040 <exec_byte_code+13074>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555856f93 <exec_byte_code+4709>, 0x555555856b3d <exec_byte_code+3599>, 0x5555558563f6 <exec_byte_code+1736>, 0x555555856bee <exec_byte_code+3776>, 0x555555856c72 <exec_byte_code+3908>, 0x555555856cf3 <exec_byte_code+4037>, 0x555555856f47 <exec_byte_code+4633>, 0x555555856f5c <exec_byte_code+4654>, 0x55555585688b <exec_byte_code+2909>, 0x555555857016 <exec_byte_code+4840>, 0x555555857084 <exec_byte_code+4950>, 0x555555857115 <exec_byte_code+5095>, 0x55555585715e <exec_byte_code+5168>, 0x55555585733f <exec_byte_code+5649>, 0x5555558573bc <exec_byte_code+5774>, 0x555555857441 <exec_byte_code+5907>, 0x5555558574a7 <exec_byte_code+6009>, 0x555555856aef <exec_byte_code+3521>, 0x555555859088 <exec_byte_code+13146>, 0x55555585910d <exec_byte_code+13279>, 0x555555859155 <exec_byte_code+13351>, 0x55555585919d <exec_byte_code+13423>, 0x5555558591e5 <exec_byte_code+13495>, 0x55555585922d <exec_byte_code+13567>, 0x555555859295 <exec_byte_code+13671>, 0x5555558592fd <exec_byte_code+13775>, 0x555555859365 <exec_byte_code+13879>, 0x5555558593cd <exec_byte_code+13983>, 0x555555859516 <exec_byte_code+14312>, 0x55555585957e <exec_byte_code+14416>, 0x5555558595e6 <exec_byte_code+14520>, 0x55555585962e <exec_byte_code+14592>, 0x555555859696 <exec_byte_code+14696>, 0x5555558596fe <exec_byte_code+14800>, 0x555555859746 <exec_byte_code+14872>, 0x55555585978e <exec_byte_code+14944>, 0x555555858626 <exec_byte_code+10488>, 0x555555858675 <exec_byte_code+10567>, 0x5555558597dd <exec_byte_code+15023>, 0x55555585983f <exec_byte_code+15121>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555856d74 <exec_byte_code+4166>, 0x555555856d91 <exec_byte_code+4195>, 0x555555856e00 <exec_byte_code+4306>, 0x555555856e6f <exec_byte_code+4417>, 0x555555856edb <exec_byte_code+4525>, 0x555555857a2f <exec_byte_code+7425>, 0x555555857f16 <exec_byte_code+8680>, 0x5555558587ca <exec_byte_code+10908>, 0x555555859a38 <exec_byte_code+15626>, 0x555555859aad <exec_byte_code+15743>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555859b43 <exec_byte_code+15893>, 0x555555859bca <exec_byte_code+16028>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x5555558598a1 <exec_byte_code+15219>, 0x555555859d18 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 24
        bytestr_length = 138
        vectorp = 0x7ffff2610d68
        quitcounter = 1 '\001'
        stack_items = 14
        sa_avail = 16134
        sa_count = 5
        alloc = 0x7fffffffd6e0
        stack_base = 0x7fffffffd6e0
        top = 0x7fffffffd718
        stack_lim = 0x7fffffffd750
        bytestr_data = 0x7fffffffd750 "\304\020\211?\205\023"
        pc = 0x7fffffffd7b2 "\006\006\071\203\211"
        count = 5
        result = XIL(0x30)
#18 0x00005555557fdb34 in fetch_and_exec_byte_code (fun=XIL(0x7ffff2610d35), syms_left=make_fixnum(1025), nargs=1, args=0x7fffffffdc88) at ../../master/src/eval.c:3036
#19 0x00005555557fdfba in funcall_lambda (fun=XIL(0x7ffff2610d35), nargs=1, arg_vector=0x7fffffffdc88) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffdc00)
        syms_left = make_fixnum(1025)
        next = XIL(0x555555e62060)
        lexenv = XIL(0x1800000000)
        count = 5
        i = 93824994985156
        optional = false
        rest = false
#20 0x00005555557fd38d in Ffuncall (nargs=2, args=0x7fffffffdc80) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff2610d35)
        original_fun = XIL(0x4470)
        funcar = XIL(0)
        numargs = 1
        val = XIL(0x7fffffffdca8)
        count = 4
#21 0x00005555557fcb57 in call1 (fn=XIL(0x4470), arg1=XIL(0x17286d0)) at ../../master/src/eval.c:2774
#22 0x000055555572150e in command_loop_1 () at ../../master/src/keyboard.c:1466
        scount = 3
        cmd = XIL(0x17286d0)
        keybuf = {make_fixnum(81), XIL(0x7ffff2c1d0d5), XIL(0), XIL(0), XIL(0x7fffffffdd70), XIL(0x5555557fcbe1), XIL(0), XIL(0x7ffff25734c4), XIL(0x5555586b9583), XIL(0), XIL(0x555555e62060), XIL(0), XIL(0x7fffffffdd50), make_fixnum(23456248526024), XIL(0), XIL(0), XIL(0x555555e62060), XIL(0), XIL(0x7fffffffdd80), XIL(0x5555557f3f8b), XIL(0), XIL(0x555555e62060), XIL(0), XIL(0), XIL(0x7fffffffdda0), XIL(0x5555557f3fdf), make_fixnum(2), make_fixnum(0), XIL(0x7fffffffdde0), XIL(0x5555557f9645)}
        i = 1
        prev_modiff = 262
        prev_buffer = 0x555557376798
        already_adjusted = false
#23 0x00005555557f9105 in internal_condition_case (bfun=0x555555720cb8 <command_loop_1>, handlers=XIL(0x90), hfun=0x5555557202db <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555560c2983)
        c = 0x555555f5d3e0
#24 0x00005555557208a8 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#25 0x00005555557f8515 in internal_catch (tag=XIL(0xd9e0), func=0x55555572087b <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555f46710
#26 0x0000555555720847 in command_loop () at ../../master/src/keyboard.c:1073
#27 0x000055555571fdc4 in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf50)
#28 0x000055555571ffbb in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#29 0x000055555571bea0 in main (argc=2, argv=0x7fffffffe1b8) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"kill-buffer" (0xffffcbf0)
"gnus-summary-exit-no-update" (0xffffd390)
"funcall-interactively" (0xffffd388)
"call-interactively" (0xffffd720)
"command-execute" (0xffffdc88)


-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 13:53                                                                                   ` Michael Welsh Duggan
@ 2021-03-31 14:01                                                                                     ` Eli Zaretskii
  2021-03-31 14:32                                                                                       ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-03-31 14:01 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: Eli Zaretskii <eliz@gnu.org>, "mwd@md5i.com" <mwd@md5i.com>,
>         "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org"
>  <47244@debbugs.gnu.org>
> Date: Wed, 31 Mar 2021 09:53:56 -0400
> 
> And, trapped!  Backtrace is included.  Maybe unfortunately, it isn't one
> of the new easserts, but at least we now have a different backtrace.
> Hopefully that will lead to new insights.  I will note that, in this
> instance, the reproducer did not follow the same formula, as you can see
> in the Lisp backtrace.
> 
> #0  raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:50
>         set = {
>           __val = {402653184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268435456, 0, 0, 93824994300624, 18446744067266838271}
>         }
>         pid = <optimized out>
>         tid = <optimized out>
> #1  0x00005555557197a1 in terminate_due_to_signal
>     (sig=6, backtrace_limit=2147483647) at ../../master/src/emacs.c:416
> #2  0x00005555557c4858 in die
>     (msg=0x55555594f2a0 "b->window_count == 0", file=0x55555594da8a "../../master/src/buffer.c", line=1969) at ../../master/src/alloc.c:7420
> #3  0x0000555555759190 in Fkill_buffer (buffer_or_name=XIL(0x555557888814))
>     at ../../master/src/buffer.c:1969
>         buffer = XIL(0x555557889325)
>         b = 0x555557889320
>         tem = XIL(0)
>         m = 0x0

So replace_buffer_in_windows didn't do its job?

Unfortunately, this assertion is _after_ we make the buffer's name
nil, so no way of knowing for sure which buffer is that, except by
looking at the Lisp which triggered that.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 14:01                                                                                     ` Eli Zaretskii
@ 2021-03-31 14:32                                                                                       ` martin rudalics
  2021-03-31 14:48                                                                                         ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-31 14:32 UTC (permalink / raw)
  To: Eli Zaretskii, Michael Welsh Duggan; +Cc: mwd, schwab, 47244

 >> #0  raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:50
 >>          set = {
 >>            __val = {402653184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268435456, 0, 0, 93824994300624, 18446744067266838271}
 >>          }
 >>          pid = <optimized out>
 >>          tid = <optimized out>
 >> #1  0x00005555557197a1 in terminate_due_to_signal
 >>      (sig=6, backtrace_limit=2147483647) at ../../master/src/emacs.c:416
 >> #2  0x00005555557c4858 in die
 >>      (msg=0x55555594f2a0 "b->window_count == 0", file=0x55555594da8a "../../master/src/buffer.c", line=1969) at ../../master/src/alloc.c:7420
 >> #3  0x0000555555759190 in Fkill_buffer (buffer_or_name=XIL(0x555557888814))
 >>      at ../../master/src/buffer.c:1969
 >>          buffer = XIL(0x555557889325)
 >>          b = 0x555557889320
 >>          tem = XIL(0)
 >>          m = 0x0
 >
 > So replace_buffer_in_windows didn't do its job?

Why did replace_buffer_in_windows_safely then apparently fail too?  What
is the value of b->window_count here?  Unless we managed to botch that's
buffer's window count, I can't see how replace_buffer_in_windows_safely
could have possibly failed.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 14:32                                                                                       ` martin rudalics
@ 2021-03-31 14:48                                                                                         ` Michael Welsh Duggan
  2021-03-31 15:49                                                                                           ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-31 14:48 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  >> #0  raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:50
>  >>          set = {
>  >>            __val = {402653184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268435456, 0, 0, 93824994300624, 18446744067266838271}
>  >>          }
>  >>          pid = <optimized out>
>  >>          tid = <optimized out>
>  >> #1  0x00005555557197a1 in terminate_due_to_signal
>  >>      (sig=6, backtrace_limit=2147483647) at ../../master/src/emacs.c:416
>  >> #2  0x00005555557c4858 in die
>  >>      (msg=0x55555594f2a0 "b->window_count == 0", file=0x55555594da8a "../../master/src/buffer.c", line=1969) at ../../master/src/alloc.c:7420
>  >> #3  0x0000555555759190 in Fkill_buffer (buffer_or_name=XIL(0x555557888814))
>  >>      at ../../master/src/buffer.c:1969
>  >>          buffer = XIL(0x555557889325)
>  >>          b = 0x555557889320
>  >>          tem = XIL(0)
>  >>          m = 0x0
>  >
>  > So replace_buffer_in_windows didn't do its job?
>
> Why did replace_buffer_in_windows_safely then apparently fail too?  What
> is the value of b->window_count here?  Unless we managed to botch that's
> buffer's window count, I can't see how replace_buffer_in_windows_safely
> could have possibly failed.

b->window_count is 1.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 14:48                                                                                         ` Michael Welsh Duggan
@ 2021-03-31 15:49                                                                                           ` martin rudalics
  2021-03-31 17:01                                                                                             ` Michael Welsh Duggan
  2021-04-01 13:54                                                                                             ` Michael Welsh Duggan
  0 siblings, 2 replies; 160+ messages in thread
From: martin rudalics @ 2021-03-31 15:49 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 175 bytes --]

 > b->window_count is 1.

What else should I have expected?  I attach yet another diff.  When the
same assertion triggers we'll at least know which buffer got killed.

martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 6925 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..70b37e61a2 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1951,6 +1951,9 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
      This gets rid of them for certain.  */
   reset_buffer_local_variables (b, 1);
 
+  if (!b->base_buffer)
+    eassert (b->window_count == 0);
+
   bset_name (b, Qnil);
 
   block_input ();
@@ -1991,6 +1994,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2156,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.  */
diff --git a/src/window.c b/src/window.c
index eb16e2a433..baf9ed2d90 100644
--- a/src/window.c
+++ b/src/window.c
@@ -307,7 +307,11 @@ wset_buffer (struct window *w, Lisp_Object val)
   if (BUFFERP (val))
     /* Make sure that we do not assign the buffer
        to an internal window.  */
-    eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    {
+      eassert (BUFFER_LIVE_P (XBUFFER (val)));
+      eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    }
+
   w->contents = val;
   adjust_window_count (w, 1);
 }
@@ -315,6 +319,7 @@ wset_buffer (struct window *w, Lisp_Object val)
 static void
 wset_old_buffer (struct window *w, Lisp_Object val)
 {
+  eassert (BUFFER_LIVE_P (XBUFFER (val)));
   w->old_buffer = val;
 }
 
@@ -594,6 +599,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -2950,6 +2957,8 @@ DEFUN ("window-list-1", Fwindow_list_1, Swindow_list_1, 0, 3, 0,
   CHECK_ALL_WINDOWS                 /* Arg is ignored */
 };
 
+static int replace_buffer_in_windows_safely_count;
+
 static Lisp_Object
 window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 	     Lisp_Object frames)
@@ -3048,6 +3057,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 		if (EQ (window, selected_window)
 		    && XBUFFER (w->contents) == current_buffer)
 		  Fset_buffer (w->contents);
+
+		replace_buffer_in_windows_safely_count += 1;
 	      }
 	    break;
 
@@ -3411,6 +3422,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3419,6 +3432,10 @@ replace_buffer_in_windows (Lisp_Object buffer)
 void
 replace_buffer_in_windows_safely (Lisp_Object buffer)
 {
+  int count = buffer_window_count (XBUFFER (buffer));
+
+  replace_buffer_in_windows_safely_count = 0;
+
   if (buffer_window_count (XBUFFER (buffer)))
     {
       Lisp_Object tail, frame;
@@ -3429,6 +3446,8 @@ replace_buffer_in_windows_safely (Lisp_Object buffer)
       FOR_EACH_FRAME (tail, frame)
 	window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
     }
+
+  eassert (count == replace_buffer_in_windows_safely_count);
 }
 \f
 /* The following three routines are needed for running a window's
@@ -3960,6 +3979,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4075,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -5174,6 +5198,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
@@ -7233,6 +7259,9 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
   minibuf_selected_window = data->minibuf_selected_window;
 
   SAFE_FREE ();
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return FRAME_LIVE_P (f) ? Qt : Qnil;
 }
 
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 15:49                                                                                           ` martin rudalics
@ 2021-03-31 17:01                                                                                             ` Michael Welsh Duggan
  2021-03-31 18:41                                                                                               ` martin rudalics
  2021-04-01 13:54                                                                                             ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-31 17:01 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>> b->window_count is 1.
>
> What else should I have expected?  I attach yet another diff.  When the
> same assertion triggers we'll at least know which buffer got killed.

I have no idea what changed to cause this, but with this current
patchset I can't actually start emacs.

#0  set_buffer_internal_2 (b=0x7ffff2a3cb10) at ../../master/src/buffer.c:2157
        old_buf = 0x0
        tail = XIL(0x7ffff2a3cb15)
#1  0x0000555555759834 in set_buffer_internal_1 (b=0x7ffff2a3cb10)
    at ../../master/src/buffer.c:2146
#2  0x0000555555753b93 in set_buffer_internal (b=0x7ffff2a3cb10)
    at ../../master/src/buffer.h:1184
#3  0x0000555555759b16 in Fset_buffer (buffer_or_name=XIL(0x7ffff2a3cb15))
    at ../../master/src/buffer.c:2246
        buffer = XIL(0x7ffff2a3cb15)
#4  0x000055555564f0e4 in set_window_buffer
    (window=XIL(0x555555f06315), buffer=XIL(0x7ffff2a3cb15), run_hooks_p=false, keep_margins_p=false) at ../../master/src/window.c:4041
        w = 0x555555f06310
        b = 0x7ffff2a3cb10
        count = 0
        samebuf = false
#5  0x00005555555a958f in make_frame (mini_p=true)
    at ../../master/src/frame.c:978
        frame = XIL(0x555555efe9dd)
        f = 0x555555efe9d8
        rw = 0x555555efec40
        mw = 0x555555f06310
        root_window = XIL(0x555555efec45)
        mini_window = XIL(0x555555f06315)
#6  0x00005555555a9b5c in make_initial_frame ()
    at ../../master/src/frame.c:1105
        f = 0x7fffffffdbc0
        terminal = 0x555555efe7c0
        frame = make_fixnum(23456248299993)
#7  0x000055555565cce3 in init_window_once_for_pdumper ()
    at ../../master/src/window.c:8198
        old_mode_line_in_non_selected_windows = true
        saved_dumped_with_pdumper = true
        f = 0x7fffffffdbd0
#8  0x00005555557d1f02 in pdumper_load
    (dump_filename=0x555555ec59f0 "/home/md5i/src/emacs/build/src/emacs.pdmp")
    at ../../master/src/pdumper.c:5402
        i = 7
        dump_size = 10671168
        stat = {
          st_dev = 26,
          st_ino = 2932069,
          st_nlink = 2,
          st_mode = 33188,
          st_uid = 1000,
          st_gid = 1000,
          __pad0 = 0,
          st_rdev = 0,
          st_size = 10671168,
          st_blksize = 4096,
          st_blocks = 20848,
          st_atim = {
            tv_sec = 1617209633,
            tv_nsec = 635319963
          },
          st_mtim = {
            tv_sec = 1617209633,
            tv_nsec = 619319612
          },
          st_ctim = {
            tv_sec = 1617209633,
            tv_nsec = 619319612
          },
          __glibc_reserved = {0, 0, 0}
        }
        dump_base = 140737259114496
        dump_page_size = 65536
        adj_discardable_start = 7208960
        mark_bits = {{
            bits = 0x7ffff252a010,
            number_words = 13995
          }, {
            bits = 0x7ffff2545568,
            number_words = 13995
          }}
        mark_bits_needed = 895639
        header_buf = {
          magic = "DUMPEDGNUEMACS\000",
          fingerprint = "\336xݮhP\231\005n\261\265\071\226\201&\267\017L\211\005J\212K\366\242\263\274\250)H\353m",
          dump_relocs = {
            offset = 8354696,
            nr_entries = 405189
          },
          object_starts = {
            offset = 9975456,
            nr_entries = 161879
          },
          emacs_relocs = {
            offset = 10622976,
            nr_entries = 3012
          },
          discardable_start = 7165112,
          cold_start = 7340032,
          hash_list = 7160960
        }
        header = 0x7fffffffdd50
        sections = {{
            spec = {
              fd = 3,
              size = 7208960,
              offset = 0,
              protection = DUMP_MEMORY_ACCESS_READWRITE
            },
            mapping = 0x0,
            release = 0x0,
            private = 0x0
          }, {
            spec = {
              fd = 3,
              size = 131072,
              offset = 7208960,
              protection = DUMP_MEMORY_ACCESS_READWRITE
            },
            mapping = 0x0,
            release = 0x0,
            private = 0x0
          }, {
            spec = {
              fd = 3,
              size = 3331136,
              offset = 7340032,
              protection = DUMP_MEMORY_ACCESS_READWRITE
            },
            mapping = 0x0,
            release = 0x0,
            private = 0x0
          }}
        start_time = {
          tv_sec = 1617209923,
          tv_nsec = 161514409
        }
        dump_filename_copy = 0x555555ec5a80 "/home/md5i/src/emacs/build/src/emacs.pdmp"
        err = 0
        dump_fd = 3
        desired = "\336xݮhP\231\005n\261\265\071\226\201&\267\017L\211\005J\212K\366\242\263\274\250)H\353m"
        hashes = XIL(0x7ffff2c35485)
        load_timespec = {
          tv_sec = 0,
          tv_nsec = 0
        }
#9  0x000055555571a568 in load_pdump (argc=1, argv=0x7fffffffe1c8)
    at ../../master/src/emacs.c:860
        real_exename = 0x555555ec59f0 "/home/md5i/src/emacs/build/src/emacs.pdmp"
        exenamelen = 36
        needed = 42
        suffix = 0x555555946c46 ".pdmp"
        result = 124
        strip_suffix = 0x0
        path_exec = 0x555555946c78 "/usr/local/libexec/emacs/28.0.50/x86_64-pc-linux-gnu"
        dump_file = 0x555555ec59f0 "/home/md5i/src/emacs/build/src/emacs.pdmp"
        skip_args = 0
        bufsize = 128
        argv0_base = 0x7fffffffe010 "\251\221\234!"
        needed = 140737318400460
#10 0x000055555571aac9 in main (argc=1, argv=0x7fffffffe1c8) at ../../master/src/emacs.c:1068
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 0
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 140737323689568,
          rlim_max = 140737318407889
        }
        lc_all = 0x687475410000001e <error: Cannot access memory at address 0x687475410000001e>
        sockfd = 0
        module_assertions = false



-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 17:01                                                                                             ` Michael Welsh Duggan
@ 2021-03-31 18:41                                                                                               ` martin rudalics
  2021-03-31 19:14                                                                                                 ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-03-31 18:41 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

 > I have no idea what changed to cause this, but with this current
 > patchset I can't actually start emacs.
 >
 > #0  set_buffer_internal_2 (b=0x7ffff2a3cb10) at ../../master/src/buffer.c:2157
 >          old_buf = 0x0
 >          tail = XIL(0x7ffff2a3cb15)

I doubt that my last additions can have cause that and line 2157 is

   BUFFER_CHECK_INDIRECTION (b);

so I wonder what could have gone wrong here.  Maybe some pdumper snafu?

Does it start with emacs -Q?  Does it start with --enable-checking=no?
Does it start without the changeset applied?

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 18:41                                                                                               ` martin rudalics
@ 2021-03-31 19:14                                                                                                 ` Michael Welsh Duggan
  2021-03-31 19:18                                                                                                   ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-31 19:14 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > I have no idea what changed to cause this, but with this current
>  > patchset I can't actually start emacs.
>  >
>  > #0 set_buffer_internal_2 (b=0x7ffff2a3cb10) at
>  > ../../master/src/buffer.c:2157
>  >          old_buf = 0x0
>  >          tail = XIL(0x7ffff2a3cb15)
>
> I doubt that my last additions can have cause that and line 2157 is
>
>    BUFFER_CHECK_INDIRECTION (b);
>
> so I wonder what could have gone wrong here.  Maybe some pdumper snafu?
>
> Does it start with emacs -Q? 

Nope.  It fails.

> Does it start with --enable-checking=no?

Yes.

> Does it start without the changeset applied?

Yes.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 19:14                                                                                                 ` Michael Welsh Duggan
@ 2021-03-31 19:18                                                                                                   ` Michael Welsh Duggan
  2021-04-01  7:14                                                                                                     ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-03-31 19:18 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Michael Welsh Duggan <mwd@cert.org> writes:

> martin rudalics <rudalics@gmx.at> writes:
>
>>  > I have no idea what changed to cause this, but with this current
>>  > patchset I can't actually start emacs.
>>  >
>>  > #0 set_buffer_internal_2 (b=0x7ffff2a3cb10) at
>>  > ../../master/src/buffer.c:2157
>>  >          old_buf = 0x0
>>  >          tail = XIL(0x7ffff2a3cb15)
>>
>> I doubt that my last additions can have cause that and line 2157 is
>>
>>    BUFFER_CHECK_INDIRECTION (b);
>>
>> so I wonder what could have gone wrong here.  Maybe some pdumper snafu?
>>
>> Does it start with emacs -Q? 
>
> Nope.  It fails.
>
>> Does it start with --enable-checking=no?
>
> Yes.
>
>> Does it start without the changeset applied?
>
> Yes.

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

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 19:18                                                                                                   ` Michael Welsh Duggan
@ 2021-04-01  7:14                                                                                                     ` martin rudalics
  2021-04-01  7:45                                                                                                       ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-01  7:14 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

 >>> 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





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-01  7:14                                                                                                     ` martin rudalics
@ 2021-04-01  7:45                                                                                                       ` Eli Zaretskii
  2021-04-01 13:20                                                                                                         ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-01  7:45 UTC (permalink / raw)
  To: martin rudalics; +Cc: mwd, schwab, 47244, mwd

> Cc: Eli Zaretskii <eliz@gnu.org>, "mwd@md5i.com" <mwd@md5i.com>,
>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> From: martin rudalics <rudalics@gmx.at>
> Date: Thu, 1 Apr 2021 09:14:06 +0200
> 
> Otherwise I'm clueless.  Maybe Eli has an idea.

I would like first to understand what prevents Emacs from starting.
Does it crash at that point, i.e. inside the call to
BUFFER_CHECK_INDIRECTION? if so, can Michael please try to identify
what is the immediate cause of the crash?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-01  7:45                                                                                                       ` Eli Zaretskii
@ 2021-04-01 13:20                                                                                                         ` Michael Welsh Duggan
  2021-04-01 13:22                                                                                                           ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-01 13:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, schwab, 47244, mwd

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: Eli Zaretskii <eliz@gnu.org>, "mwd@md5i.com" <mwd@md5i.com>,
>>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> From: martin rudalics <rudalics@gmx.at>
>> Date: Thu, 1 Apr 2021 09:14:06 +0200
>> 
>> Otherwise I'm clueless.  Maybe Eli has an idea.
>
> I would like first to understand what prevents Emacs from starting.
> Does it crash at that point, i.e. inside the call to
> BUFFER_CHECK_INDIRECTION? if so, can Michael please try to identify
> what is the immediate cause of the crash?

And I find I can't ansswer the question.  I rebuilt to give that
information, and this time everything is working just fine with
--enable-checking and the most recent debugging patch.  No idea what
happened yesterday.

I will say that what happened yesterday was not a crash.  It was a
breakpoint on the

    error ("Selecting deleted buffer");

libe that was added to set_buffer_internal_2.  I think maybe I overused
that gdb session and it got confused.  I'm running now with the latest
patch and we'll see if the problem triggers today.

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-01 13:20                                                                                                         ` Michael Welsh Duggan
@ 2021-04-01 13:22                                                                                                           ` Eli Zaretskii
  0 siblings, 0 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-01 13:22 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244, mwd

> From: Michael Welsh Duggan <mwd@md5i.com>
> Cc: martin rudalics <rudalics@gmx.at>,  mwd@cert.org,  mwd@md5i.com,
>   schwab@linux-m68k.org,  47244@debbugs.gnu.org
> Date: Thu, 01 Apr 2021 09:20:48 -0400
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> Cc: Eli Zaretskii <eliz@gnu.org>, "mwd@md5i.com" <mwd@md5i.com>,
> >>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
> >>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> >> From: martin rudalics <rudalics@gmx.at>
> >> Date: Thu, 1 Apr 2021 09:14:06 +0200
> >> 
> >> Otherwise I'm clueless.  Maybe Eli has an idea.
> >
> > I would like first to understand what prevents Emacs from starting.
> > Does it crash at that point, i.e. inside the call to
> > BUFFER_CHECK_INDIRECTION? if so, can Michael please try to identify
> > what is the immediate cause of the crash?
> 
> And I find I can't ansswer the question.  I rebuilt to give that
> information, and this time everything is working just fine with
> --enable-checking and the most recent debugging patch.  No idea what
> happened yesterday.

Great, thanks.

> I will say that what happened yesterday was not a crash.  It was a
> breakpoint on the
> 
>     error ("Selecting deleted buffer");
> 
> libe that was added to set_buffer_internal_2.  I think maybe I overused
> that gdb session and it got confused.  I'm running now with the latest
> patch and we'll see if the problem triggers today.

There's no need to debug problems that cannot be reproduced.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-03-31 15:49                                                                                           ` martin rudalics
  2021-03-31 17:01                                                                                             ` Michael Welsh Duggan
@ 2021-04-01 13:54                                                                                             ` Michael Welsh Duggan
  2021-04-01 14:56                                                                                               ` martin rudalics
  1 sibling, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-01 13:54 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > b->window_count is 1.
>
> What else should I have expected?  I attach yet another diff.  When the
> same assertion triggers we'll at least know which buffer got killed.
>
> martin
>

Okay.  I got a nice trigger from this.  I've added some extra
debugging info after the backtrace.

#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647)
    at ../../master/src/emacs.c:379
#1  0x00005555557c48ef in die
    (msg=0x55555590f830 "count == replace_buffer_in_windows_safely_count", file=0x55555590e9cf "../../master/src/window.c", line=3450)
    at ../../master/src/alloc.c:7420
#2  0x000055555564d93a in replace_buffer_in_windows_safely
    (buffer=XIL(0x5555578531b5)) at ../../master/src/window.c:3450
        count = 1
#3  0x0000555555758e1a in Fkill_buffer (buffer_or_name=XIL(0x5555578531b5))
    at ../../master/src/buffer.c:1880
        buffer = XIL(0x5555578531b5)
        b = 0x5555578531b0
        tem = XIL(0)
        m = 0x7fffffffcbc0
#4  0x00005555557fd918 in funcall_subr
    (subr=0x555555dd8ce0 <Skill_buffer>, numargs=1, args=0x7fffffffcce8)
    at ../../master/src/eval.c:2987
        internal_argbuf = 
          {XIL(0x7fffffffcc20), XIL(0x1000000000), XIL(0x555555dd8ce0), XIL(0x7fffffffcc28), XIL(0x5555557f455b), make_fixnum(17538469896), XIL(0x555555dd8ce5), XIL(0x7fffffffcc40)}
        internal_args = 0x7fffffffcce8
#5  0x00005555557fd3e0 in Ffuncall (nargs=2, args=0x7fffffffcce0)
    at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd8ce5)
        original_fun = XIL(0x2aaa9c7157c0)
        funcar = XIL(0x5ffffcca0)
        numargs = 1
        val = XIL(0x7fffffffccc0)
        count = 10
#6  0x0000555555856aa3 in exec_byte_code
    (bytestr=XIL(0x5555576cf5b4), vector=XIL(0x5555576e7d15), maxdepth=make_fixnum(5), args_template=make_fixnum(0), nargs=0, args=0x7fffffffd390)
    at ../../master/src/bytecode.c:632
        op = 1
        type = (CATCHER_ALL | unknown: 0x557d70b4)
        targets = 
          {0x555555859938 <exec_byte_code+15219>, 0x55555585995d <exec_byte_code+15256>, 0x55555585995f <exec_byte_code+15258>, 0x555555859961 <exec_byte_code+15260>, 0x555555859963 <exec_byte_code+15262>, 0x555555859963 <exec_byte_code+15262>, 0x5555558599c8 <exec_byte_code+15363>, 0x555555859a3c <exec_byte_code+15479>, 0x555555856363 <exec_byte_code+1438>, 0x555555856365 <exec_byte_code+1440>, 0x555555856367 <exec_byte_code+1442>, 0x555555856369 <exec_byte_code+1444>, 0x55555585636b <exec_byte_code+1446>, 0x55555585636b <exec_byte_code+1446>, 0x555555856371 <exec_byte_code+1452>, 0x555555856332 <exec_byte_code+1389>, 0x555555856789 <exec_byte_code+2500>, 0x55555585678b <exec_byte_code+2502>, 0x55555585678d <exec_byte_code+2504>, 0x55555585678f <exec_byte_code+2506>, 0x555555856791 <exec_byte_code+2508>, 0x555555856791 <exec_byte_code+2508>, 0x5555558567c6 <exec_byte_code+2561>, 0x555555856797 <exec_byte_code+2514>, 0x5555558569bb <exec_byte_code+3062>, 0x5555558569bd <exec_byte_code+3064>, 0x5555558569bf <exec_byte_code+3066>, 0x5555558569c1 <exec_byte_code+3068>, 0x5555558569c3 <exec_byte_code+3070>, 0x5555558569c3 <exec_byte_code+3070>, 0x555555856975 <exec_byte_code+2992>, 0x55555585698c <exec_byte_code+3015>, 0x555555856a70 <exec_byte_code+3243>, 0x555555856a72 <exec_byte_code+3245>, 0x555555856a74 <exec_byte_code+3247>, 0x555555856a76 <exec_byte_code+3249>, 0x555555856a78 <exec_byte_code+3251>, 0x555555856a78 <exec_byte_code+3251>, 0x555555856a2a <exec_byte_code+3173>, 0x555555856a41 <exec_byte_code+3196>, 0x555555856b22 <exec_byte_code+3421>, 0x555555856b24 <exec_byte_code+3423>, 0x555555856b26 <exec_byte_code+3425>, 0x555555856b28 <exec_byte_code+3427>, 0x555555856b2a <exec_byte_code+3429>, 0x555555856b2a <exec_byte_code+3429>, 0x555555856adc <exec_byte_code+3351>, 0x555555856af3 <exec_byte_code+3374>, 0x55555585738a <exec_byte_code+5573>, 0x55555585726d <exec_byte_code+5288>, 0x555555857264 <exec_byte_code+5279>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x5555558575c4 <exec_byte_code+6143>, 0x5555558576da <exec_byte_code+6421>, 0x555555857737 <exec_byte_code+6514>, 0x555555857797 <exec_byte_code+6610>, 0x5555558577f9 <exec_byte_code+6708>, 0x5555558565e2 <exec_byte_code+2077>, 0x55555585665d <exec_byte_code+2200>, 0x555555857872 <exec_byte_code+6829>, 0x55555585651f <exec_byte_code+1882>, 0x5555558566c5 <exec_byte_code+2304>, 0x5555558578da <exec_byte_code+6933>, 0x555555857942 <exec_byte_code+7037>, 0x55555585798a <exec_byte_code+7109>, 0x5555558579f2 <exec_byte_code+7213>, 0x555555857a58 <exec_byte_code+7315>, 0x555555857b3e <exec_byte_code+7545>, 0x555555857b86 <exec_byte_code+7617>, 0x555555857bee <exec_byte_code+7721>, 0x555555857c73 <exec_byte_code+7854>, 0x555555857cbb <exec_byte_code+7926>, 0x555555857d03 <exec_byte_code+7998>, 0x555555857d6b <exec_byte_code+8102>, 0x555555857dd3 <exec_byte_code+8206>, 0x555555857e3b <exec_byte_code+8310>, 0x555555857ec0 <exec_byte_code+8443>, 0x555555857f0f <exec_byte_code+8522>, 0x555555857f5e <exec_byte_code+8601>, 0x555555858025 <exec_byte_code+8800>, 0x55555585811e <exec_byte_code+9049>, 0x555555858217 <exec_byte_code+9298>, 0x555555858284 <exec_byte_code+9407>, 0x5555558582f1 <exec_byte_code+9516>, 0x55555585835e <exec_byte_code+9625>, 0x5555558583cb <exec_byte_code+9734>, 0x555555858438 <exec_byte_code+9843>, 0x555555858487 <exec_byte_code+9922>, 0x555555858581 <exec_byte_code+10172>, 0x5555558585d0 <exec_byte_code+10251>, 0x55555585861f <exec_byte_code+10330>, 0x55555585866e <exec_byte_code+10409>, 0x555555858774 <exec_byte_code+10671>, 0x5555558570e4 <exec_byte_code+4895>, 0x5555558587cf <exec_byte_code+10762>, 0x555555858817 <exec_byte_code+10834>, 0x5555558588d9 <exec_byte_code+11028>, 0x555555858942 <exec_byte_code+11133>, 0x55555585899d <exec_byte_code+11224>, 0x5555558589e5 <exec_byte_code+11296>, 0x555555858a28 <exec_byte_code+11363>, 0x555555858a6b <exec_byte_code+11430>, 0x555555858ab6 <exec_byte_code+11505>, 0x555555859938 <exec_byte_code+15219>, 0x555555858b0e <exec_byte_code+11593>, 0x555555858b51 <exec_byte_code+11660>, 0x555555858b94 <exec_byte_code+11727>, 0x555555858bd7 <exec_byte_code+11794>, 0x555555858c1a <exec_byte_code+11861>, 0x555555858c5d <exec_byte_code+11928>, 0x5555558570e4 <exec_byte_code+4895>, 0x555555859938 <exec_byte_code+15219>, 0x555555858ca5 <exec_byte_code+12000>, 0x555555858cf7 <exec_byte_code+12082>, 0x555555858d3f <exec_byte_code+12154>, 0x555555858d87 <exec_byte_code+12226>, 0x555555858def <exec_byte_code+12330>, 0x555555858e57 <exec_byte_code+12434>, 0x555555858e9f <exec_byte_code+12506>, 0x555555858f5c <exec_byte_code+12695>, 0x555555858fc4 <exec_byte_code+12799>, 0x55555585902c <exec_byte_code+12903>, 0x555555859094 <exec_byte_code+13007>, 0x5555558590d7 <exec_byte_code+13074>, 0x555555859938 <exec_byte_code+15219>, 0x55555585702a <exec_byte_code+4709>, 0x555555856bd4 <exec_byte_code+3599>, 0x55555585648d <exec_byte_code+1736>, 0x555555856c85 <exec_byte_code+3776>, 0x555555856d09 <exec_byte_code+3908>, 0x555555856d8a <exec_byte_code+4037>, 0x555555856fde <exec_byte_code+4633>, 0x555555856ff3 <exec_byte_code+4654>, 0x555555856922 <exec_byte_code+2909>, 0x5555558570ad <exec_byte_code+4840>, 0x55555585711b <exec_byte_code+4950>, 0x5555558571ac <exec_byte_code+5095>, 0x5555558571f5 <exec_byte_code+5168>, 0x5555558573d6 <exec_byte_code+5649>, 0x555555857453 <exec_byte_code+5774>, 0x5555558574d8 <exec_byte_code+5907>, 0x55555585753e <exec_byte_code+6009>, 0x555555856b86 <exec_byte_code+3521>, 0x55555585911f <exec_byte_code+13146>, 0x5555558591a4 <exec_byte_code+13279>, 0x5555558591ec <exec_byte_code+13351>, 0x555555859234 <exec_byte_code+13423>, 0x55555585927c <exec_byte_code+13495>, 0x5555558592c4 <exec_byte_code+13567>, 0x55555585932c <exec_byte_code+13671>, 0x555555859394 <exec_byte_code+13775>, 0x5555558593fc <exec_byte_code+13879>, 0x555555859464 <exec_byte_code+13983>, 0x5555558595ad <exec_byte_code+14312>, 0x555555859615 <exec_byte_code+14416>, 0x55555585967d <exec_byte_code+14520>, 0x5555558596c5 <exec_byte_code+14592>, 0x55555585972d <exec_byte_code+14696>, 0x555555859795 <exec_byte_code+14800>, 0x5555558597dd <exec_byte_code+14872>, 0x555555859825 <exec_byte_code+14944>, 0x5555558586bd <exec_byte_code+10488>, 0x55555585870c <exec_byte_code+10567>, 0x555555859874 <exec_byte_code+15023>, 0x5555558598d6 <exec_byte_code+15121>, 0x555555859938 <exec_byte_code+15219>, 0x555555856e0b <exec_byte_code+4166>, 0x555555856e28 <exec_byte_code+4195>, 0x555555856e97 <exec_byte_code+4306>, 0x555555856f06 <exec_byte_code+4417>, 0x555555856f72 <exec_byte_code+4525>, 0x555555857ac6 <exec_byte_code+7425>, 0x555555857fad <exec_byte_code+8680>, 0x555555858861 <exec_byte_code+10908>, 0x555555859acf <exec_byte_code+15626>, 0x555555859b44 <exec_byte_code+15743>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15893>, 0x555555859c61 <exec_byte_code+16028>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859daf <exec_byte_code+16362> <repeats 64 times>}
        const_length = 9
        bytestr_length = 40
        vectorp = 0x5555576e7d18
        quitcounter = 1 '\001'
        stack_items = 6
        sa_avail = 16296
        sa_count = 10
        alloc = 0x7fffffffccd0
        stack_base = 0x7fffffffccd0
        top = 0x7fffffffcce0
        stack_lim = 0x7fffffffcd00
        bytestr_data = 0x7fffffffcd00 "\300\301!\210p\211\211\205\026"
        pc = 0x7fffffffcd1e "\210\305 \210\210\306\307\310\"\207\242^\205UUU"
        count = 10
        result = XIL(0xe0d0)
#7  0x00005555557fdbcb in fetch_and_exec_byte_code (fun=XIL(0x5555576e7d65), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffd390) at ../../master/src/eval.c:3036
#8  0x00005555557fe051 in funcall_lambda (fun=XIL(0x5555576e7d65), nargs=0, arg_vector=0x7fffffffd390) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffd140)
        syms_left = make_fixnum(0)
        next = XIL(0x555555e62080)
        lexenv = XIL(0x1800000000)
        count = 10
        i = 93824994985307
        optional = false
        rest = false
#9  0x00005555557fd424 in Ffuncall (nargs=1, args=0x7fffffffd388) at ../../master/src/eval.c:2916
        fun = XIL(0x5555576e7d65)
        original_fun = XIL(0x18856b0)
        funcar = XIL(0xffffd1e0)
        numargs = 0
        val = XIL(0)
        count = 9
#10 0x00005555557f1518 in Ffuncall_interactively (nargs=1, args=0x7fffffffd388) at ../../master/src/callint.c:260
        speccount = 8
#11 0x00005555557fd809 in funcall_subr (subr=0x555555ddeca0 <Sfuncall_interactively>, numargs=1, args=0x7fffffffd388) at ../../master/src/eval.c:2967
#12 0x00005555557fd3e0 in Ffuncall (nargs=2, args=0x7fffffffd380) at ../../master/src/eval.c:2914
        fun = XIL(0x555555ddeca5)
        original_fun = XIL(0x70b0)
        funcar = XIL(0x7fffffffd2b0)
        numargs = 1
        val = XIL(0)
        count = 7
#13 0x00005555557fc0c9 in Fapply (nargs=3, args=0x7fffffffd380) at ../../master/src/eval.c:2497
        i = 2582717749968
        funcall_nargs = 25712400
        funcall_args = 0x0
        spread_arg = XIL(0)
        fun = XIL(0x70b0)
        sa_avail = 16384
        sa_count = 7
        numargs = 0
        retval = XIL(0x5555557f0258)
#14 0x00005555557f198d in Fcall_interactively (function=XIL(0x18856b0), record_flag=XIL(0), keys=XIL(0x5555582113c5)) at ../../master/src/callint.c:353
        funval = XIL(0x5555576e7d65)
        events = 1433
        input = XIL(0)
        speccount = 6
        arg_from_tty = false
        key_count = 1
        record_then_fail = false
        save_this_command = XIL(0x18856b0)
        save_this_original_command = XIL(0x18856b0)
        save_real_this_command = XIL(0x18856b0)
        save_last_command = XIL(0x1885710)
        prefix_arg = XIL(0)
        enable = XIL(0)
        up_event = XIL(0)
        form = XIL(0x555558b00b03)
        specs = XIL(0)
        sa_avail = 93825001726080
        sa_count = 93824995577276
        string_len = 93824993913254
        string = 0x5555576e7d65 ""
        string_end = 0x7fffffffd4e0 ""
        next_event = 93824994845356
        nargs = 0
        args = 0x0
        visargs = 0x0
        varies = 0x555555e62080 <lispsym> "\230\001"
        tem = 0x7fffffffd570 "e}nWUU"
        val = XIL(0)
#15 0x00005555557fd972 in funcall_subr (subr=0x555555ddece0 <Scall_interactively>, numargs=3, args=0x7fffffffd720) at ../../master/src/eval.c:2992
        internal_argbuf = {XIL(0x7fffffffd630), XIL(0x1000000000), XIL(0x555555ddece0), XIL(0x7fffffffd638), XIL(0x5555557f455b), make_fixnum(17538469896), XIL(0x555555ddece5), XIL(0x7fffffffd650)}
        internal_args = 0x7fffffffd720
#16 0x00005555557fd3e0 in Ffuncall (nargs=4, args=0x7fffffffd718) at ../../master/src/eval.c:2914
        fun = XIL(0x555555ddece5)
        original_fun = XIL(0x2aaa9c71a1d0)
        funcar = XIL(0x7fffffffd6b0)
        numargs = 3
        val = XIL(0x7fffffffd6d0)
        count = 5
#17 0x0000555555856aa3 in exec_byte_code (bytestr=XIL(0x7ffff26110fc), vector=XIL(0x7ffff2610d65), maxdepth=make_fixnum(13), args_template=make_fixnum(1025), nargs=1, args=0x7fffffffdc90) at ../../master/src/bytecode.c:632
        op = 3
        type = CATCHER
        targets = {0x555555859938 <exec_byte_code+15219>, 0x55555585995d <exec_byte_code+15256>, 0x55555585995f <exec_byte_code+15258>, 0x555555859961 <exec_byte_code+15260>, 0x555555859963 <exec_byte_code+15262>, 0x555555859963 <exec_byte_code+15262>, 0x5555558599c8 <exec_byte_code+15363>, 0x555555859a3c <exec_byte_code+15479>, 0x555555856363 <exec_byte_code+1438>, 0x555555856365 <exec_byte_code+1440>, 0x555555856367 <exec_byte_code+1442>, 0x555555856369 <exec_byte_code+1444>, 0x55555585636b <exec_byte_code+1446>, 0x55555585636b <exec_byte_code+1446>, 0x555555856371 <exec_byte_code+1452>, 0x555555856332 <exec_byte_code+1389>, 0x555555856789 <exec_byte_code+2500>, 0x55555585678b <exec_byte_code+2502>, 0x55555585678d <exec_byte_code+2504>, 0x55555585678f <exec_byte_code+2506>, 0x555555856791 <exec_byte_code+2508>, 0x555555856791 <exec_byte_code+2508>, 0x5555558567c6 <exec_byte_code+2561>, 0x555555856797 <exec_byte_code+2514>, 0x5555558569bb <exec_byte_code+3062>, 0x5555558569bd <exec_byte_code+3064>, 0x5555558569bf <exec_byte_code+3066>, 0x5555558569c1 <exec_byte_code+3068>, 0x5555558569c3 <exec_byte_code+3070>, 0x5555558569c3 <exec_byte_code+3070>, 0x555555856975 <exec_byte_code+2992>, 0x55555585698c <exec_byte_code+3015>, 0x555555856a70 <exec_byte_code+3243>, 0x555555856a72 <exec_byte_code+3245>, 0x555555856a74 <exec_byte_code+3247>, 0x555555856a76 <exec_byte_code+3249>, 0x555555856a78 <exec_byte_code+3251>, 0x555555856a78 <exec_byte_code+3251>, 0x555555856a2a <exec_byte_code+3173>, 0x555555856a41 <exec_byte_code+3196>, 0x555555856b22 <exec_byte_code+3421>, 0x555555856b24 <exec_byte_code+3423>, 0x555555856b26 <exec_byte_code+3425>, 0x555555856b28 <exec_byte_code+3427>, 0x555555856b2a <exec_byte_code+3429>, 0x555555856b2a <exec_byte_code+3429>, 0x555555856adc <exec_byte_code+3351>, 0x555555856af3 <exec_byte_code+3374>, 0x55555585738a <exec_byte_code+5573>, 0x55555585726d <exec_byte_code+5288>, 0x555555857264 <exec_byte_code+5279>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x5555558575c4 <exec_byte_code+6143>, 0x5555558576da <exec_byte_code+6421>, 0x555555857737 <exec_byte_code+6514>, 0x555555857797 <exec_byte_code+6610>, 0x5555558577f9 <exec_byte_code+6708>, 0x5555558565e2 <exec_byte_code+2077>, 0x55555585665d <exec_byte_code+2200>, 0x555555857872 <exec_byte_code+6829>, 0x55555585651f <exec_byte_code+1882>, 0x5555558566c5 <exec_byte_code+2304>, 0x5555558578da <exec_byte_code+6933>, 0x555555857942 <exec_byte_code+7037>, 0x55555585798a <exec_byte_code+7109>, 0x5555558579f2 <exec_byte_code+7213>, 0x555555857a58 <exec_byte_code+7315>, 0x555555857b3e <exec_byte_code+7545>, 0x555555857b86 <exec_byte_code+7617>, 0x555555857bee <exec_byte_code+7721>, 0x555555857c73 <exec_byte_code+7854>, 0x555555857cbb <exec_byte_code+7926>, 0x555555857d03 <exec_byte_code+7998>, 0x555555857d6b <exec_byte_code+8102>, 0x555555857dd3 <exec_byte_code+8206>, 0x555555857e3b <exec_byte_code+8310>, 0x555555857ec0 <exec_byte_code+8443>, 0x555555857f0f <exec_byte_code+8522>, 0x555555857f5e <exec_byte_code+8601>, 0x555555858025 <exec_byte_code+8800>, 0x55555585811e <exec_byte_code+9049>, 0x555555858217 <exec_byte_code+9298>, 0x555555858284 <exec_byte_code+9407>, 0x5555558582f1 <exec_byte_code+9516>, 0x55555585835e <exec_byte_code+9625>, 0x5555558583cb <exec_byte_code+9734>, 0x555555858438 <exec_byte_code+9843>, 0x555555858487 <exec_byte_code+9922>, 0x555555858581 <exec_byte_code+10172>, 0x5555558585d0 <exec_byte_code+10251>, 0x55555585861f <exec_byte_code+10330>, 0x55555585866e <exec_byte_code+10409>, 0x555555858774 <exec_byte_code+10671>, 0x5555558570e4 <exec_byte_code+4895>, 0x5555558587cf <exec_byte_code+10762>, 0x555555858817 <exec_byte_code+10834>, 0x5555558588d9 <exec_byte_code+11028>, 0x555555858942 <exec_byte_code+11133>, 0x55555585899d <exec_byte_code+11224>, 0x5555558589e5 <exec_byte_code+11296>, 0x555555858a28 <exec_byte_code+11363>, 0x555555858a6b <exec_byte_code+11430>, 0x555555858ab6 <exec_byte_code+11505>, 0x555555859938 <exec_byte_code+15219>, 0x555555858b0e <exec_byte_code+11593>, 0x555555858b51 <exec_byte_code+11660>, 0x555555858b94 <exec_byte_code+11727>, 0x555555858bd7 <exec_byte_code+11794>, 0x555555858c1a <exec_byte_code+11861>, 0x555555858c5d <exec_byte_code+11928>, 0x5555558570e4 <exec_byte_code+4895>, 0x555555859938 <exec_byte_code+15219>, 0x555555858ca5 <exec_byte_code+12000>, 0x555555858cf7 <exec_byte_code+12082>, 0x555555858d3f <exec_byte_code+12154>, 0x555555858d87 <exec_byte_code+12226>, 0x555555858def <exec_byte_code+12330>, 0x555555858e57 <exec_byte_code+12434>, 0x555555858e9f <exec_byte_code+12506>, 0x555555858f5c <exec_byte_code+12695>, 0x555555858fc4 <exec_byte_code+12799>, 0x55555585902c <exec_byte_code+12903>, 0x555555859094 <exec_byte_code+13007>, 0x5555558590d7 <exec_byte_code+13074>, 0x555555859938 <exec_byte_code+15219>, 0x55555585702a <exec_byte_code+4709>, 0x555555856bd4 <exec_byte_code+3599>, 0x55555585648d <exec_byte_code+1736>, 0x555555856c85 <exec_byte_code+3776>, 0x555555856d09 <exec_byte_code+3908>, 0x555555856d8a <exec_byte_code+4037>, 0x555555856fde <exec_byte_code+4633>, 0x555555856ff3 <exec_byte_code+4654>, 0x555555856922 <exec_byte_code+2909>, 0x5555558570ad <exec_byte_code+4840>, 0x55555585711b <exec_byte_code+4950>, 0x5555558571ac <exec_byte_code+5095>, 0x5555558571f5 <exec_byte_code+5168>, 0x5555558573d6 <exec_byte_code+5649>, 0x555555857453 <exec_byte_code+5774>, 0x5555558574d8 <exec_byte_code+5907>, 0x55555585753e <exec_byte_code+6009>, 0x555555856b86 <exec_byte_code+3521>, 0x55555585911f <exec_byte_code+13146>, 0x5555558591a4 <exec_byte_code+13279>, 0x5555558591ec <exec_byte_code+13351>, 0x555555859234 <exec_byte_code+13423>, 0x55555585927c <exec_byte_code+13495>, 0x5555558592c4 <exec_byte_code+13567>, 0x55555585932c <exec_byte_code+13671>, 0x555555859394 <exec_byte_code+13775>, 0x5555558593fc <exec_byte_code+13879>, 0x555555859464 <exec_byte_code+13983>, 0x5555558595ad <exec_byte_code+14312>, 0x555555859615 <exec_byte_code+14416>, 0x55555585967d <exec_byte_code+14520>, 0x5555558596c5 <exec_byte_code+14592>, 0x55555585972d <exec_byte_code+14696>, 0x555555859795 <exec_byte_code+14800>, 0x5555558597dd <exec_byte_code+14872>, 0x555555859825 <exec_byte_code+14944>, 0x5555558586bd <exec_byte_code+10488>, 0x55555585870c <exec_byte_code+10567>, 0x555555859874 <exec_byte_code+15023>, 0x5555558598d6 <exec_byte_code+15121>, 0x555555859938 <exec_byte_code+15219>, 0x555555856e0b <exec_byte_code+4166>, 0x555555856e28 <exec_byte_code+4195>, 0x555555856e97 <exec_byte_code+4306>, 0x555555856f06 <exec_byte_code+4417>, 0x555555856f72 <exec_byte_code+4525>, 0x555555857ac6 <exec_byte_code+7425>, 0x555555857fad <exec_byte_code+8680>, 0x555555858861 <exec_byte_code+10908>, 0x555555859acf <exec_byte_code+15626>, 0x555555859b44 <exec_byte_code+15743>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15893>, 0x555555859c61 <exec_byte_code+16028>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859938 <exec_byte_code+15219>, 0x555555859daf <exec_byte_code+16362> <repeats 64 times>}
        const_length = 24
        bytestr_length = 138
        vectorp = 0x7ffff2610d68
        quitcounter = 1 '\001'
        stack_items = 14
        sa_avail = 16134
        sa_count = 5
        alloc = 0x7fffffffd6e0
        stack_base = 0x7fffffffd6e0
        top = 0x7fffffffd718
        stack_lim = 0x7fffffffd750
        bytestr_data = 0x7fffffffd750 "\304\020\211?\205\023"
        pc = 0x7fffffffd7b2 "\006\006\071\203\211"
        count = 5
        result = XIL(0)
#18 0x00005555557fdbcb in fetch_and_exec_byte_code (fun=XIL(0x7ffff2610d35), syms_left=make_fixnum(1025), nargs=1, args=0x7fffffffdc88) at ../../master/src/eval.c:3036
#19 0x00005555557fe051 in funcall_lambda (fun=XIL(0x7ffff2610d35), nargs=1, arg_vector=0x7fffffffdc88) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffdc00)
        syms_left = make_fixnum(1025)
        next = XIL(0x555555e62080)
        lexenv = XIL(0x1800000000)
        count = 5
        i = 93824994985307
        optional = false
        rest = false
#20 0x00005555557fd424 in Ffuncall (nargs=2, args=0x7fffffffdc80) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff2610d35)
        original_fun = XIL(0x4470)
        funcar = XIL(0)
        numargs = 1
        val = XIL(0x7fffffffdca8)
        count = 4
#21 0x00005555557fcbee in call1 (fn=XIL(0x4470), arg1=XIL(0x18856b0)) at ../../master/src/eval.c:2774
#22 0x0000555555721564 in command_loop_1 () at ../../master/src/keyboard.c:1466
        scount = 3
        cmd = XIL(0x18856b0)
        keybuf = {make_fixnum(113), XIL(0x7ffff2c1d0cd), XIL(0), XIL(0), XIL(0x7fffffffdd70), XIL(0x5555557fcc78), XIL(0), XIL(0x7ffff25734c4), XIL(0x555557e28a53), XIL(0), XIL(0x555555e62080), XIL(0), XIL(0x7fffffffdd50), XIL(0x55555571d378), XIL(0), XIL(0), XIL(0x555555e62080), XIL(0), XIL(0x7fffffffdd80), make_fixnum(23456248745992), XIL(0), XIL(0x555555e62080), XIL(0), XIL(0), XIL(0x7fffffffdda0), make_fixnum(23456248746013), make_fixnum(2), make_fixnum(0), XIL(0x7fffffffdde0), XIL(0x5555557f96dc)}
        i = 1
        prev_modiff = 60
        prev_buffer = 0x5555578531b0
        already_adjusted = false
#23 0x00005555557f919c in internal_condition_case (bfun=0x555555720d0e <command_loop_1>, handlers=XIL(0x90), hfun=0x555555720331 <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555560c2983)
        c = 0x555555f5d3e0
#24 0x00005555557208fe in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#25 0x00005555557f85ac in internal_catch (tag=XIL(0xd9e0), func=0x5555557208d1 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555f46710
#26 0x000055555572089d in command_loop () at ../../master/src/keyboard.c:1073
#27 0x000055555571fe1a in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf50)
#28 0x0000555555720011 in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#29 0x000055555571bef6 in main (argc=2, argv=0x7fffffffe1b8) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"kill-buffer" (0xffffcce8)
"gnus-server-exit" (0xffffd390)
"funcall-interactively" (0xffffd388)
"call-interactively" (0xffffd720)
"command-execute" (0xffffdc88)


(gdb) p replace_buffer_in_windows_safely_count 
$1 = 0
(gdb) frame 2
#2  0x000055555564d93a in replace_buffer_in_windows_safely (
    buffer=XIL(0x5555578531b5)) at ../../master/src/window.c:3450
3450      eassert (count == replace_buffer_in_windows_safely_count);
(gdb) p buffer
$2 = XIL(0x5555578531b5)
(gdb) xtype
Lisp_Vectorlike
PVEC_BUFFER
(gdb) xbuffer
$3 = (struct buffer *) 0x5555578531b0
0x5555587d0e90 "*Server*"


-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-01 13:54                                                                                             ` Michael Welsh Duggan
@ 2021-04-01 14:56                                                                                               ` martin rudalics
  2021-04-01 18:30                                                                                                 ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-01 14:56 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 744 bytes --]

 > Okay.  I got a nice trigger from this.  I've added some extra
 > debugging info after the backtrace.

Thanks.  Nice but not amusing.  Things like that never can happen.  So
presumably *Server* is the buffer you want to get rid off.  I can only
add another diff based on that assumption.  Please put a breakpoint on
that non-sensical

		  best_window = Qt;

line 3050 in window.c.  When it triggers please use "s" to painfully
step through the entire set_window_buffer and other_buffer_safely below
and tell me whether you find something fishy: Is other_buffer_safely
called at all and what is the name of the "buf" it returns?  Does
set_window_buffer for some reason refuse to wset_buffer to the one
returned by other_buffer_safely?

martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 7355 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..70b37e61a2 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1951,6 +1951,9 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
      This gets rid of them for certain.  */
   reset_buffer_local_variables (b, 1);
 
+  if (!b->base_buffer)
+    eassert (b->window_count == 0);
+
   bset_name (b, Qnil);
 
   block_input ();
@@ -1991,6 +1994,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2156,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.  */
diff --git a/src/window.c b/src/window.c
index eb16e2a433..aaf75457b4 100644
--- a/src/window.c
+++ b/src/window.c
@@ -307,7 +307,11 @@ wset_buffer (struct window *w, Lisp_Object val)
   if (BUFFERP (val))
     /* Make sure that we do not assign the buffer
        to an internal window.  */
-    eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    {
+      eassert (BUFFER_LIVE_P (XBUFFER (val)));
+      eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    }
+
   w->contents = val;
   adjust_window_count (w, 1);
 }
@@ -315,6 +319,7 @@ wset_buffer (struct window *w, Lisp_Object val)
 static void
 wset_old_buffer (struct window *w, Lisp_Object val)
 {
+  eassert (BUFFER_LIVE_P (XBUFFER (val)));
   w->old_buffer = val;
 }
 
@@ -594,6 +599,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -2950,6 +2957,8 @@ DEFUN ("window-list-1", Fwindow_list_1, Swindow_list_1, 0, 3, 0,
   CHECK_ALL_WINDOWS                 /* Arg is ignored */
 };
 
+static int replace_buffer_in_windows_safely_count;
+
 static Lisp_Object
 window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 	     Lisp_Object frames)
@@ -3036,6 +3045,10 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 	       is live, and show another buffer in case it isn't.  */
 	    if (EQ (w->contents, obj))
 	      {
+		if (!NILP (Fstring_equal (XBUFFER (w->contents)->name_,
+					  build_string ("*Server*"))))
+		  best_window = Qt;
+
 		/* Undedicate WINDOW.  */
 		wset_dedicated (w, Qnil);
 		/* Make WINDOW show the buffer returned by
@@ -3048,6 +3061,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 		if (EQ (window, selected_window)
 		    && XBUFFER (w->contents) == current_buffer)
 		  Fset_buffer (w->contents);
+
+		replace_buffer_in_windows_safely_count += 1;
 	      }
 	    break;
 
@@ -3411,6 +3426,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3419,6 +3436,10 @@ replace_buffer_in_windows (Lisp_Object buffer)
 void
 replace_buffer_in_windows_safely (Lisp_Object buffer)
 {
+  int count = buffer_window_count (XBUFFER (buffer));
+
+  replace_buffer_in_windows_safely_count = 0;
+
   if (buffer_window_count (XBUFFER (buffer)))
     {
       Lisp_Object tail, frame;
@@ -3429,6 +3450,8 @@ replace_buffer_in_windows_safely (Lisp_Object buffer)
       FOR_EACH_FRAME (tail, frame)
 	window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
     }
+
+  eassert (count == replace_buffer_in_windows_safely_count);
 }
 \f
 /* The following three routines are needed for running a window's
@@ -3960,6 +3983,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4079,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -5174,6 +5202,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
@@ -7233,6 +7263,9 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
   minibuf_selected_window = data->minibuf_selected_window;
 
   SAFE_FREE ();
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return FRAME_LIVE_P (f) ? Qt : Qnil;
 }
 
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-01 14:56                                                                                               ` martin rudalics
@ 2021-04-01 18:30                                                                                                 ` Michael Welsh Duggan
  2021-04-01 19:31                                                                                                   ` Michael Welsh Duggan
  2021-04-02  6:48                                                                                                   ` martin rudalics
  0 siblings, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-01 18:30 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > Okay.  I got a nice trigger from this.  I've added some extra
>  > debugging info after the backtrace.
>
> Thanks.  Nice but not amusing.  Things like that never can happen.  So
> presumably *Server* is the buffer you want to get rid off.  I can only
> add another diff based on that assumption.  Please put a breakpoint on
> that non-sensical
>
> 		  best_window = Qt;
>
> line 3050 in window.c.  When it triggers please use "s" to painfully
> step through the entire set_window_buffer and other_buffer_safely below
> and tell me whether you find something fishy: Is other_buffer_safely
> called at all and what is the name of the "buf" it returns?  Does
> set_window_buffer for some reason refuse to wset_buffer to the one
> returned by other_buffer_safely?

The answer, which I sort of suspected, is that it never hit that
breakpoint at all before the assertion fires.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-01 18:30                                                                                                 ` Michael Welsh Duggan
@ 2021-04-01 19:31                                                                                                   ` Michael Welsh Duggan
  2021-04-02  6:48                                                                                                   ` martin rudalics
  1 sibling, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-01 19:31 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Michael Welsh Duggan <mwd@cert.org> writes:

> martin rudalics <rudalics@gmx.at> writes:
>
>>  > Okay.  I got a nice trigger from this.  I've added some extra
>>  > debugging info after the backtrace.
>>
>> Thanks.  Nice but not amusing.  Things like that never can happen.  So
>> presumably *Server* is the buffer you want to get rid off.  I can only
>> add another diff based on that assumption.  Please put a breakpoint on
>> that non-sensical
>>
>> 		  best_window = Qt;
>>
>> line 3050 in window.c.  When it triggers please use "s" to painfully
>> step through the entire set_window_buffer and other_buffer_safely below
>> and tell me whether you find something fishy: Is other_buffer_safely
>> called at all and what is the name of the "buf" it returns?  Does
>> set_window_buffer for some reason refuse to wset_buffer to the one
>> returned by other_buffer_safely?
>
> The answer, which I sort of suspected, is that it never hit that
> breakpoint at all before the assertion fires.

I am now skeptical about that debug session and will try to recreate
again in a fresh session.  (When I did a "list window.c:3050" in gdb I
did not get the expected listing.)

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-01 18:30                                                                                                 ` Michael Welsh Duggan
  2021-04-01 19:31                                                                                                   ` Michael Welsh Duggan
@ 2021-04-02  6:48                                                                                                   ` martin rudalics
  2021-04-05 18:15                                                                                                     ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-02  6:48 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 1107 bytes --]

 > The answer, which I sort of suspected, is that it never hit that
 > breakpoint at all before the assertion fires.

You're right.  In

+		if (!NILP (Fstring_equal (XBUFFER (w->contents)->name_,
+					  build_string ("*Server*"))))
+		  best_window = Qt;
+
  		/* Undedicate WINDOW.  */
  		wset_dedicated (w, Qnil);
  		/* Make WINDOW show the buffer returned by
@@ -3048,6 +3061,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
  		if (EQ (window, selected_window)
  		    && XBUFFER (w->contents) == current_buffer)
  		  Fset_buffer (w->contents);
+
+		replace_buffer_in_windows_safely_count += 1;

replace_buffer_in_windows_safely_count is incremented regardless of
whether W's buffer is *Server* or not.  In either case the assertion
would not fail.  So once we are here everything is all right and the bug
must be that we do not get here.  I attach the next patch.  Please put a
breakpoint at the

       replace_buffer_in_windows_safely_count = 0;

and try to step through the rest of this function with GDB.  And if you
don't hit it, the detection logic went wrong ...

martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 7497 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..70b37e61a2 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1951,6 +1951,9 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
      This gets rid of them for certain.  */
   reset_buffer_local_variables (b, 1);
 
+  if (!b->base_buffer)
+    eassert (b->window_count == 0);
+
   bset_name (b, Qnil);
 
   block_input ();
@@ -1991,6 +1994,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2156,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.  */
diff --git a/src/window.c b/src/window.c
index eb16e2a433..aa69c66be6 100644
--- a/src/window.c
+++ b/src/window.c
@@ -307,7 +307,11 @@ wset_buffer (struct window *w, Lisp_Object val)
   if (BUFFERP (val))
     /* Make sure that we do not assign the buffer
        to an internal window.  */
-    eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    {
+      eassert (BUFFER_LIVE_P (XBUFFER (val)));
+      eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    }
+
   w->contents = val;
   adjust_window_count (w, 1);
 }
@@ -315,6 +319,7 @@ wset_buffer (struct window *w, Lisp_Object val)
 static void
 wset_old_buffer (struct window *w, Lisp_Object val)
 {
+  eassert (BUFFER_LIVE_P (XBUFFER (val)));
   w->old_buffer = val;
 }
 
@@ -594,6 +599,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -2950,6 +2957,8 @@ DEFUN ("window-list-1", Fwindow_list_1, Swindow_list_1, 0, 3, 0,
   CHECK_ALL_WINDOWS                 /* Arg is ignored */
 };
 
+static int replace_buffer_in_windows_safely_count;
+
 static Lisp_Object
 window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 	     Lisp_Object frames)
@@ -3048,6 +3057,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 		if (EQ (window, selected_window)
 		    && XBUFFER (w->contents) == current_buffer)
 		  Fset_buffer (w->contents);
+
+		replace_buffer_in_windows_safely_count += 1;
 	      }
 	    break;
 
@@ -3411,6 +3422,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3419,7 +3432,28 @@ replace_buffer_in_windows (Lisp_Object buffer)
 void
 replace_buffer_in_windows_safely (Lisp_Object buffer)
 {
-  if (buffer_window_count (XBUFFER (buffer)))
+  if (!NILP (Fstring_equal (XBUFFER (buffer)->name_,
+			    build_string ("*Server*"))))
+    {
+      int count = buffer_window_count (XBUFFER (buffer));
+
+      replace_buffer_in_windows_safely_count = 0;
+
+
+      if (buffer_window_count (XBUFFER (buffer)))
+	{
+	  Lisp_Object tail, frame;
+
+	  /* A single call to window_loop won't do the job because it only
+	     considers frames on the current keyboard.  So loop manually over
+	     frames, and handle each one.  */
+	  FOR_EACH_FRAME (tail, frame)
+	    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
+	}
+
+      eassert (count == replace_buffer_in_windows_safely_count);
+    }
+  else if (buffer_window_count (XBUFFER (buffer)))
     {
       Lisp_Object tail, frame;
 
@@ -3429,6 +3463,7 @@ replace_buffer_in_windows_safely (Lisp_Object buffer)
       FOR_EACH_FRAME (tail, frame)
 	window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
     }
+
 }
 \f
 /* The following three routines are needed for running a window's
@@ -3960,6 +3995,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4091,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -5174,6 +5214,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
@@ -7233,6 +7275,9 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
   minibuf_selected_window = data->minibuf_selected_window;
 
   SAFE_FREE ();
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return FRAME_LIVE_P (f) ? Qt : Qnil;
 }
 
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-02  6:48                                                                                                   ` martin rudalics
@ 2021-04-05 18:15                                                                                                     ` Michael Welsh Duggan
  2021-04-05 18:45                                                                                                       ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-05 18:15 UTC (permalink / raw)
  To: martin rudalics
  Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

martin rudalics <rudalics@gmx.at> writes:

>> The answer, which I sort of suspected, is that it never hit that
>> breakpoint at all before the assertion fires.
>
> You're right.  In
>
> +		if (!NILP (Fstring_equal (XBUFFER (w->contents)->name_,
> +					  build_string ("*Server*"))))
> +		  best_window = Qt;
> +
>  		/* Undedicate WINDOW.  */
>  		wset_dedicated (w, Qnil);
>  		/* Make WINDOW show the buffer returned by
> @@ -3048,6 +3061,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
>  		if (EQ (window, selected_window)
>  		    && XBUFFER (w->contents) == current_buffer)
>  		  Fset_buffer (w->contents);
> +
> +		replace_buffer_in_windows_safely_count += 1;
>
> replace_buffer_in_windows_safely_count is incremented regardless of
> whether W's buffer is *Server* or not.  In either case the assertion
> would not fail.  So once we are here everything is all right and the bug
> must be that we do not get here.  I attach the next patch.  Please put a
> breakpoint at the
>
>       replace_buffer_in_windows_safely_count = 0;
>
> and try to step through the rest of this function with GDB.  And if you
> don't hit it, the detection logic went wrong ...

Finally hit this.  I set logging on and started debugging.
Unfortunately, gdb logging only logs the outputs, not what I typed, so
perusing the output here might be a bit confusing.  Here's what I noted:

buffer_window_count of the *Server* buffer was 1.  There were three
frames that we looped over in the FOR_EACH_FRAME() loop.  Of these, only
the first is interesting.  In this case window_list_1() in window_loop()
returned three windows.  For each window, in the
REPLACE_BUFFER_IN_WINDOWS_SAFELY case branch, EQ (w->contents, obj)
returned false.  As a result, best_window is Qnil at the end, and
replace-buffer_in_windows_safely_count never gets incremented.  For the
other two frames the return value of window_list_1() was Qnil.

I've kept the session up and might be able to use `return' and `jump' in
gdb to re-run through replace_buffer_in_windows_safely() if you want me
to explore more in depth.

#0  replace_buffer_in_windows_safely (buffer=XIL(0x5555573fd885))
    at ../../master/src/window.c:3440
        count = 1
#1  0x0000555555758f71 in Fkill_buffer (buffer_or_name=XIL(0x5555573fd885))
    at ../../master/src/buffer.c:1880
        buffer = XIL(0x5555573fd885)
        b = 0x5555573fd880
        tem = XIL(0)
        m = 0x7fffffffcb70
#2  0x00005555557fda6f in funcall_subr
    (subr=0x555555dd9ce0 <Skill_buffer>, numargs=1, args=0x7fffffffcc98)
    at ../../master/src/eval.c:2987
        internal_argbuf = 
          {XIL(0x7fffffffcbd0), XIL(0x1000000000), XIL(0x555555dd9ce0), XIL(0x7fffffffcbd8), make_fixnum(23456248746412), XIL(0x10557f4179), XIL(0x555555dd9ce5), XIL(0x7fffffffcbf0)}
        internal_args = 0x7fffffffcc98
#3  0x00005555557fd537 in Ffuncall (nargs=2, args=0x7fffffffcc90)
    at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd9ce5)
        original_fun = XIL(0x2aaa9c7147c0)
        funcar = XIL(0x5ffffcc50)
        numargs = 1
        val = XIL(0x7fffffffcc70)
        count = 10
#4  0x0000555555856bfa in exec_byte_code
    (bytestr=XIL(0x555556f49614), vector=XIL(0x555557601b55), maxdepth=make_fixnum(5), args_template=make_fixnum(0), nargs=0, args=0x7fffffffd340)
    at ../../master/src/bytecode.c:632
        op = 1
        type = (CONDITION_CASE | unknown: 0x557d720c)
        targets = 
          {0x555555859a8f <exec_byte_code+15219>, 0x555555859ab4 <exec_byte_code+15256>, 0x555555859ab6 <exec_byte_code+15258>, 0x555555859ab8 <exec_byte_code+15260>, 0x555555859aba <exec_byte_code+15262>, 0x555555859aba <exec_byte_code+15262>, 0x555555859b1f <exec_byte_code+15363>, 0x555555859b93 <exec_byte_code+15479>, 0x5555558564ba <exec_byte_code+1438>, 0x5555558564bc <exec_byte_code+1440>, 0x5555558564be <exec_byte_code+1442>, 0x5555558564c0 <exec_byte_code+1444>, 0x5555558564c2 <exec_byte_code+1446>, 0x5555558564c2 <exec_byte_code+1446>, 0x5555558564c8 <exec_byte_code+1452>, 0x555555856489 <exec_byte_code+1389>, 0x5555558568e0 <exec_byte_code+2500>, 0x5555558568e2 <exec_byte_code+2502>, 0x5555558568e4 <exec_byte_code+2504>, 0x5555558568e6 <exec_byte_code+2506>, 0x5555558568e8 <exec_byte_code+2508>, 0x5555558568e8 <exec_byte_code+2508>, 0x55555585691d <exec_byte_code+2561>, 0x5555558568ee <exec_byte_code+2514>, 0x555555856b12 <exec_byte_code+3062>, 0x555555856b14 <exec_byte_code+3064>, 0x555555856b16 <exec_byte_code+3066>, 0x555555856b18 <exec_byte_code+3068>, 0x555555856b1a <exec_byte_code+3070>, 0x555555856b1a <exec_byte_code+3070>, 0x555555856acc <exec_byte_code+2992>, 0x555555856ae3 <exec_byte_code+3015>, 0x555555856bc7 <exec_byte_code+3243>, 0x555555856bc9 <exec_byte_code+3245>, 0x555555856bcb <exec_byte_code+3247>, 0x555555856bcd <exec_byte_code+3249>, 0x555555856bcf <exec_byte_code+3251>, 0x555555856bcf <exec_byte_code+3251>, 0x555555856b81 <exec_byte_code+3173>, 0x555555856b98 <exec_byte_code+3196>, 0x555555856c79 <exec_byte_code+3421>, 0x555555856c7b <exec_byte_code+3423>, 0x555555856c7d <exec_byte_code+3425>, 0x555555856c7f <exec_byte_code+3427>, 0x555555856c81 <exec_byte_code+3429>, 0x555555856c81 <exec_byte_code+3429>, 0x555555856c33 <exec_byte_code+3351>, 0x555555856c4a <exec_byte_code+3374>, 0x5555558574e1 <exec_byte_code+5573>, 0x5555558573c4 <exec_byte_code+5288>, 0x5555558573bb <exec_byte_code+5279>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x55555585771b <exec_byte_code+6143>, 0x555555857831 <exec_byte_code+6421>, 0x55555585788e <exec_byte_code+6514>, 0x5555558578ee <exec_byte_code+6610>, 0x555555857950 <exec_byte_code+6708>, 0x555555856739 <exec_byte_code+2077>, 0x5555558567b4 <exec_byte_code+2200>, 0x5555558579c9 <exec_byte_code+6829>, 0x555555856676 <exec_byte_code+1882>, 0x55555585681c <exec_byte_code+2304>, 0x555555857a31 <exec_byte_code+6933>, 0x555555857a99 <exec_byte_code+7037>, 0x555555857ae1 <exec_byte_code+7109>, 0x555555857b49 <exec_byte_code+7213>, 0x555555857baf <exec_byte_code+7315>, 0x555555857c95 <exec_byte_code+7545>, 0x555555857cdd <exec_byte_code+7617>, 0x555555857d45 <exec_byte_code+7721>, 0x555555857dca <exec_byte_code+7854>, 0x555555857e12 <exec_byte_code+7926>, 0x555555857e5a <exec_byte_code+7998>, 0x555555857ec2 <exec_byte_code+8102>, 0x555555857f2a <exec_byte_code+8206>, 0x555555857f92 <exec_byte_code+8310>, 0x555555858017 <exec_byte_code+8443>, 0x555555858066 <exec_byte_code+8522>, 0x5555558580b5 <exec_byte_code+8601>, 0x55555585817c <exec_byte_code+8800>, 0x555555858275 <exec_byte_code+9049>, 0x55555585836e <exec_byte_code+9298>, 0x5555558583db <exec_byte_code+9407>, 0x555555858448 <exec_byte_code+9516>, 0x5555558584b5 <exec_byte_code+9625>, 0x555555858522 <exec_byte_code+9734>, 0x55555585858f <exec_byte_code+9843>, 0x5555558585de <exec_byte_code+9922>, 0x5555558586d8 <exec_byte_code+10172>, 0x555555858727 <exec_byte_code+10251>, 0x555555858776 <exec_byte_code+10330>, 0x5555558587c5 <exec_byte_code+10409>, 0x5555558588cb <exec_byte_code+10671>, 0x55555585723b <exec_byte_code+4895>, 0x555555858926 <exec_byte_code+10762>, 0x55555585896e <exec_byte_code+10834>, 0x555555858a30 <exec_byte_code+11028>, 0x555555858a99 <exec_byte_code+11133>, 0x555555858af4 <exec_byte_code+11224>, 0x555555858b3c <exec_byte_code+11296>, 0x555555858b7f <exec_byte_code+11363>, 0x555555858bc2 <exec_byte_code+11430>, 0x555555858c0d <exec_byte_code+11505>, 0x555555859a8f <exec_byte_code+15219>, 0x555555858c65 <exec_byte_code+11593>, 0x555555858ca8 <exec_byte_code+11660>, 0x555555858ceb <exec_byte_code+11727>, 0x555555858d2e <exec_byte_code+11794>, 0x555555858d71 <exec_byte_code+11861>, 0x555555858db4 <exec_byte_code+11928>, 0x55555585723b <exec_byte_code+4895>, 0x555555859a8f <exec_byte_code+15219>, 0x555555858dfc <exec_byte_code+12000>, 0x555555858e4e <exec_byte_code+12082>, 0x555555858e96 <exec_byte_code+12154>, 0x555555858ede <exec_byte_code+12226>, 0x555555858f46 <exec_byte_code+12330>, 0x555555858fae <exec_byte_code+12434>, 0x555555858ff6 <exec_byte_code+12506>, 0x5555558590b3 <exec_byte_code+12695>, 0x55555585911b <exec_byte_code+12799>, 0x555555859183 <exec_byte_code+12903>, 0x5555558591eb <exec_byte_code+13007>, 0x55555585922e <exec_byte_code+13074>, 0x555555859a8f <exec_byte_code+15219>, 0x555555857181 <exec_byte_code+4709>, 0x555555856d2b <exec_byte_code+3599>, 0x5555558565e4 <exec_byte_code+1736>, 0x555555856ddc <exec_byte_code+3776>, 0x555555856e60 <exec_byte_code+3908>, 0x555555856ee1 <exec_byte_code+4037>, 0x555555857135 <exec_byte_code+4633>, 0x55555585714a <exec_byte_code+4654>, 0x555555856a79 <exec_byte_code+2909>, 0x555555857204 <exec_byte_code+4840>, 0x555555857272 <exec_byte_code+4950>, 0x555555857303 <exec_byte_code+5095>, 0x55555585734c <exec_byte_code+5168>, 0x55555585752d <exec_byte_code+5649>, 0x5555558575aa <exec_byte_code+5774>, 0x55555585762f <exec_byte_code+5907>, 0x555555857695 <exec_byte_code+6009>, 0x555555856cdd <exec_byte_code+3521>, 0x555555859276 <exec_byte_code+13146>, 0x5555558592fb <exec_byte_code+13279>, 0x555555859343 <exec_byte_code+13351>, 0x55555585938b <exec_byte_code+13423>, 0x5555558593d3 <exec_byte_code+13495>, 0x55555585941b <exec_byte_code+13567>, 0x555555859483 <exec_byte_code+13671>, 0x5555558594eb <exec_byte_code+13775>, 0x555555859553 <exec_byte_code+13879>, 0x5555558595bb <exec_byte_code+13983>, 0x555555859704 <exec_byte_code+14312>, 0x55555585976c <exec_byte_code+14416>, 0x5555558597d4 <exec_byte_code+14520>, 0x55555585981c <exec_byte_code+14592>, 0x555555859884 <exec_byte_code+14696>, 0x5555558598ec <exec_byte_code+14800>, 0x555555859934 <exec_byte_code+14872>, 0x55555585997c <exec_byte_code+14944>, 0x555555858814 <exec_byte_code+10488>, 0x555555858863 <exec_byte_code+10567>, 0x5555558599cb <exec_byte_code+15023>, 0x555555859a2d <exec_byte_code+15121>, 0x555555859a8f <exec_byte_code+15219>, 0x555555856f62 <exec_byte_code+4166>, 0x555555856f7f <exec_byte_code+4195>, 0x555555856fee <exec_byte_code+4306>, 0x55555585705d <exec_byte_code+4417>, 0x5555558570c9 <exec_byte_code+4525>, 0x555555857c1d <exec_byte_code+7425>, 0x555555858104 <exec_byte_code+8680>, 0x5555558589b8 <exec_byte_code+10908>, 0x555555859c26 <exec_byte_code+15626>, 0x555555859c9b <exec_byte_code+15743>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859d31 <exec_byte_code+15893>, 0x555555859db8 <exec_byte_code+16028>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859f06 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 9
        bytestr_length = 40
        vectorp = 0x555557601b58
        quitcounter = 1 '\001'
        stack_items = 6
        sa_avail = 16296
        sa_count = 10
        alloc = 0x7fffffffcc80
        stack_base = 0x7fffffffcc80
        top = 0x7fffffffcc90
        stack_lim = 0x7fffffffccb0
        bytestr_data = 0x7fffffffccb0 "\300\301!\210p\211\211\205\026"
        pc = 0x7fffffffccce "\210\305 \210\210\306\307\310\"\207\371_\205UUU"
        count = 10
        result = XIL(0xe0d0)
#5  0x00005555557fdd22 in fetch_and_exec_byte_code (fun=XIL(0x555557601ba5), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffd340) at ../../master/src/eval.c:3036
#6  0x00005555557fe1a8 in funcall_lambda (fun=XIL(0x555557601ba5), nargs=0, arg_vector=0x7fffffffd340) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffd0f0)
        syms_left = make_fixnum(0)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 10
        i = 93824994985650
        optional = false
        rest = false
#7  0x00005555557fd57b in Ffuncall (nargs=1, args=0x7fffffffd338) at ../../master/src/eval.c:2916
        fun = XIL(0x555557601ba5)
        original_fun = XIL(0x17b5b60)
        funcar = XIL(0xffffd190)
        numargs = 0
        val = XIL(0)
        count = 9
#8  0x00005555557f166f in Ffuncall_interactively (nargs=1, args=0x7fffffffd338) at ../../master/src/callint.c:260
        speccount = 8
#9  0x00005555557fd960 in funcall_subr (subr=0x555555ddfca0 <Sfuncall_interactively>, numargs=1, args=0x7fffffffd338) at ../../master/src/eval.c:2967
#10 0x00005555557fd537 in Ffuncall (nargs=2, args=0x7fffffffd330) at ../../master/src/eval.c:2914
        fun = XIL(0x555555ddfca5)
        original_fun = XIL(0x70b0)
        funcar = XIL(0x7fffffffd260)
        numargs = 1
        val = XIL(0)
        count = 7
#11 0x00005555557fc220 in Fapply (nargs=3, args=0x7fffffffd330) at ../../master/src/eval.c:2497
        i = 2582733851120
        funcall_nargs = 24861632
        funcall_args = 0x0
        spread_arg = XIL(0)
        fun = XIL(0x70b0)
        sa_avail = 16384
        sa_count = 7
        numargs = 0
        retval = XIL(0x5555557f03af)
#12 0x00005555557f1ae4 in Fcall_interactively (function=XIL(0x17b5b60), record_flag=XIL(0), keys=XIL(0x555557e0a415)) at ../../master/src/callint.c:353
        funval = XIL(0x555557601ba5)
        events = 1526
        input = XIL(0)
        speccount = 6
        arg_from_tty = false
        key_count = 1
        record_then_fail = false
        save_this_command = XIL(0x17b5b60)
        save_this_original_command = XIL(0x17b5b60)
        save_real_this_command = XIL(0x17b5b60)
        save_last_command = XIL(0x17b5bc0)
        prefix_arg = XIL(0)
        enable = XIL(0)
        up_event = XIL(0)
        form = XIL(0x555558be6b73)
        specs = XIL(0)
        sa_avail = 93825001730176
        sa_count = 93824995577619
        string_len = 93824993913597
        string = 0x555557601ba5 ""
        string_end = 0x7fffffffd490 ""
        next_event = 93824994845699
        nargs = 0
        args = 0x0
        visargs = 0x0
        varies = 0x555555e63080 <lispsym> "\230\001"
        tem = 0x7fffffffd520 "\245\033`WUU"
        val = XIL(0)
#13 0x00005555557fdac9 in funcall_subr (subr=0x555555ddfce0 <Scall_interactively>, numargs=3, args=0x7fffffffd6d0) at ../../master/src/eval.c:2992
        internal_argbuf = {XIL(0x7fffffffd5e0), XIL(0x1000000000), XIL(0x555555ddfce0), XIL(0x7fffffffd5e8), make_fixnum(23456248746412), XIL(0x10557f4179), XIL(0x555555ddfce5), XIL(0x7fffffffd600)}
        internal_args = 0x7fffffffd6d0
#14 0x00005555557fd537 in Ffuncall (nargs=4, args=0x7fffffffd6c8) at ../../master/src/eval.c:2914
        fun = XIL(0x555555ddfce5)
        original_fun = XIL(0x2aaa9c7191d0)
        funcar = XIL(0x7fffffffd660)
        numargs = 3
        val = XIL(0x7fffffffd680)
        count = 5
#15 0x0000555555856bfa in exec_byte_code (bytestr=XIL(0x7ffff26110fc), vector=XIL(0x7ffff2610d65), maxdepth=make_fixnum(13), args_template=make_fixnum(1025), nargs=1, args=0x7fffffffdc40) at ../../master/src/bytecode.c:632
        op = 3
        type = CATCHER
        targets = {0x555555859a8f <exec_byte_code+15219>, 0x555555859ab4 <exec_byte_code+15256>, 0x555555859ab6 <exec_byte_code+15258>, 0x555555859ab8 <exec_byte_code+15260>, 0x555555859aba <exec_byte_code+15262>, 0x555555859aba <exec_byte_code+15262>, 0x555555859b1f <exec_byte_code+15363>, 0x555555859b93 <exec_byte_code+15479>, 0x5555558564ba <exec_byte_code+1438>, 0x5555558564bc <exec_byte_code+1440>, 0x5555558564be <exec_byte_code+1442>, 0x5555558564c0 <exec_byte_code+1444>, 0x5555558564c2 <exec_byte_code+1446>, 0x5555558564c2 <exec_byte_code+1446>, 0x5555558564c8 <exec_byte_code+1452>, 0x555555856489 <exec_byte_code+1389>, 0x5555558568e0 <exec_byte_code+2500>, 0x5555558568e2 <exec_byte_code+2502>, 0x5555558568e4 <exec_byte_code+2504>, 0x5555558568e6 <exec_byte_code+2506>, 0x5555558568e8 <exec_byte_code+2508>, 0x5555558568e8 <exec_byte_code+2508>, 0x55555585691d <exec_byte_code+2561>, 0x5555558568ee <exec_byte_code+2514>, 0x555555856b12 <exec_byte_code+3062>, 0x555555856b14 <exec_byte_code+3064>, 0x555555856b16 <exec_byte_code+3066>, 0x555555856b18 <exec_byte_code+3068>, 0x555555856b1a <exec_byte_code+3070>, 0x555555856b1a <exec_byte_code+3070>, 0x555555856acc <exec_byte_code+2992>, 0x555555856ae3 <exec_byte_code+3015>, 0x555555856bc7 <exec_byte_code+3243>, 0x555555856bc9 <exec_byte_code+3245>, 0x555555856bcb <exec_byte_code+3247>, 0x555555856bcd <exec_byte_code+3249>, 0x555555856bcf <exec_byte_code+3251>, 0x555555856bcf <exec_byte_code+3251>, 0x555555856b81 <exec_byte_code+3173>, 0x555555856b98 <exec_byte_code+3196>, 0x555555856c79 <exec_byte_code+3421>, 0x555555856c7b <exec_byte_code+3423>, 0x555555856c7d <exec_byte_code+3425>, 0x555555856c7f <exec_byte_code+3427>, 0x555555856c81 <exec_byte_code+3429>, 0x555555856c81 <exec_byte_code+3429>, 0x555555856c33 <exec_byte_code+3351>, 0x555555856c4a <exec_byte_code+3374>, 0x5555558574e1 <exec_byte_code+5573>, 0x5555558573c4 <exec_byte_code+5288>, 0x5555558573bb <exec_byte_code+5279>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x55555585771b <exec_byte_code+6143>, 0x555555857831 <exec_byte_code+6421>, 0x55555585788e <exec_byte_code+6514>, 0x5555558578ee <exec_byte_code+6610>, 0x555555857950 <exec_byte_code+6708>, 0x555555856739 <exec_byte_code+2077>, 0x5555558567b4 <exec_byte_code+2200>, 0x5555558579c9 <exec_byte_code+6829>, 0x555555856676 <exec_byte_code+1882>, 0x55555585681c <exec_byte_code+2304>, 0x555555857a31 <exec_byte_code+6933>, 0x555555857a99 <exec_byte_code+7037>, 0x555555857ae1 <exec_byte_code+7109>, 0x555555857b49 <exec_byte_code+7213>, 0x555555857baf <exec_byte_code+7315>, 0x555555857c95 <exec_byte_code+7545>, 0x555555857cdd <exec_byte_code+7617>, 0x555555857d45 <exec_byte_code+7721>, 0x555555857dca <exec_byte_code+7854>, 0x555555857e12 <exec_byte_code+7926>, 0x555555857e5a <exec_byte_code+7998>, 0x555555857ec2 <exec_byte_code+8102>, 0x555555857f2a <exec_byte_code+8206>, 0x555555857f92 <exec_byte_code+8310>, 0x555555858017 <exec_byte_code+8443>, 0x555555858066 <exec_byte_code+8522>, 0x5555558580b5 <exec_byte_code+8601>, 0x55555585817c <exec_byte_code+8800>, 0x555555858275 <exec_byte_code+9049>, 0x55555585836e <exec_byte_code+9298>, 0x5555558583db <exec_byte_code+9407>, 0x555555858448 <exec_byte_code+9516>, 0x5555558584b5 <exec_byte_code+9625>, 0x555555858522 <exec_byte_code+9734>, 0x55555585858f <exec_byte_code+9843>, 0x5555558585de <exec_byte_code+9922>, 0x5555558586d8 <exec_byte_code+10172>, 0x555555858727 <exec_byte_code+10251>, 0x555555858776 <exec_byte_code+10330>, 0x5555558587c5 <exec_byte_code+10409>, 0x5555558588cb <exec_byte_code+10671>, 0x55555585723b <exec_byte_code+4895>, 0x555555858926 <exec_byte_code+10762>, 0x55555585896e <exec_byte_code+10834>, 0x555555858a30 <exec_byte_code+11028>, 0x555555858a99 <exec_byte_code+11133>, 0x555555858af4 <exec_byte_code+11224>, 0x555555858b3c <exec_byte_code+11296>, 0x555555858b7f <exec_byte_code+11363>, 0x555555858bc2 <exec_byte_code+11430>, 0x555555858c0d <exec_byte_code+11505>, 0x555555859a8f <exec_byte_code+15219>, 0x555555858c65 <exec_byte_code+11593>, 0x555555858ca8 <exec_byte_code+11660>, 0x555555858ceb <exec_byte_code+11727>, 0x555555858d2e <exec_byte_code+11794>, 0x555555858d71 <exec_byte_code+11861>, 0x555555858db4 <exec_byte_code+11928>, 0x55555585723b <exec_byte_code+4895>, 0x555555859a8f <exec_byte_code+15219>, 0x555555858dfc <exec_byte_code+12000>, 0x555555858e4e <exec_byte_code+12082>, 0x555555858e96 <exec_byte_code+12154>, 0x555555858ede <exec_byte_code+12226>, 0x555555858f46 <exec_byte_code+12330>, 0x555555858fae <exec_byte_code+12434>, 0x555555858ff6 <exec_byte_code+12506>, 0x5555558590b3 <exec_byte_code+12695>, 0x55555585911b <exec_byte_code+12799>, 0x555555859183 <exec_byte_code+12903>, 0x5555558591eb <exec_byte_code+13007>, 0x55555585922e <exec_byte_code+13074>, 0x555555859a8f <exec_byte_code+15219>, 0x555555857181 <exec_byte_code+4709>, 0x555555856d2b <exec_byte_code+3599>, 0x5555558565e4 <exec_byte_code+1736>, 0x555555856ddc <exec_byte_code+3776>, 0x555555856e60 <exec_byte_code+3908>, 0x555555856ee1 <exec_byte_code+4037>, 0x555555857135 <exec_byte_code+4633>, 0x55555585714a <exec_byte_code+4654>, 0x555555856a79 <exec_byte_code+2909>, 0x555555857204 <exec_byte_code+4840>, 0x555555857272 <exec_byte_code+4950>, 0x555555857303 <exec_byte_code+5095>, 0x55555585734c <exec_byte_code+5168>, 0x55555585752d <exec_byte_code+5649>, 0x5555558575aa <exec_byte_code+5774>, 0x55555585762f <exec_byte_code+5907>, 0x555555857695 <exec_byte_code+6009>, 0x555555856cdd <exec_byte_code+3521>, 0x555555859276 <exec_byte_code+13146>, 0x5555558592fb <exec_byte_code+13279>, 0x555555859343 <exec_byte_code+13351>, 0x55555585938b <exec_byte_code+13423>, 0x5555558593d3 <exec_byte_code+13495>, 0x55555585941b <exec_byte_code+13567>, 0x555555859483 <exec_byte_code+13671>, 0x5555558594eb <exec_byte_code+13775>, 0x555555859553 <exec_byte_code+13879>, 0x5555558595bb <exec_byte_code+13983>, 0x555555859704 <exec_byte_code+14312>, 0x55555585976c <exec_byte_code+14416>, 0x5555558597d4 <exec_byte_code+14520>, 0x55555585981c <exec_byte_code+14592>, 0x555555859884 <exec_byte_code+14696>, 0x5555558598ec <exec_byte_code+14800>, 0x555555859934 <exec_byte_code+14872>, 0x55555585997c <exec_byte_code+14944>, 0x555555858814 <exec_byte_code+10488>, 0x555555858863 <exec_byte_code+10567>, 0x5555558599cb <exec_byte_code+15023>, 0x555555859a2d <exec_byte_code+15121>, 0x555555859a8f <exec_byte_code+15219>, 0x555555856f62 <exec_byte_code+4166>, 0x555555856f7f <exec_byte_code+4195>, 0x555555856fee <exec_byte_code+4306>, 0x55555585705d <exec_byte_code+4417>, 0x5555558570c9 <exec_byte_code+4525>, 0x555555857c1d <exec_byte_code+7425>, 0x555555858104 <exec_byte_code+8680>, 0x5555558589b8 <exec_byte_code+10908>, 0x555555859c26 <exec_byte_code+15626>, 0x555555859c9b <exec_byte_code+15743>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859d31 <exec_byte_code+15893>, 0x555555859db8 <exec_byte_code+16028>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859f06 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 24
        bytestr_length = 138
        vectorp = 0x7ffff2610d68
        quitcounter = 1 '\001'
        stack_items = 14
        sa_avail = 16134
        sa_count = 5
        alloc = 0x7fffffffd690
        stack_base = 0x7fffffffd690
        top = 0x7fffffffd6c8
        stack_lim = 0x7fffffffd700
        bytestr_data = 0x7fffffffd700 "\304\020\211?\205\023"
        pc = 0x7fffffffd762 "\006\006\071\203\211"
        count = 5
        result = XIL(0)
#16 0x00005555557fdd22 in fetch_and_exec_byte_code (fun=XIL(0x7ffff2610d35), syms_left=make_fixnum(1025), nargs=1, args=0x7fffffffdc38) at ../../master/src/eval.c:3036
#17 0x00005555557fe1a8 in funcall_lambda (fun=XIL(0x7ffff2610d35), nargs=1, arg_vector=0x7fffffffdc38) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffdbb0)
        syms_left = make_fixnum(1025)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 5
        i = 93824994985650
        optional = false
        rest = false
#18 0x00005555557fd57b in Ffuncall (nargs=2, args=0x7fffffffdc30) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff2610d35)
        original_fun = XIL(0x4470)
        funcar = XIL(0)
        numargs = 1
        val = XIL(0x7fffffffdc58)
        count = 4
#19 0x00005555557fcd45 in call1 (fn=XIL(0x4470), arg1=XIL(0x17b5b60)) at ../../master/src/eval.c:2774
#20 0x00005555557216bb in command_loop_1 () at ../../master/src/keyboard.c:1466
        scount = 3
        cmd = XIL(0x17b5b60)
        keybuf = {make_fixnum(113), XIL(0x7ffff2c1d0cd), XIL(0), XIL(0), XIL(0x7fffffffdd20), XIL(0x5555557fcdcf), XIL(0), XIL(0x7ffff25734c4), XIL(0x5555588c73b3), XIL(0), XIL(0x555555e63080), XIL(0), XIL(0x7fffffffdd00), XIL(0x55555571d4cf), XIL(0), XIL(0), XIL(0x555555e63080), XIL(0), XIL(0x7fffffffdd30), XIL(0x5555557f4179), XIL(0), XIL(0x555555e63080), XIL(0), XIL(0), XIL(0x7fffffffdd50), XIL(0x5555557f41cd), make_fixnum(2), make_fixnum(0), XIL(0x7fffffffdd90), XIL(0x5555557f9833)}
        i = 1
        prev_modiff = 60
        prev_buffer = 0x5555573fd880
        already_adjusted = false
#21 0x00005555557f92f3 in internal_condition_case (bfun=0x555555720e65 <command_loop_1>, handlers=XIL(0x90), hfun=0x555555720488 <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555560c2d73)
        c = 0x555555f5e8f0
#22 0x0000555555720a55 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#23 0x00005555557f8703 in internal_catch (tag=XIL(0xd9e0), func=0x555555720a28 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555f47770
#24 0x00005555557209f4 in command_loop () at ../../master/src/keyboard.c:1073
#25 0x000055555571ff71 in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf00)
#26 0x0000555555720168 in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#27 0x000055555571c04d in main (argc=2, argv=0x7fffffffe168) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"kill-buffer" (0xffffcc98)
"gnus-server-exit" (0xffffd340)
"funcall-interactively" (0xffffd338)
"call-interactively" (0xffffd6d0)
"command-execute" (0xffffdc38)
3435	  if (!NILP (Fstring_equal (XBUFFER (buffer)->name_,
3436				    build_string ("*Server*"))))
3437	    {
3438	      int count = buffer_window_count (XBUFFER (buffer));
3439	
3440	      replace_buffer_in_windows_safely_count = 0;
3441	
3442	
3443	      if (buffer_window_count (XBUFFER (buffer)))
3444		{
3443	      if (buffer_window_count (XBUFFER (buffer)))
3450		  FOR_EACH_FRAME (tail, frame)
3451		    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
$2 = XIL(0x5555573fd885)
Lisp_Vectorlike
PVEC_BUFFER
$3 = (struct buffer *) 0x5555573fd880
0x5555571c18a0 "*Server*"
$4 = {
  header = {
    size = 4611686018628915274
  },
  name_ = XIL(0x5555571e5b64),
  filename_ = XIL(0),
  directory_ = XIL(0x555555f6e6d4),
  backed_up_ = XIL(0),
  save_length_ = make_fixnum(0),
  auto_save_file_name_ = XIL(0),
  read_only_ = XIL(0x30),
  mark_ = XIL(0x555558c1dc5d),
  local_var_alist_ = XIL(0x555558c7b453),
  major_mode_ = XIL(0x15f4330),
  local_minor_modes_ = XIL(0x555558c2a9e3),
  mode_name_ = XIL(0x555556f4b704),
  mode_line_format_ = XIL(0x555558c2af73),
  header_line_format_ = XIL(0),
  tab_line_format_ = XIL(0),
  keymap_ = XIL(0x555556e4d403),
  abbrev_table_ = XIL(0x55555705cb75),
  syntax_table_ = XIL(0x5555570485fd),
  category_table_ = XIL(0x7ffff27881d5),
  case_fold_search_ = XIL(0x30),
  tab_width_ = make_fixnum(8),
  fill_column_ = make_fixnum(70),
  left_margin_ = make_fixnum(0),
  auto_fill_function_ = XIL(0),
  downcase_table_ = XIL(0x7ffff2784d35),
  upcase_table_ = XIL(0x7ffff2782d35),
  case_canon_table_ = XIL(0x7ffff28730fd),
  case_eqv_table_ = XIL(0x7ffff2784f75),
  truncate_lines_ = XIL(0x30),
  word_wrap_ = XIL(0),
  ctl_arrow_ = XIL(0x30),
  bidi_display_reordering_ = XIL(0x30),
  bidi_paragraph_direction_ = XIL(0),
  bidi_paragraph_separate_re_ = XIL(0),
  bidi_paragraph_start_re_ = XIL(0),
  selective_display_ = XIL(0),
  selective_display_ellipses_ = XIL(0x30),
  overwrite_mode_ = XIL(0),
  abbrev_mode_ = XIL(0),
  display_table_ = XIL(0),
  mark_active_ = XIL(0),
  enable_multibyte_characters_ = XIL(0x30),
  buffer_file_coding_system_ = XIL(0x2aaa9c7c45e8),
  file_format_ = XIL(0),
  auto_save_file_format_ = XIL(0x30),
  cache_long_scans_ = XIL(0x30),
  width_table_ = XIL(0),
  pt_marker_ = XIL(0),
  begv_marker_ = XIL(0),
  zv_marker_ = XIL(0),
  point_before_scroll_ = XIL(0),
  file_truename_ = XIL(0),
  invisibility_spec_ = XIL(0x30),
  last_selected_window_ = XIL(0x55555734b355),
  display_count_ = make_fixnum(1),
  left_margin_cols_ = make_fixnum(0),
  right_margin_cols_ = make_fixnum(0),
  left_fringe_width_ = XIL(0),
  right_fringe_width_ = XIL(0),
  fringes_outside_margins_ = XIL(0),
  scroll_bar_width_ = XIL(0),
  scroll_bar_height_ = XIL(0),
  vertical_scroll_bar_type_ = XIL(0x30),
  horizontal_scroll_bar_type_ = XIL(0x30),
  indicate_empty_lines_ = XIL(0),
  indicate_buffer_boundaries_ = XIL(0x8f10),
  fringe_indicator_alist_ = XIL(0x7ffff257001b),
  fringe_cursor_alist_ = XIL(0x7ffff256fbab),
  display_time_ = XIL(0x555558c2ac93),
  scroll_up_aggressively_ = XIL(0),
  scroll_down_aggressively_ = XIL(0),
  cursor_type_ = XIL(0x30),
  extra_line_spacing_ = XIL(0),
  cursor_in_non_selected_windows_ = XIL(0x30),
  own_text = {
    beg = 0x55555869acd0 "     {nnfolder:archive} (opened)\n     {nndraft:} (opened)\n     {nntp:news.gmane.io} (opened)\n     {nnimap:localimap} (opened)\n",
    gpt = 127,
    z = 127,
    gpt_byte = 127,
    z_byte = 127,
    gap_size = 1896,
    modiff = 60,
    chars_modiff = 56,
    save_modiff = 1,
    overlay_modiff = 1,
    compact = 1,
    beg_unchanged = 126,
    end_unchanged = 0,
    unchanged_modified = 60,
    overlay_unchanged_modified = 1,
    intervals = 0x555558274198,
    markers = 0x5555584d3908,
    inhibit_shrinking = false,
    redisplay = false
  },
  text = 0x5555573fdad8,
  pt = 127,
  pt_byte = 127,
  begv = 1,
  begv_byte = 1,
  zv = 127,
  zv_byte = 127,
  base_buffer = 0x0,
  indirections = 0,
  window_count = 1,
  local_flags = "\000\001\000\000\000\000\000\000\000\001\000\000\000\000\001\000\001", '\000' <repeats 32 times>,
  modtime = {
    tv_sec = 0,
    tv_nsec = -2
  },
  modtime_size = -1,
  auto_save_modified = 0,
  display_error_modiff = 0,
  auto_save_failure_time = 0,
  last_window_start = 1,
  newline_cache = 0x5555582bb760,
  width_run_cache = 0x0,
  bidi_paragraph_cache = 0x555558232540,
  prevent_redisplay_optimizations_p = false,
  clip_changed = false,
  inhibit_buffer_hooks = false,
  overlays_before = 0x0,
  overlays_after = 0x0,
  overlay_center = 127,
  undo_list_ = XIL(0)
}
window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, obj=XIL(0x5555573fd885), 
    mini=true, frames=XIL(0x55555820ef55)) at ../../master/src/window.c:2967
2967	  bool frame_best_window_flag = false;
2973	  if (FRAMEP (frames))
2974	    f = XFRAME (frames);
2980	  if (f)
$5 = (struct frame *) 0x55555820ef50
$6 = {
  header = {
    size = 4611686018578583579
  },
  name = XIL(0x555557f279a4),
  icon_name = XIL(0),
  title = XIL(0),
  parent_frame = XIL(0),
  focus_frame = XIL(0),
  root_window = XIL(0x5555571ebfc5),
  selected_window = XIL(0x5555571ebfc5),
  old_selected_window = XIL(0x5555571ebfc5),
  minibuffer_window = XIL(0x55555820f3cd),
  param_alist = XIL(0x555557270793),
  scroll_bars = XIL(0x555558249d2d),
  condemned_scroll_bars = XIL(0),
  menu_bar_items = XIL(0x555557a16205),
  face_alist = XIL(0x555557276223),
  menu_bar_vector = XIL(0x55555817250d),
  buffer_predicate = XIL(0),
  buffer_list = XIL(0x555558bc6053),
  buried_buffer_list = XIL(0x555558be0153),
  tab_bar_window = XIL(0x555557916495),
  desired_tab_bar_string = XIL(0),
  current_tab_bar_string = XIL(0),
  tool_bar_window = XIL(0x555557916705),
  desired_tool_bar_string = XIL(0),
  current_tool_bar_string = XIL(0),
  font_data = XIL(0),
  tab_bar_items = XIL(0),
  tool_bar_items = XIL(0),
  face_cache = 0x5555572b6bd0,
  last_tab_bar_item = -1,
  last_tool_bar_item = -1,
  menu_bar_items_used = 0,
  namebuf = 0x5555571c7420 "emacs",
  shell_position = 0x555557407e40 "=658x614",
  current_pool = 0x0,
  desired_pool = 0x0,
  desired_matrix = 0x0,
  current_matrix = 0x0,
  glyphs_initialized_p = true,
  resized_p = false,
  default_face_done_p = true,
  already_hscrolled_p = true,
  updated_p = true,
  minimize_tab_bar_window_p = false,
  minimize_tool_bar_window_p = false,
  fonts_changed = false,
  cursor_type_changed = false,
  redisplay = false,
  external_menu_bar = true,
  visible = 1,
  iconified = false,
  garbaged = false,
  wants_modeline = true,
  auto_raise = false,
  auto_lower = false,
  no_split = false,
  explicit_name = false,
  window_change = false,
  window_state_change = false,
  mouse_moved = true,
  pointer_invisible = false,
  frozen_window_starts = false,
  output_method = output_x_window,
  tooltip = false,
  want_fullscreen = FULLSCREEN_NONE,
  vertical_scroll_bar_type = vertical_scroll_bar_left,
  horizontal_scroll_bars = false,
  undecorated = false,
  override_redirect = false,
  skip_taskbar = false,
  no_focus_on_map = false,
  no_accept_focus = false,
  z_group = z_group_none,
  no_special_glyphs = false,
  new_pixelwise = false,
  can_set_window_size = true,
  after_make_frame = true,
  tab_bar_redisplayed = true,
  tab_bar_resized = false,
  tool_bar_redisplayed = true,
  tool_bar_resized = false,
  inhibit_horizontal_resize = false,
  inhibit_vertical_resize = false,
  face_change = false,
  inhibit_clear_image_cache = false,
  change_stamp = 168,
  number_of_windows = 2,
  tab_bar_lines = 0,
  tab_bar_height = 0,
  n_tab_bar_rows = 0,
  n_tab_bar_items = 0,
  tool_bar_lines = 0,
  tool_bar_height = 0,
  n_tool_bar_rows = 0,
  n_tool_bar_items = 0,
  decode_mode_spec_buffer = 0x5555581aaa30 "",
  insert_line_cost = 0x0,
  delete_line_cost = 0x0,
  insert_n_lines_cost = 0x0,
  delete_n_lines_cost = 0x0,
  text_cols = 96,
  text_lines = 57,
  total_cols = 100,
  total_lines = 57,
  text_width = 768,
  text_height = 985,
  new_width = 0,
  new_height = 0,
  left_pos = 1910,
  top_pos = 19,
  pixel_width = 802,
  pixel_height = 987,
  win_gravity = 1,
  size_hint_flags = 8,
  border_width = 0,
  child_frame_border_width = -1,
  internal_border_width = 1,
  right_divider_width = 0,
  bottom_divider_width = 0,
  left_fringe_width = 8,
  right_fringe_width = 8,
  fringe_cols = 2,
  menu_bar_lines = 0,
  menu_bar_height = 0,
  column_width = 8,
  line_height = 17,
  terminal = 0x555556f77e58,
  output_data = {
    tty = 0x555557297e70,
    x = 0x555557297e70,
    w32 = 0x555557297e70,
    ns = 0x555557297e70
  },
  font_driver_list = 0x5555577ad910,
  wait_event_type = 0,
  desired_cursor = FILLED_BOX_CURSOR,
  cursor_width = 1,
  blink_off_cursor = DEFAULT_CURSOR,
  blink_off_cursor_width = 0,
  config_scroll_bar_width = 16,
  config_scroll_bar_cols = 2,
  config_scroll_bar_height = 0,
  config_scroll_bar_lines = 0,
  cost_calculation_baud_rate = 19200,
  alpha = {-1, -1},
  gamma = 0,
  extra_line_spacing = 0,
  background_pixel = 0,
  foreground_pixel = 16777215
}
$7 = XIL(0x5555571ebfc5)
Lisp_Vectorlike
PVEC_WINDOW
$8 = (struct window *) 0x5555571ebfc0
100x57+0+0
$9 = {
  header = {
    size = 4611686018595323929
  },
  frame = XIL(0x55555820ef55),
  next = XIL(0x55555820f3cd),
  prev = XIL(0),
  parent = XIL(0),
  normal_lines = XIL(0x5555576c7227),
  normal_cols = XIL(0x5555576c721f),
  new_total = make_fixnum(29),
  new_normal = XIL(0x5555576c7207),
  new_pixel = make_fixnum(492),
  contents = XIL(0x5555578be555),
  old_buffer = XIL(0x5555578be555),
  start = XIL(0x555557648d65),
  pointm = XIL(0x55555769443d),
  old_pointm = XIL(0x55555769446d),
  temslot = make_fixnum(0),
  vertical_scroll_bar = XIL(0x5555579268f5),
  vertical_scroll_bar_type = XIL(0x30),
  horizontal_scroll_bar = XIL(0),
  horizontal_scroll_bar_type = XIL(0),
  display_table = XIL(0),
  dedicated = XIL(0),
  redisplay_end_trigger = XIL(0),
  combination_limit = XIL(0),
  window_parameters = XIL(0x555557d8f163),
  mode_line_help_echo = XIL(0),
  current_matrix = 0x55555774f360,
  desired_matrix = 0x555557a2d400,
  prev_buffers = XIL(0x555558c334d3),
  next_buffers = XIL(0),
  use_time = 1704,
  sequence_number = 46,
  change_stamp = 168,
  pixel_left = 0,
  pixel_top = 0,
  left_col = 0,
  top_line = 0,
  pixel_width = 800,
  pixel_height = 968,
  old_pixel_width = 800,
  old_pixel_height = 968,
  old_body_pixel_width = 768,
  old_body_pixel_height = 951,
  total_cols = 100,
  total_lines = 57,
  hscroll = 0,
  min_hscroll = 0,
  hscroll_whole = 0,
  last_modified = 46,
  last_overlay_modified = 1,
  last_point = 1,
  base_line_number = 1,
  base_line_pos = 1,
  column_number_displayed = -1,
  nrows_scale_factor = 1,
  ncols_scale_factor = 1,
  cursor = {
    x = 0,
    y = 0,
    hpos = 0,
    vpos = 0
  },
  phys_cursor = {
    x = 0,
    y = 0,
    hpos = 0,
    vpos = 0
  },
  output_cursor = {
    x = 0,
    y = 0,
    hpos = 0,
    vpos = 0
  },
  last_cursor_vpos = 0,
  phys_cursor_type = HOLLOW_BOX_CURSOR,
  phys_cursor_width = 8,
  phys_cursor_ascent = 13,
  phys_cursor_height = 17,
  left_fringe_width = -1,
  right_fringe_width = -1,
  left_margin_cols = 0,
  right_margin_cols = 0,
  scroll_bar_width = -1,
  scroll_bar_height = -1,
  mode_line_height = 17,
  header_line_height = 17,
  tab_line_height = -1,
  window_end_pos = 0,
  window_end_vpos = 24,
  mini = false,
  horizontal = false,
  update_mode_line = false,
  last_had_star = false,
  start_at_line_beg = true,
  force_start = false,
  optional_new_start = false,
  phys_cursor_on_p = true,
  cursor_off_p = false,
  last_cursor_off_p = false,
  must_be_updated_p = false,
  pseudo_window_p = false,
  fringes_outside_margins = false,
  fringes_persistent = false,
  scroll_bars_persistent = false,
  window_end_valid = true,
  redisplay = false,
  suspend_auto_hscroll = false,
  vscroll = 0,
  window_end_bytepos = 0
}
2981	    frame_arg = Qlambda;
2994	  if (WINDOWP (obj))
$10 = XIL(0x5555573fd885)
Lisp_Vectorlike
PVEC_BUFFER
2996	  else if (f)
2997	    window = FRAME_SELECTED_WINDOW (f);
3001	  windows = window_list_1 (window, mini ? Qt : Qnil, frame_arg);
$11 = XIL(0x5555571ebfc5)
$12 = true
builtin_lisp_symbol (index=1) at ../../master/src/lisp.h:1007
1007	  return make_lisp_symbol (&lispsym[index]);
#1  0x000055555564c582 in window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, 
    obj=XIL(0x5555573fd885), mini=true, frames=XIL(0x55555820ef55))
    at ../../master/src/window.c:3001
3001	  windows = window_list_1 (window, mini ? Qt : Qnil, frame_arg);
#0  builtin_lisp_symbol (index=1) at ../../master/src/lisp.h:1007
1007	  return make_lisp_symbol (&lispsym[index]);
$13 = 1
make_lisp_symbol (sym=0x555555e630b0 <lispsym+48>)
    at ../../master/src/lisp.h:998
998	  char *symoffset = (char *) ((char *) sym - (char *) lispsym);
$14 = (struct Lisp_Symbol *) 0x555555e630b0 <lispsym+48>
999	  Lisp_Object a = TAG_PTR (Lisp_Symbol, symoffset);
1000	  eassert (XSYMBOL (a) == sym);
$15 = XIL(0x30)
type = union Lisp_X {
    <incomplete type>
} *
XSYMBOL (a=XIL(0x30)) at ../../master/src/lisp.h:987
987	  eassert (SYMBOLP (a));
988	  intptr_t i = (intptr_t) XUNTAG (a, Lisp_Symbol, struct Lisp_Symbol);
989	  void *p = (char *) lispsym + i;
990	  return p;
$16 = (void *) 0x555555e630b0 <lispsym+48>
991	}
make_lisp_symbol (sym=0x555555e630b0 <lispsym+48>)
    at ../../master/src/lisp.h:1001
1001	  return a;
1002	}
builtin_lisp_symbol (index=1) at ../../master/src/lisp.h:1008
1008	}
window_list_1 (window=XIL(0x5555571ebfc5), minibuf=XIL(0x30), 
    all_frames=XIL(0xc0)) at ../../master/src/window.c:2863
2863	  decode_next_window_args (&window, &minibuf, &all_frames);
decode_next_window_args (window=0x7fffffffc968, minibuf=0x7fffffffc960, 
    all_frames=0x7fffffffc958) at ../../master/src/window.c:2672
2672	  struct window *w = decode_live_window (*window);
decode_live_window (window=XIL(0x5555571ebfc5))
    at ../../master/src/window.c:246
246	  if (NILP (window))
249	  CHECK_LIVE_WINDOW (window);
WINDOWP (a=XIL(0x5555571ebfc5)) at ../../master/src/window.h:460
460	  return PSEUDOVECTORP (a, PVEC_WINDOW);
PSEUDOVECTORP (a=XIL(0x5555571ebfc5), code=10) at ../../master/src/lisp.h:1695
1695	  if (! VECTORLIKEP (a))
1700	      return PSEUDOVECTOR_TYPEP (XUNTAG (a, Lisp_Vectorlike,
PSEUDOVECTOR_TYPEP (a=0x5555571ebfc0, code=PVEC_WINDOW)
    at ../../master/src/lisp.h:1687
1687	  return ((a->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK))
1688		  == (PSEUDOVECTOR_FLAG | (code << PSEUDOVECTOR_AREA_BITS)));
1689	}
PSEUDOVECTORP (a=XIL(0x5555571ebfc5), code=10) at ../../master/src/lisp.h:1704
1704	}
WINDOWP (a=XIL(0x5555571ebfc5)) at ../../master/src/window.h:461
461	}
XWINDOW (a=XIL(0x5555571ebfc5)) at ../../master/src/window.h:472
472	  eassert (WINDOWP (a));
473	  return XUNTAG (a, Lisp_Vectorlike, struct window);
Quit
474	}
BUFFERP (a=XIL(0x5555578be555)) at ../../master/src/buffer.h:698
698	  return PSEUDOVECTORP (a, PVEC_BUFFER);
699	}
decode_live_window (window=XIL(0x5555571ebfc5))
    at ../../master/src/window.c:250
250	  return XWINDOW (window);
XWINDOW (a=XIL(0x5555571ebfc5)) at ../../master/src/window.h:472
472	  eassert (WINDOWP (a));
473	  return XUNTAG (a, Lisp_Vectorlike, struct window);
474	}
decode_live_window (window=XIL(0x5555571ebfc5))
    at ../../master/src/window.c:251
251	}
decode_next_window_args (window=0x7fffffffc968, minibuf=0x7fffffffc960, 
    all_frames=0x7fffffffc958) at ../../master/src/window.c:2673
2673	  Lisp_Object miniwin = XFRAME (w->frame)->minibuffer_window;
2675	  XSETWINDOW (*window, w);
$17 = XIL(0x55555820f3cd)
type = union Lisp_X {
    <incomplete type>
} *
$18 = (struct window *) 0x5555571ebfc0
$19 = {
  header = {
    size = 4611686018595323929
  },
  frame = XIL(0x55555820ef55),
  next = XIL(0x55555820f3cd),
  prev = XIL(0),
  parent = XIL(0),
  normal_lines = XIL(0x5555576c7227),
  normal_cols = XIL(0x5555576c721f),
  new_total = make_fixnum(29),
  new_normal = XIL(0x5555576c7207),
  new_pixel = make_fixnum(492),
  contents = XIL(0x5555578be555),
  old_buffer = XIL(0x5555578be555),
  start = XIL(0x555557648d65),
  pointm = XIL(0x55555769443d),
  old_pointm = XIL(0x55555769446d),
  temslot = make_fixnum(0),
  vertical_scroll_bar = XIL(0x5555579268f5),
  vertical_scroll_bar_type = XIL(0x30),
  horizontal_scroll_bar = XIL(0),
  horizontal_scroll_bar_type = XIL(0),
  display_table = XIL(0),
  dedicated = XIL(0),
  redisplay_end_trigger = XIL(0),
  combination_limit = XIL(0),
  window_parameters = XIL(0x555557d8f163),
  mode_line_help_echo = XIL(0),
  current_matrix = 0x55555774f360,
  desired_matrix = 0x555557a2d400,
  prev_buffers = XIL(0x555558c334d3),
  next_buffers = XIL(0),
  use_time = 1704,
  sequence_number = 46,
  change_stamp = 168,
  pixel_left = 0,
  pixel_top = 0,
  left_col = 0,
  top_line = 0,
  pixel_width = 800,
  pixel_height = 968,
  old_pixel_width = 800,
  old_pixel_height = 968,
  old_body_pixel_width = 768,
  old_body_pixel_height = 951,
  total_cols = 100,
  total_lines = 57,
  hscroll = 0,
  min_hscroll = 0,
  hscroll_whole = 0,
  last_modified = 46,
  last_overlay_modified = 1,
  last_point = 1,
  base_line_number = 1,
  base_line_pos = 1,
  column_number_displayed = -1,
  nrows_scale_factor = 1,
  ncols_scale_factor = 1,
  cursor = {
    x = 0,
    y = 0,
    hpos = 0,
    vpos = 0
  },
  phys_cursor = {
    x = 0,
    y = 0,
    hpos = 0,
    vpos = 0
  },
  output_cursor = {
    x = 0,
    y = 0,
    hpos = 0,
    vpos = 0
  },
  last_cursor_vpos = 0,
  phys_cursor_type = HOLLOW_BOX_CURSOR,
  phys_cursor_width = 8,
  phys_cursor_ascent = 13,
  phys_cursor_height = 17,
  left_fringe_width = -1,
  right_fringe_width = -1,
  left_margin_cols = 0,
  right_margin_cols = 0,
  scroll_bar_width = -1,
  scroll_bar_height = -1,
  mode_line_height = 17,
  header_line_height = 17,
  tab_line_height = -1,
  window_end_pos = 0,
  window_end_vpos = 24,
  mini = false,
  horizontal = false,
  update_mode_line = false,
  last_had_star = false,
  start_at_line_beg = true,
  force_start = false,
  optional_new_start = false,
  phys_cursor_on_p = true,
  cursor_off_p = false,
  last_cursor_off_p = false,
  must_be_updated_p = false,
  pseudo_window_p = false,
  fringes_outside_margins = false,
  fringes_persistent = false,
  scroll_bars_persistent = false,
  window_end_valid = true,
  redisplay = false,
  suspend_auto_hscroll = false,
  vscroll = 0,
  window_end_bytepos = 0
}
There is no member named contents.
$20 = XIL(0x5555578be555)
type = union Lisp_X {
    <incomplete type>
} *
make_lisp_ptr (ptr=0x5555571ebfc0, type=Lisp_Vectorlike)
    at ../../master/src/lisp.h:1259
1259	  Lisp_Object a = TAG_PTR (type, ptr);
1260	  eassert (TAGGEDP (a, type) && XUNTAG (a, type, char) == ptr);
1261	  return a;
1262	}
decode_next_window_args (window=0x7fffffffc968, minibuf=0x7fffffffc960, 
    all_frames=0x7fffffffc958) at ../../master/src/window.c:2678
2678	  if (NILP (*minibuf))
2682	  else if (!EQ (*minibuf, Qt))
2690	  if (NILP (*all_frames))
2695	  else if (EQ (*all_frames, Qvisible))
2697	  else if (EQ (*all_frames, make_fixnum (0)))
2699	  else if (FRAMEP (*all_frames))
2701	  else if (!EQ (*all_frames, Qt))
2702	    *all_frames = Qnil;
2703	}
window_list_1 (window=XIL(0x5555571ebfc5), minibuf=XIL(0x30), 
    all_frames=XIL(0)) at ../../master/src/window.c:2864
2864	  list = Qnil;
2866	  for (tail = window_list (); CONSP (tail); tail = XCDR (tail))
2867	    if (candidate_window_p (XCAR (tail), window, minibuf, all_frames))
candidate_window_p (window=XIL(0x5555571ebfc5), owindow=XIL(0x5555571ebfc5), 
    minibuf=XIL(0x30), all_frames=XIL(0)) at ../../master/src/window.c:2605
2605	  struct window *w = XWINDOW (window);
2606	  struct frame *f = XFRAME (w->frame);
2607	  bool candidate_p = true;
2609	  if (!BUFFERP (w->contents))
2611	  else if (MINI_WINDOW_P (w)
2619	  else if (EQ (all_frames, Qt))
2621	  else if (NILP (all_frames))
2623	      eassert (WINDOWP (owindow));
2624	      candidate_p = EQ (w->frame, XWINDOW (owindow)->frame);
2661	  return candidate_p;
$21 = true
2662	}
window_list_1 (window=XIL(0x5555571ebfc5), minibuf=XIL(0x30), 
    all_frames=XIL(0)) at ../../master/src/window.c:2868
2868	      list = Fcons (XCAR (tail), list);
2866	  for (tail = window_list (); CONSP (tail); tail = XCDR (tail))
2867	    if (candidate_window_p (XCAR (tail), window, minibuf, all_frames))
2868	      list = Fcons (XCAR (tail), list);
2866	  for (tail = window_list (); CONSP (tail); tail = XCDR (tail))
2871	  list = Fnreverse (list);
2872	  rest = Fmemq (window, list);
$22 = XIL(0x555558be6423)
Lisp_Cons
$23 = (struct Lisp_Cons *) 0x555558be6420
{
  u = {
    s = {
      car = XIL(0x5555571ebfc5),
      u = {
        cdr = XIL(0x555558be6433),
        chain = 0x555558be6433
      }
    },
    gcaligned = 0xc5
  }
}
$24 = 0x0
2873	  if (!NILP (rest) && !EQ (rest, list))
$25 = XIL(0x555558be6423)
Lisp_Cons
2880	  return list;
2881	}
window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, obj=XIL(0x5555573fd885), 
    mini=true, frames=XIL(0x55555820ef55)) at ../../master/src/window.c:3002
3002	  best_window = Qnil;
3004	  for (; CONSP (windows); windows = XCDR (windows))
3008	      window = XCAR (windows);
3009	      w = XWINDOW (window);
$26 = XIL(0x5555571ebfc5)
Lisp_Vectorlike
PVEC_WINDOW
$27 = (struct window *) 0x5555571ebfc0
100x57+0+0
3014	      if (!MINI_WINDOW_P (w)
3046		    if (EQ (w->contents, obj))
3063		    break;
3004	  for (; CONSP (windows); windows = XCDR (windows))
3008	      window = XCAR (windows);
3009	      w = XWINDOW (window);
$28 = XIL(0x55555820f3cd)
Lisp_Vectorlike
PVEC_WINDOW
$29 = (struct window *) 0x55555820f3c8
100x1+0+57
3014	      if (!MINI_WINDOW_P (w)
3017		  || type == REPLACE_BUFFER_IN_WINDOWS_SAFELY
3046		    if (EQ (w->contents, obj))
3063		    break;
3004	  for (; CONSP (windows); windows = XCDR (windows))
3097	  return best_window;
$30 = XIL(0)
3098	}
replace_buffer_in_windows_safely (buffer=XIL(0x5555573fd885))
    at ../../master/src/window.c:3450
3450		  FOR_EACH_FRAME (tail, frame)
3451		    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, obj=XIL(0x5555573fd885), 
    mini=true, frames=XIL(0x555556fa294d)) at ../../master/src/window.c:2967
2967	  bool frame_best_window_flag = false;
2973	  if (FRAMEP (frames))
2974	    f = XFRAME (frames);
2980	  if (f)
2981	    frame_arg = Qlambda;
2994	  if (WINDOWP (obj))
2996	  else if (f)
2997	    window = FRAME_SELECTED_WINDOW (f);
3001	  windows = window_list_1 (window, mini ? Qt : Qnil, frame_arg);
3002	  best_window = Qnil;
3004	  for (; CONSP (windows); windows = XCDR (windows))
3097	  return best_window;
3098	}
replace_buffer_in_windows_safely (buffer=XIL(0x5555573fd885))
    at ../../master/src/window.c:3450
3450		  FOR_EACH_FRAME (tail, frame)
3451		    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, obj=XIL(0x5555573fd885), 
    mini=true, frames=XIL(0x555555eff9dd)) at ../../master/src/window.c:2967
2967	  bool frame_best_window_flag = false;
2973	  if (FRAMEP (frames))
2974	    f = XFRAME (frames);
2980	  if (f)
2981	    frame_arg = Qlambda;
2994	  if (WINDOWP (obj))
2996	  else if (f)
2997	    window = FRAME_SELECTED_WINDOW (f);
3001	  windows = window_list_1 (window, mini ? Qt : Qnil, frame_arg);
3002	  best_window = Qnil;
3004	  for (; CONSP (windows); windows = XCDR (windows))
3097	  return best_window;
3098	}
replace_buffer_in_windows_safely (buffer=XIL(0x5555573fd885))
    at ../../master/src/window.c:3450
3450		  FOR_EACH_FRAME (tail, frame)
3454	      eassert (count == replace_buffer_in_windows_safely_count);
$31 = 1
$32 = 0

Thread 2.1 "emacs" hit Breakpoint 3, terminate_due_to_signal (sig=6, 
    backtrace_limit=2147483647) at ../../master/src/emacs.c:379
379	  signal (sig, SIG_DFL);
#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647)
    at ../../master/src/emacs.c:379
#1  0x00005555557c4a46 in die
    (msg=0x555555910838 "count == replace_buffer_in_windows_safely_count", file=0x55555590f9cf "../../master/src/window.c", line=3454)
    at ../../master/src/alloc.c:7420
#2  0x000055555564d9af in replace_buffer_in_windows_safely
    (buffer=XIL(0x5555573fd885)) at ../../master/src/window.c:3454
        count = 1
#3  0x0000555555758f71 in Fkill_buffer (buffer_or_name=XIL(0x5555573fd885))
    at ../../master/src/buffer.c:1880
        buffer = XIL(0x5555573fd885)
        b = 0x5555573fd880
        tem = XIL(0)
        m = 0x7fffffffcb70
#4  0x00005555557fda6f in funcall_subr
    (subr=0x555555dd9ce0 <Skill_buffer>, numargs=1, args=0x7fffffffcc98)
    at ../../master/src/eval.c:2987
        internal_argbuf = 
          {XIL(0x7fffffffcbd0), XIL(0x1000000000), XIL(0x555555dd9ce0), XIL(0x7fffffffcbd8), make_fixnum(23456248746412), XIL(0x10557f4179), XIL(0x555555dd9ce5), XIL(0x7fffffffcbf0)}
        internal_args = 0x7fffffffcc98
#5  0x00005555557fd537 in Ffuncall (nargs=2, args=0x7fffffffcc90)
    at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd9ce5)
        original_fun = XIL(0x2aaa9c7147c0)
        funcar = XIL(0x5ffffcc50)
        numargs = 1
        val = XIL(0x7fffffffcc70)
        count = 10
#6  0x0000555555856bfa in exec_byte_code
    (bytestr=XIL(0x555556f49614), vector=XIL(0x555557601b55), maxdepth=make_fixnum(5), args_template=make_fixnum(0), nargs=0, args=0x7fffffffd340)
    at ../../master/src/bytecode.c:632
        op = 1
        type = (CONDITION_CASE | unknown: 0x557d720c)
        targets = 
          {0x555555859a8f <exec_byte_code+15219>, 0x555555859ab4 <exec_byte_code+15256>, 0x555555859ab6 <exec_byte_code+15258>, 0x555555859ab8 <exec_byte_code+15260>, 0x555555859aba <exec_byte_code+15262>, 0x555555859aba <exec_byte_code+15262>, 0x555555859b1f <exec_byte_code+15363>, 0x555555859b93 <exec_byte_code+15479>, 0x5555558564ba <exec_byte_code+1438>, 0x5555558564bc <exec_byte_code+1440>, 0x5555558564be <exec_byte_code+1442>, 0x5555558564c0 <exec_byte_code+1444>, 0x5555558564c2 <exec_byte_code+1446>, 0x5555558564c2 <exec_byte_code+1446>, 0x5555558564c8 <exec_byte_code+1452>, 0x555555856489 <exec_byte_code+1389>, 0x5555558568e0 <exec_byte_code+2500>, 0x5555558568e2 <exec_byte_code+2502>, 0x5555558568e4 <exec_byte_code+2504>, 0x5555558568e6 <exec_byte_code+2506>, 0x5555558568e8 <exec_byte_code+2508>, 0x5555558568e8 <exec_byte_code+2508>, 0x55555585691d <exec_byte_code+2561>, 0x5555558568ee <exec_byte_code+2514>, 0x555555856b12 <exec_byte_code+3062>, 0x555555856b14 <exec_byte_code+3064>, 0x555555856b16 <exec_byte_code+3066>, 0x555555856b18 <exec_byte_code+3068>, 0x555555856b1a <exec_byte_code+3070>, 0x555555856b1a <exec_byte_code+3070>, 0x555555856acc <exec_byte_code+2992>, 0x555555856ae3 <exec_byte_code+3015>, 0x555555856bc7 <exec_byte_code+3243>, 0x555555856bc9 <exec_byte_code+3245>, 0x555555856bcb <exec_byte_code+3247>, 0x555555856bcd <exec_byte_code+3249>, 0x555555856bcf <exec_byte_code+3251>, 0x555555856bcf <exec_byte_code+3251>, 0x555555856b81 <exec_byte_code+3173>, 0x555555856b98 <exec_byte_code+3196>, 0x555555856c79 <exec_byte_code+3421>, 0x555555856c7b <exec_byte_code+3423>, 0x555555856c7d <exec_byte_code+3425>, 0x555555856c7f <exec_byte_code+3427>, 0x555555856c81 <exec_byte_code+3429>, 0x555555856c81 <exec_byte_code+3429>, 0x555555856c33 <exec_byte_code+3351>, 0x555555856c4a <exec_byte_code+3374>, 0x5555558574e1 <exec_byte_code+5573>, 0x5555558573c4 <exec_byte_code+5288>, 0x5555558573bb <exec_byte_code+5279>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x55555585771b <exec_byte_code+6143>, 0x555555857831 <exec_byte_code+6421>, 0x55555585788e <exec_byte_code+6514>, 0x5555558578ee <exec_byte_code+6610>, 0x555555857950 <exec_byte_code+6708>, 0x555555856739 <exec_byte_code+2077>, 0x5555558567b4 <exec_byte_code+2200>, 0x5555558579c9 <exec_byte_code+6829>, 0x555555856676 <exec_byte_code+1882>, 0x55555585681c <exec_byte_code+2304>, 0x555555857a31 <exec_byte_code+6933>, 0x555555857a99 <exec_byte_code+7037>, 0x555555857ae1 <exec_byte_code+7109>, 0x555555857b49 <exec_byte_code+7213>, 0x555555857baf <exec_byte_code+7315>, 0x555555857c95 <exec_byte_code+7545>, 0x555555857cdd <exec_byte_code+7617>, 0x555555857d45 <exec_byte_code+7721>, 0x555555857dca <exec_byte_code+7854>, 0x555555857e12 <exec_byte_code+7926>, 0x555555857e5a <exec_byte_code+7998>, 0x555555857ec2 <exec_byte_code+8102>, 0x555555857f2a <exec_byte_code+8206>, 0x555555857f92 <exec_byte_code+8310>, 0x555555858017 <exec_byte_code+8443>, 0x555555858066 <exec_byte_code+8522>, 0x5555558580b5 <exec_byte_code+8601>, 0x55555585817c <exec_byte_code+8800>, 0x555555858275 <exec_byte_code+9049>, 0x55555585836e <exec_byte_code+9298>, 0x5555558583db <exec_byte_code+9407>, 0x555555858448 <exec_byte_code+9516>, 0x5555558584b5 <exec_byte_code+9625>, 0x555555858522 <exec_byte_code+9734>, 0x55555585858f <exec_byte_code+9843>, 0x5555558585de <exec_byte_code+9922>, 0x5555558586d8 <exec_byte_code+10172>, 0x555555858727 <exec_byte_code+10251>, 0x555555858776 <exec_byte_code+10330>, 0x5555558587c5 <exec_byte_code+10409>, 0x5555558588cb <exec_byte_code+10671>, 0x55555585723b <exec_byte_code+4895>, 0x555555858926 <exec_byte_code+10762>, 0x55555585896e <exec_byte_code+10834>, 0x555555858a30 <exec_byte_code+11028>, 0x555555858a99 <exec_byte_code+11133>, 0x555555858af4 <exec_byte_code+11224>, 0x555555858b3c <exec_byte_code+11296>, 0x555555858b7f <exec_byte_code+11363>, 0x555555858bc2 <exec_byte_code+11430>, 0x555555858c0d <exec_byte_code+11505>, 0x555555859a8f <exec_byte_code+15219>, 0x555555858c65 <exec_byte_code+11593>, 0x555555858ca8 <exec_byte_code+11660>, 0x555555858ceb <exec_byte_code+11727>, 0x555555858d2e <exec_byte_code+11794>, 0x555555858d71 <exec_byte_code+11861>, 0x555555858db4 <exec_byte_code+11928>, 0x55555585723b <exec_byte_code+4895>, 0x555555859a8f <exec_byte_code+15219>, 0x555555858dfc <exec_byte_code+12000>, 0x555555858e4e <exec_byte_code+12082>, 0x555555858e96 <exec_byte_code+12154>, 0x555555858ede <exec_byte_code+12226>, 0x555555858f46 <exec_byte_code+12330>, 0x555555858fae <exec_byte_code+12434>, 0x555555858ff6 <exec_byte_code+12506>, 0x5555558590b3 <exec_byte_code+12695>, 0x55555585911b <exec_byte_code+12799>, 0x555555859183 <exec_byte_code+12903>, 0x5555558591eb <exec_byte_code+13007>, 0x55555585922e <exec_byte_code+13074>, 0x555555859a8f <exec_byte_code+15219>, 0x555555857181 <exec_byte_code+4709>, 0x555555856d2b <exec_byte_code+3599>, 0x5555558565e4 <exec_byte_code+1736>, 0x555555856ddc <exec_byte_code+3776>, 0x555555856e60 <exec_byte_code+3908>, 0x555555856ee1 <exec_byte_code+4037>, 0x555555857135 <exec_byte_code+4633>, 0x55555585714a <exec_byte_code+4654>, 0x555555856a79 <exec_byte_code+2909>, 0x555555857204 <exec_byte_code+4840>, 0x555555857272 <exec_byte_code+4950>, 0x555555857303 <exec_byte_code+5095>, 0x55555585734c <exec_byte_code+5168>, 0x55555585752d <exec_byte_code+5649>, 0x5555558575aa <exec_byte_code+5774>, 0x55555585762f <exec_byte_code+5907>, 0x555555857695 <exec_byte_code+6009>, 0x555555856cdd <exec_byte_code+3521>, 0x555555859276 <exec_byte_code+13146>, 0x5555558592fb <exec_byte_code+13279>, 0x555555859343 <exec_byte_code+13351>, 0x55555585938b <exec_byte_code+13423>, 0x5555558593d3 <exec_byte_code+13495>, 0x55555585941b <exec_byte_code+13567>, 0x555555859483 <exec_byte_code+13671>, 0x5555558594eb <exec_byte_code+13775>, 0x555555859553 <exec_byte_code+13879>, 0x5555558595bb <exec_byte_code+13983>, 0x555555859704 <exec_byte_code+14312>, 0x55555585976c <exec_byte_code+14416>, 0x5555558597d4 <exec_byte_code+14520>, 0x55555585981c <exec_byte_code+14592>, 0x555555859884 <exec_byte_code+14696>, 0x5555558598ec <exec_byte_code+14800>, 0x555555859934 <exec_byte_code+14872>, 0x55555585997c <exec_byte_code+14944>, 0x555555858814 <exec_byte_code+10488>, 0x555555858863 <exec_byte_code+10567>, 0x5555558599cb <exec_byte_code+15023>, 0x555555859a2d <exec_byte_code+15121>, 0x555555859a8f <exec_byte_code+15219>, 0x555555856f62 <exec_byte_code+4166>, 0x555555856f7f <exec_byte_code+4195>, 0x555555856fee <exec_byte_code+4306>, 0x55555585705d <exec_byte_code+4417>, 0x5555558570c9 <exec_byte_code+4525>, 0x555555857c1d <exec_byte_code+7425>, 0x555555858104 <exec_byte_code+8680>, 0x5555558589b8 <exec_byte_code+10908>, 0x555555859c26 <exec_byte_code+15626>, 0x555555859c9b <exec_byte_code+15743>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859d31 <exec_byte_code+15893>, 0x555555859db8 <exec_byte_code+16028>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859f06 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 9
        bytestr_length = 40
        vectorp = 0x555557601b58
        quitcounter = 1 '\001'
        stack_items = 6
        sa_avail = 16296
        sa_count = 10
        alloc = 0x7fffffffcc80
        stack_base = 0x7fffffffcc80
        top = 0x7fffffffcc90
        stack_lim = 0x7fffffffccb0
        bytestr_data = 0x7fffffffccb0 "\300\301!\210p\211\211\205\026"
        pc = 0x7fffffffccce "\210\305 \210\210\306\307\310\"\207\371_\205UUU"
        count = 10
        result = XIL(0xe0d0)
#7  0x00005555557fdd22 in fetch_and_exec_byte_code (fun=XIL(0x555557601ba5), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffd340) at ../../master/src/eval.c:3036
#8  0x00005555557fe1a8 in funcall_lambda (fun=XIL(0x555557601ba5), nargs=0, arg_vector=0x7fffffffd340) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffd0f0)
        syms_left = make_fixnum(0)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 10
        i = 93824994985650
        optional = false
        rest = false
#9  0x00005555557fd57b in Ffuncall (nargs=1, args=0x7fffffffd338) at ../../master/src/eval.c:2916
        fun = XIL(0x555557601ba5)
        original_fun = XIL(0x17b5b60)
        funcar = XIL(0xffffd190)
        numargs = 0
        val = XIL(0)
        count = 9
#10 0x00005555557f166f in Ffuncall_interactively (nargs=1, args=0x7fffffffd338) at ../../master/src/callint.c:260
        speccount = 8
#11 0x00005555557fd960 in funcall_subr (subr=0x555555ddfca0 <Sfuncall_interactively>, numargs=1, args=0x7fffffffd338) at ../../master/src/eval.c:2967
#12 0x00005555557fd537 in Ffuncall (nargs=2, args=0x7fffffffd330) at ../../master/src/eval.c:2914
        fun = XIL(0x555555ddfca5)
        original_fun = XIL(0x70b0)
        funcar = XIL(0x7fffffffd260)
        numargs = 1
        val = XIL(0)
        count = 7
#13 0x00005555557fc220 in Fapply (nargs=3, args=0x7fffffffd330) at ../../master/src/eval.c:2497
        i = 2582733851120
        funcall_nargs = 24861632
        funcall_args = 0x0
        spread_arg = XIL(0)
        fun = XIL(0x70b0)
        sa_avail = 16384
        sa_count = 7
        numargs = 0
        retval = XIL(0x5555557f03af)
#14 0x00005555557f1ae4 in Fcall_interactively (function=XIL(0x17b5b60), record_flag=XIL(0), keys=XIL(0x555557e0a415)) at ../../master/src/callint.c:353
        funval = XIL(0x555557601ba5)
        events = 1526
        input = XIL(0)
        speccount = 6
        arg_from_tty = false
        key_count = 1
        record_then_fail = false
        save_this_command = XIL(0x17b5b60)
        save_this_original_command = XIL(0x17b5b60)
        save_real_this_command = XIL(0x17b5b60)
        save_last_command = XIL(0x17b5bc0)
        prefix_arg = XIL(0)
        enable = XIL(0)
        up_event = XIL(0)
        form = XIL(0x555558be6b73)
        specs = XIL(0)
        sa_avail = 93825001730176
        sa_count = 93824995577619
        string_len = 93824993913597
        string = 0x555557601ba5 ""
        string_end = 0x7fffffffd490 ""
        next_event = 93824994845699
        nargs = 0
        args = 0x0
        visargs = 0x0
        varies = 0x555555e63080 <lispsym> "\230\001"
        tem = 0x7fffffffd520 "\245\033`WUU"
        val = XIL(0)
#15 0x00005555557fdac9 in funcall_subr (subr=0x555555ddfce0 <Scall_interactively>, numargs=3, args=0x7fffffffd6d0) at ../../master/src/eval.c:2992
        internal_argbuf = {XIL(0x7fffffffd5e0), XIL(0x1000000000), XIL(0x555555ddfce0), XIL(0x7fffffffd5e8), make_fixnum(23456248746412), XIL(0x10557f4179), XIL(0x555555ddfce5), XIL(0x7fffffffd600)}
        internal_args = 0x7fffffffd6d0
#16 0x00005555557fd537 in Ffuncall (nargs=4, args=0x7fffffffd6c8) at ../../master/src/eval.c:2914
        fun = XIL(0x555555ddfce5)
        original_fun = XIL(0x2aaa9c7191d0)
        funcar = XIL(0x7fffffffd660)
        numargs = 3
        val = XIL(0x7fffffffd680)
        count = 5
#17 0x0000555555856bfa in exec_byte_code (bytestr=XIL(0x7ffff26110fc), vector=XIL(0x7ffff2610d65), maxdepth=make_fixnum(13), args_template=make_fixnum(1025), nargs=1, args=0x7fffffffdc40) at ../../master/src/bytecode.c:632
        op = 3
        type = CATCHER
        targets = {0x555555859a8f <exec_byte_code+15219>, 0x555555859ab4 <exec_byte_code+15256>, 0x555555859ab6 <exec_byte_code+15258>, 0x555555859ab8 <exec_byte_code+15260>, 0x555555859aba <exec_byte_code+15262>, 0x555555859aba <exec_byte_code+15262>, 0x555555859b1f <exec_byte_code+15363>, 0x555555859b93 <exec_byte_code+15479>, 0x5555558564ba <exec_byte_code+1438>, 0x5555558564bc <exec_byte_code+1440>, 0x5555558564be <exec_byte_code+1442>, 0x5555558564c0 <exec_byte_code+1444>, 0x5555558564c2 <exec_byte_code+1446>, 0x5555558564c2 <exec_byte_code+1446>, 0x5555558564c8 <exec_byte_code+1452>, 0x555555856489 <exec_byte_code+1389>, 0x5555558568e0 <exec_byte_code+2500>, 0x5555558568e2 <exec_byte_code+2502>, 0x5555558568e4 <exec_byte_code+2504>, 0x5555558568e6 <exec_byte_code+2506>, 0x5555558568e8 <exec_byte_code+2508>, 0x5555558568e8 <exec_byte_code+2508>, 0x55555585691d <exec_byte_code+2561>, 0x5555558568ee <exec_byte_code+2514>, 0x555555856b12 <exec_byte_code+3062>, 0x555555856b14 <exec_byte_code+3064>, 0x555555856b16 <exec_byte_code+3066>, 0x555555856b18 <exec_byte_code+3068>, 0x555555856b1a <exec_byte_code+3070>, 0x555555856b1a <exec_byte_code+3070>, 0x555555856acc <exec_byte_code+2992>, 0x555555856ae3 <exec_byte_code+3015>, 0x555555856bc7 <exec_byte_code+3243>, 0x555555856bc9 <exec_byte_code+3245>, 0x555555856bcb <exec_byte_code+3247>, 0x555555856bcd <exec_byte_code+3249>, 0x555555856bcf <exec_byte_code+3251>, 0x555555856bcf <exec_byte_code+3251>, 0x555555856b81 <exec_byte_code+3173>, 0x555555856b98 <exec_byte_code+3196>, 0x555555856c79 <exec_byte_code+3421>, 0x555555856c7b <exec_byte_code+3423>, 0x555555856c7d <exec_byte_code+3425>, 0x555555856c7f <exec_byte_code+3427>, 0x555555856c81 <exec_byte_code+3429>, 0x555555856c81 <exec_byte_code+3429>, 0x555555856c33 <exec_byte_code+3351>, 0x555555856c4a <exec_byte_code+3374>, 0x5555558574e1 <exec_byte_code+5573>, 0x5555558573c4 <exec_byte_code+5288>, 0x5555558573bb <exec_byte_code+5279>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x55555585771b <exec_byte_code+6143>, 0x555555857831 <exec_byte_code+6421>, 0x55555585788e <exec_byte_code+6514>, 0x5555558578ee <exec_byte_code+6610>, 0x555555857950 <exec_byte_code+6708>, 0x555555856739 <exec_byte_code+2077>, 0x5555558567b4 <exec_byte_code+2200>, 0x5555558579c9 <exec_byte_code+6829>, 0x555555856676 <exec_byte_code+1882>, 0x55555585681c <exec_byte_code+2304>, 0x555555857a31 <exec_byte_code+6933>, 0x555555857a99 <exec_byte_code+7037>, 0x555555857ae1 <exec_byte_code+7109>, 0x555555857b49 <exec_byte_code+7213>, 0x555555857baf <exec_byte_code+7315>, 0x555555857c95 <exec_byte_code+7545>, 0x555555857cdd <exec_byte_code+7617>, 0x555555857d45 <exec_byte_code+7721>, 0x555555857dca <exec_byte_code+7854>, 0x555555857e12 <exec_byte_code+7926>, 0x555555857e5a <exec_byte_code+7998>, 0x555555857ec2 <exec_byte_code+8102>, 0x555555857f2a <exec_byte_code+8206>, 0x555555857f92 <exec_byte_code+8310>, 0x555555858017 <exec_byte_code+8443>, 0x555555858066 <exec_byte_code+8522>, 0x5555558580b5 <exec_byte_code+8601>, 0x55555585817c <exec_byte_code+8800>, 0x555555858275 <exec_byte_code+9049>, 0x55555585836e <exec_byte_code+9298>, 0x5555558583db <exec_byte_code+9407>, 0x555555858448 <exec_byte_code+9516>, 0x5555558584b5 <exec_byte_code+9625>, 0x555555858522 <exec_byte_code+9734>, 0x55555585858f <exec_byte_code+9843>, 0x5555558585de <exec_byte_code+9922>, 0x5555558586d8 <exec_byte_code+10172>, 0x555555858727 <exec_byte_code+10251>, 0x555555858776 <exec_byte_code+10330>, 0x5555558587c5 <exec_byte_code+10409>, 0x5555558588cb <exec_byte_code+10671>, 0x55555585723b <exec_byte_code+4895>, 0x555555858926 <exec_byte_code+10762>, 0x55555585896e <exec_byte_code+10834>, 0x555555858a30 <exec_byte_code+11028>, 0x555555858a99 <exec_byte_code+11133>, 0x555555858af4 <exec_byte_code+11224>, 0x555555858b3c <exec_byte_code+11296>, 0x555555858b7f <exec_byte_code+11363>, 0x555555858bc2 <exec_byte_code+11430>, 0x555555858c0d <exec_byte_code+11505>, 0x555555859a8f <exec_byte_code+15219>, 0x555555858c65 <exec_byte_code+11593>, 0x555555858ca8 <exec_byte_code+11660>, 0x555555858ceb <exec_byte_code+11727>, 0x555555858d2e <exec_byte_code+11794>, 0x555555858d71 <exec_byte_code+11861>, 0x555555858db4 <exec_byte_code+11928>, 0x55555585723b <exec_byte_code+4895>, 0x555555859a8f <exec_byte_code+15219>, 0x555555858dfc <exec_byte_code+12000>, 0x555555858e4e <exec_byte_code+12082>, 0x555555858e96 <exec_byte_code+12154>, 0x555555858ede <exec_byte_code+12226>, 0x555555858f46 <exec_byte_code+12330>, 0x555555858fae <exec_byte_code+12434>, 0x555555858ff6 <exec_byte_code+12506>, 0x5555558590b3 <exec_byte_code+12695>, 0x55555585911b <exec_byte_code+12799>, 0x555555859183 <exec_byte_code+12903>, 0x5555558591eb <exec_byte_code+13007>, 0x55555585922e <exec_byte_code+13074>, 0x555555859a8f <exec_byte_code+15219>, 0x555555857181 <exec_byte_code+4709>, 0x555555856d2b <exec_byte_code+3599>, 0x5555558565e4 <exec_byte_code+1736>, 0x555555856ddc <exec_byte_code+3776>, 0x555555856e60 <exec_byte_code+3908>, 0x555555856ee1 <exec_byte_code+4037>, 0x555555857135 <exec_byte_code+4633>, 0x55555585714a <exec_byte_code+4654>, 0x555555856a79 <exec_byte_code+2909>, 0x555555857204 <exec_byte_code+4840>, 0x555555857272 <exec_byte_code+4950>, 0x555555857303 <exec_byte_code+5095>, 0x55555585734c <exec_byte_code+5168>, 0x55555585752d <exec_byte_code+5649>, 0x5555558575aa <exec_byte_code+5774>, 0x55555585762f <exec_byte_code+5907>, 0x555555857695 <exec_byte_code+6009>, 0x555555856cdd <exec_byte_code+3521>, 0x555555859276 <exec_byte_code+13146>, 0x5555558592fb <exec_byte_code+13279>, 0x555555859343 <exec_byte_code+13351>, 0x55555585938b <exec_byte_code+13423>, 0x5555558593d3 <exec_byte_code+13495>, 0x55555585941b <exec_byte_code+13567>, 0x555555859483 <exec_byte_code+13671>, 0x5555558594eb <exec_byte_code+13775>, 0x555555859553 <exec_byte_code+13879>, 0x5555558595bb <exec_byte_code+13983>, 0x555555859704 <exec_byte_code+14312>, 0x55555585976c <exec_byte_code+14416>, 0x5555558597d4 <exec_byte_code+14520>, 0x55555585981c <exec_byte_code+14592>, 0x555555859884 <exec_byte_code+14696>, 0x5555558598ec <exec_byte_code+14800>, 0x555555859934 <exec_byte_code+14872>, 0x55555585997c <exec_byte_code+14944>, 0x555555858814 <exec_byte_code+10488>, 0x555555858863 <exec_byte_code+10567>, 0x5555558599cb <exec_byte_code+15023>, 0x555555859a2d <exec_byte_code+15121>, 0x555555859a8f <exec_byte_code+15219>, 0x555555856f62 <exec_byte_code+4166>, 0x555555856f7f <exec_byte_code+4195>, 0x555555856fee <exec_byte_code+4306>, 0x55555585705d <exec_byte_code+4417>, 0x5555558570c9 <exec_byte_code+4525>, 0x555555857c1d <exec_byte_code+7425>, 0x555555858104 <exec_byte_code+8680>, 0x5555558589b8 <exec_byte_code+10908>, 0x555555859c26 <exec_byte_code+15626>, 0x555555859c9b <exec_byte_code+15743>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859d31 <exec_byte_code+15893>, 0x555555859db8 <exec_byte_code+16028>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859a8f <exec_byte_code+15219>, 0x555555859f06 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 24
        bytestr_length = 138
        vectorp = 0x7ffff2610d68
        quitcounter = 1 '\001'
        stack_items = 14
        sa_avail = 16134
        sa_count = 5
        alloc = 0x7fffffffd690
        stack_base = 0x7fffffffd690
        top = 0x7fffffffd6c8
        stack_lim = 0x7fffffffd700
        bytestr_data = 0x7fffffffd700 "\304\020\211?\205\023"
        pc = 0x7fffffffd762 "\006\006\071\203\211"
        count = 5
        result = XIL(0)
#18 0x00005555557fdd22 in fetch_and_exec_byte_code (fun=XIL(0x7ffff2610d35), syms_left=make_fixnum(1025), nargs=1, args=0x7fffffffdc38) at ../../master/src/eval.c:3036
#19 0x00005555557fe1a8 in funcall_lambda (fun=XIL(0x7ffff2610d35), nargs=1, arg_vector=0x7fffffffdc38) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffdbb0)
        syms_left = make_fixnum(1025)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 5
        i = 93824994985650
        optional = false
        rest = false
#20 0x00005555557fd57b in Ffuncall (nargs=2, args=0x7fffffffdc30) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff2610d35)
        original_fun = XIL(0x4470)
        funcar = XIL(0)
        numargs = 1
        val = XIL(0x7fffffffdc58)
        count = 4
#21 0x00005555557fcd45 in call1 (fn=XIL(0x4470), arg1=XIL(0x17b5b60)) at ../../master/src/eval.c:2774
#22 0x00005555557216bb in command_loop_1 () at ../../master/src/keyboard.c:1466
        scount = 3
        cmd = XIL(0x17b5b60)
        keybuf = {make_fixnum(113), XIL(0x7ffff2c1d0cd), XIL(0), XIL(0), XIL(0x7fffffffdd20), XIL(0x5555557fcdcf), XIL(0), XIL(0x7ffff25734c4), XIL(0x5555588c73b3), XIL(0), XIL(0x555555e63080), XIL(0), XIL(0x7fffffffdd00), XIL(0x55555571d4cf), XIL(0), XIL(0), XIL(0x555555e63080), XIL(0), XIL(0x7fffffffdd30), XIL(0x5555557f4179), XIL(0), XIL(0x555555e63080), XIL(0), XIL(0), XIL(0x7fffffffdd50), XIL(0x5555557f41cd), make_fixnum(2), make_fixnum(0), XIL(0x7fffffffdd90), XIL(0x5555557f9833)}
        i = 1
        prev_modiff = 60
        prev_buffer = 0x5555573fd880
        already_adjusted = false
#23 0x00005555557f92f3 in internal_condition_case (bfun=0x555555720e65 <command_loop_1>, handlers=XIL(0x90), hfun=0x555555720488 <cmd_error>) at ../../master/src/eval.c:1439
        val = XIL(0x5555560c2d73)
        c = 0x555555f5e8f0
#24 0x0000555555720a55 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#25 0x00005555557f8703 in internal_catch (tag=XIL(0xd9e0), func=0x555555720a28 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555f47770
#26 0x00005555557209f4 in command_loop () at ../../master/src/keyboard.c:1073
#27 0x000055555571ff71 in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf00)
#28 0x0000555555720168 in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#29 0x000055555571c04d in main (argc=2, argv=0x7fffffffe168) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"kill-buffer" (0xffffcc98)
"gnus-server-exit" (0xffffd340)
"funcall-interactively" (0xffffd338)
"call-interactively" (0xffffd6d0)
"command-execute" (0xffffdc38)


-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-05 18:15                                                                                                     ` Michael Welsh Duggan
@ 2021-04-05 18:45                                                                                                       ` martin rudalics
  2021-04-05 19:57                                                                                                         ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-05 18:45 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

 > buffer_window_count of the *Server* buffer was 1.  There were three
 > frames that we looped over in the FOR_EACH_FRAME() loop.  Of these, only
 > the first is interesting.  In this case window_list_1() in window_loop()
 > returned three windows.  For each window, in the
 > REPLACE_BUFFER_IN_WINDOWS_SAFELY case branch, EQ (w->contents, obj)
 > returned false.  As a result, best_window is Qnil at the end, and
 > replace-buffer_in_windows_safely_count never gets incremented.  For the
 > other two frames the return value of window_list_1() was Qnil.

Astonishing.  What are the names of these three buffers via

p XBUFFER (w->contents)->name_

Do they tell you anything about the Gnus configuration you wanted to
quit?  I wouldn't be surprised if one of these were a dead buffer.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-05 18:45                                                                                                       ` martin rudalics
@ 2021-04-05 19:57                                                                                                         ` Michael Welsh Duggan
  2021-04-05 20:39                                                                                                           ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-05 19:57 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > buffer_window_count of the *Server* buffer was 1.  There were three
>  > frames that we looped over in the FOR_EACH_FRAME() loop.  Of these, only
>  > the first is interesting.  In this case window_list_1() in window_loop()
>  > returned three windows.  For each window, in the
>  > REPLACE_BUFFER_IN_WINDOWS_SAFELY case branch, EQ (w->contents, obj)
>  > returned false.  As a result, best_window is Qnil at the end, and
>  > replace-buffer_in_windows_safely_count never gets incremented.  For the
>  > other two frames the return value of window_list_1() was Qnil.
>
> Astonishing.  What are the names of these three buffers via
>
> p XBUFFER (w->contents)->name_
>
> Do they tell you anything about the Gnus configuration you wanted to
> quit?  I wouldn't be surprised if one of these were a dead buffer.

Surprisingly, no.  Three frames were checked.  The only buffers in
windows involved in the entire process were:

"build.ninja"  - I had that file in another frame
" *Minibuf-0*" - Looks like this was in the same frame as build.ninja?
"*Server*"     - This was the window whose buffer is being deleted
"*scratch*"    - The only window in the third frame

I trace through everything in detail here.  Maybe too much detail.
Maybe not enough.  Hopefully you can follow this session by following
the line numbers (mostly in window.c) and see what is going on.  The gdb
session, of course, still exists, and I now know I can recursively "call
replace-buffer_in_windows_safely(XIL(0x5555573fd885))" to trace through
it again, if you need me to.

(gdb) s
3443          if (buffer_window_count (XBUFFER (buffer)))
(gdb) n
3450              FOR_EACH_FRAME (tail, frame)
(gdb) n
3451                window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
(gdb) s
window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, obj=XIL(0x5555573fd885), 
    mini=true, frames=XIL(0x55555820ef55)) at ../../master/src/window.c:2967
2967      bool frame_best_window_flag = false;
(gdb) n
2973      if (FRAMEP (frames))
(gdb) 
2974        f = XFRAME (frames);
(gdb) 
2980      if (f)
(gdb) 
2981        frame_arg = Qlambda;
(gdb) 
2994      if (WINDOWP (obj))
(gdb) n
2996      else if (f)
(gdb) n
2997        window = FRAME_SELECTED_WINDOW (f);
(gdb) n
3001      windows = window_list_1 (window, mini ? Qt : Qnil, frame_arg);
(gdb) n
3002      best_window = Qnil;
(gdb) p windows
$52 = XIL(0x555558be6443)
(gdb) ptype
type = union Lisp_X {
    <incomplete type>
} *
(gdb) n
3004      for (; CONSP (windows); windows = XCDR (windows))
(gdb) n
3008          window = XCAR (windows);
(gdb) n
3009          w = XWINDOW (window);
(gdb) n
3014          if (!MINI_WINDOW_P (w)
(gdb) p w->contents
$53 = XIL(0x5555578be555)
(gdb) xbuffer
$54 = (struct buffer *) 0x5555578be550
0x555557241db0 "build.ninja"
(gdb) n
3046                if (EQ (w->contents, obj))
(gdb) p obj
$55 = XIL(0x5555573fd885)
(gdb) xbuffer
$56 = (struct buffer *) 0x5555573fd880
0x5555571c18a0 "*Server*"
(gdb) n
3063                break;
(gdb) n
3004      for (; CONSP (windows); windows = XCDR (windows))
(gdb) n
3008          window = XCAR (windows);
(gdb) n
3009          w = XWINDOW (window);
(gdb) n
3014          if (!MINI_WINDOW_P (w)
(gdb) p w->contents
$57 = XIL(0x7ffff2a3cb15)
(gdb) xbuffer
$58 = (struct buffer *) 0x7ffff2a3cb10
0x7ffff2d244ea " *Minibuf-0*"
(gdb) n
3017              || type == REPLACE_BUFFER_IN_WINDOWS_SAFELY
(gdb) 
3046                if (EQ (w->contents, obj))
(gdb) 
3063                break;
(gdb) 
3004      for (; CONSP (windows); windows = XCDR (windows))
(gdb) 
3097      return best_window;
(gdb) 
3098    }
(gdb) 
replace_buffer_in_windows_safely (buffer=XIL(0x5555573fd885))
    at ../../master/src/window.c:3450
3450              FOR_EACH_FRAME (tail, frame)
(gdb) 
3451                window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
(gdb) s
window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, obj=XIL(0x5555573fd885), 
    mini=true, frames=XIL(0x555556fa294d)) at ../../master/src/window.c:2967
2967      bool frame_best_window_flag = false;
(gdb) n
2973      if (FRAMEP (frames))
(gdb) 
2974        f = XFRAME (frames);
(gdb) 
2980      if (f)
(gdb) 
2981        frame_arg = Qlambda;
(gdb) 
2994      if (WINDOWP (obj))
(gdb) 
2996      else if (f)
(gdb) 
2997        window = FRAME_SELECTED_WINDOW (f);
(gdb) 
3001      windows = window_list_1 (window, mini ? Qt : Qnil, frame_arg);
(gdb) p window
$59 = XIL(0x55555734b355)
(gdb) xwindow
$60 = (struct window *) 0x55555734b350
84x59+0+0
(gdb) p $60->contents
$61 = XIL(0x5555573fd885)
(gdb) xbuffer
$62 = (struct buffer *) 0x5555573fd880
0x5555571c18a0 "*Server*"
(gdb) s
builtin_lisp_symbol (index=1) at ../../master/src/lisp.h:1007
1007      return make_lisp_symbol (&lispsym[index]);
(gdb) n
1008    }
(gdb) s
window_list_1 (window=XIL(0x55555734b355), minibuf=XIL(0x30), 
    all_frames=XIL(0xc0)) at ../../master/src/window.c:2863
2863      decode_next_window_args (&window, &minibuf, &all_frames);
(gdb) s
decode_next_window_args (window=0x7fffffffc858, minibuf=0x7fffffffc850, 
    all_frames=0x7fffffffc848) at ../../master/src/window.c:2672
2672      struct window *w = decode_live_window (*window);
(gdb) s
decode_live_window (window=XIL(0x55555734b355))
    at ../../master/src/window.c:246
246       if (NILP (window))
(gdb) n
249       CHECK_LIVE_WINDOW (window);
(gdb) n
250       return XWINDOW (window);
(gdb) n
251     }
(gdb) n
decode_next_window_args (window=0x7fffffffc858, minibuf=0x7fffffffc850, 
    all_frames=0x7fffffffc848) at ../../master/src/window.c:2673
2673      Lisp_Object miniwin = XFRAME (w->frame)->minibuffer_window;
(gdb) p w->contents
$63 = XIL(0x5555573fd885)
(gdb) xbuffer
$64 = (struct buffer *) 0x5555573fd880
0x5555571c18a0 "*Server*"
(gdb) n
2675      XSETWINDOW (*window, w);
(gdb) n
2678      if (NILP (*minibuf))
(gdb) n
2682      else if (!EQ (*minibuf, Qt))
(gdb) n
2690      if (NILP (*all_frames))
(gdb) n
2695      else if (EQ (*all_frames, Qvisible))
(gdb) n
2697      else if (EQ (*all_frames, make_fixnum (0)))
(gdb) n
2699      else if (FRAMEP (*all_frames))
(gdb) n
2701      else if (!EQ (*all_frames, Qt))
(gdb) n
2702        *all_frames = Qnil;
(gdb) n
2703    }
(gdb) n
window_list_1 (window=XIL(0x55555734b355), minibuf=XIL(0x30), 
    all_frames=XIL(0)) at ../../master/src/window.c:2864
2864      list = Qnil;
(gdb) n
2866      for (tail = window_list (); CONSP (tail); tail = XCDR (tail))
(gdb) s
window_list () at ../../master/src/window.c:2563
2563      if (!CONSP (Vwindow_list))
(gdb) n
2581      return Vwindow_list;
(gdb) p Vwindow_list
$65 = XIL(0x555558bc6353)
(gdb) ptype
type = union Lisp_X {
    <incomplete type>
} *
(gdb) xcons
$66 = (struct Lisp_Cons *) 0x555558bc6350
{
  u = {
    s = {
      car = XIL(0x5555571ebfc5),
      u = {
        cdr = XIL(0x555558bc6363),
        chain = 0x555558bc6363
      }
    },
    gcaligned = 0xc5
  }
}
(gdb) n
2582    }
(gdb) n
window_list_1 (window=XIL(0x55555734b355), minibuf=XIL(0x30), 
    all_frames=XIL(0)) at ../../master/src/window.c:2867
2867        if (candidate_window_p (XCAR (tail), window, minibuf, all_frames))
(gdb) s
candidate_window_p (window=XIL(0x5555571ebfc5), owindow=XIL(0x55555734b355), 
    minibuf=XIL(0x30), all_frames=XIL(0)) at ../../master/src/window.c:2605
2605      struct window *w = XWINDOW (window);
(gdb) n
2606      struct frame *f = XFRAME (w->frame);
(gdb) p w->contents
$67 = XIL(0x5555578be555)
(gdb) xbuffer
$68 = (struct buffer *) 0x5555578be550
0x555557241db0 "build.ninja"
(gdb) n
2607      bool candidate_p = true;
(gdb) 
2609      if (!BUFFERP (w->contents))
(gdb) 
2611      else if (MINI_WINDOW_P (w)
(gdb) 
2619      else if (EQ (all_frames, Qt))
(gdb) 
2621      else if (NILP (all_frames))
(gdb) 
2623          eassert (WINDOWP (owindow));
(gdb) n
2624          candidate_p = EQ (w->frame, XWINDOW (owindow)->frame);
(gdb) n
2661      return candidate_p;
(gdb) p candidate_p
$69 = false
(gdb) n
2662    }
(gdb) n
window_list_1 (window=XIL(0x55555734b355), minibuf=XIL(0x30), 
    all_frames=XIL(0)) at ../../master/src/window.c:2866
2866      for (tail = window_list (); CONSP (tail); tail = XCDR (tail))
(gdb) n
2867        if (candidate_window_p (XCAR (tail), window, minibuf, all_frames))
(gdb) s
candidate_window_p (window=XIL(0x55555820f3cd), owindow=XIL(0x55555734b355), 
    minibuf=XIL(0x30), all_frames=XIL(0)) at ../../master/src/window.c:2605
2605      struct window *w = XWINDOW (window);
(gdb) n
2606      struct frame *f = XFRAME (w->frame);
(gdb) p w->contents
$70 = XIL(0x7ffff2a3cb15)
(gdb) xbuffer
$71 = (struct buffer *) 0x7ffff2a3cb10
0x7ffff2d244ea " *Minibuf-0*"
(gdb) n
2607      bool candidate_p = true;
(gdb) n
2609      if (!BUFFERP (w->contents))
(gdb) n
2611      else if (MINI_WINDOW_P (w)
(gdb) n
2612               && (EQ (minibuf, Qlambda)
(gdb) n
2613                   || (WINDOWP (minibuf) && !EQ (minibuf, window))))
(gdb) n
2619      else if (EQ (all_frames, Qt))
(gdb) n
2621      else if (NILP (all_frames))
(gdb) n
2623          eassert (WINDOWP (owindow));
(gdb) n
2624          candidate_p = EQ (w->frame, XWINDOW (owindow)->frame);
(gdb) n
2661      return candidate_p;
(gdb) p candidate_p
$72 = false
(gdb) n
2662    }
(gdb) 
window_list_1 (window=XIL(0x55555734b355), minibuf=XIL(0x30), 
    all_frames=XIL(0)) at ../../master/src/window.c:2866
2866      for (tail = window_list (); CONSP (tail); tail = XCDR (tail))
(gdb) 
2871      list = Fnreverse (list);
(gdb) n
2872      rest = Fmemq (window, list);
(gdb) p list
$73 = XIL(0)
(gdb) n
2873      if (!NILP (rest) && !EQ (rest, list))
(gdb) p rest
$74 = XIL(0)
(gdb) n
2880      return list;
(gdb) n
2881    }
(gdb) n
window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, obj=XIL(0x5555573fd885), 
    mini=true, frames=XIL(0x555556fa294d)) at ../../master/src/window.c:3002
3002      best_window = Qnil;
(gdb) p windows
$75 = XIL(0)
(gdb) p window
$76 = XIL(0x55555734b355)
(gdb) xwindow
$77 = (struct window *) 0x55555734b350
84x59+0+0
(gdb) p $77->contents
$78 = XIL(0x5555573fd885)
(gdb) xbuffer
$79 = (struct buffer *) 0x5555573fd880
0x5555571c18a0 "*Server*"
(gdb) n
3004      for (; CONSP (windows); windows = XCDR (windows))
(gdb) 
3097      return best_window;
(gdb) 
3098    }
(gdb) 
replace_buffer_in_windows_safely (buffer=XIL(0x5555573fd885))
    at ../../master/src/window.c:3450
3450              FOR_EACH_FRAME (tail, frame)
(gdb) 
3451                window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
(gdb) s
window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, obj=XIL(0x5555573fd885), 
    mini=true, frames=XIL(0x555555eff9dd)) at ../../master/src/window.c:2967
2967      bool frame_best_window_flag = false;
(gdb) n
2973      if (FRAMEP (frames))
(gdb) 
2974        f = XFRAME (frames);
(gdb) 
2980      if (f)
(gdb) 
2981        frame_arg = Qlambda;
(gdb) 
2994      if (WINDOWP (obj))
(gdb) 
2996      else if (f)
(gdb) 
2997        window = FRAME_SELECTED_WINDOW (f);
(gdb) 
3001      windows = window_list_1 (window, mini ? Qt : Qnil, frame_arg);
(gdb) p window
$80 = XIL(0x555555effc45)
(gdb) xwindow
$81 = (struct window *) 0x555555effc40
80x23+0+1
(gdb) p $81->contents
$82 = XIL(0x7ffff256f6fd)
(gdb) xbuffer
$83 = (struct buffer *) 0x7ffff256f6f8
0x7ffff2d2003a "*scratch*"
(gdb) s
builtin_lisp_symbol (index=1) at ../../master/src/lisp.h:1007
1007      return make_lisp_symbol (&lispsym[index]);
(gdb) n
1008    }
(gdb) s
window_list_1 (window=XIL(0x555555effc45), minibuf=XIL(0x30), 
    all_frames=XIL(0xc0)) at ../../master/src/window.c:2863
2863      decode_next_window_args (&window, &minibuf, &all_frames);
(gdb) n
2864      list = Qnil;
(gdb) 
2866      for (tail = window_list (); CONSP (tail); tail = XCDR (tail))
(gdb) 
2867        if (candidate_window_p (XCAR (tail), window, minibuf, all_frames))
(gdb) s
candidate_window_p (window=XIL(0x5555571ebfc5), owindow=XIL(0x555555effc45), 
    minibuf=XIL(0x30), all_frames=XIL(0)) at ../../master/src/window.c:2605
2605      struct window *w = XWINDOW (window);
(gdb) n
2606      struct frame *f = XFRAME (w->frame);
(gdb) p w->contents
$87 = XIL(0x5555578be555)
(gdb) xbuffer
$88 = (struct buffer *) 0x5555578be550
0x555557241db0 "build.ninja"
(gdb) n
2607      bool candidate_p = true;
(gdb) n
2609      if (!BUFFERP (w->contents))
(gdb) n
2611      else if (MINI_WINDOW_P (w)
(gdb) n
2619      else if (EQ (all_frames, Qt))
(gdb) n
2621      else if (NILP (all_frames))
(gdb) n
2623          eassert (WINDOWP (owindow));
(gdb) n
2624          candidate_p = EQ (w->frame, XWINDOW (owindow)->frame);
(gdb) n
2661      return candidate_p;
(gdb) p candidate_p
$89 = false
(gdb) n
2662    }
(gdb) n
window_list_1 (window=XIL(0x555555effc45), minibuf=XIL(0x30), 
    all_frames=XIL(0)) at ../../master/src/window.c:2866
2866      for (tail = window_list (); CONSP (tail); tail = XCDR (tail))
(gdb) n
2867        if (candidate_window_p (XCAR (tail), window, minibuf, all_frames))
(gdb) s
candidate_window_p (window=XIL(0x55555820f3cd), owindow=XIL(0x555555effc45), 
    minibuf=XIL(0x30), all_frames=XIL(0)) at ../../master/src/window.c:2605
2605      struct window *w = XWINDOW (window);
(gdb) n
2606      struct frame *f = XFRAME (w->frame);
(gdb) p w->contents
$90 = XIL(0x7ffff2a3cb15)
(gdb) xbuffer
$91 = (struct buffer *) 0x7ffff2a3cb10
0x7ffff2d244ea " *Minibuf-0*"
(gdb) n
2607      bool candidate_p = true;
(gdb) n
2609      if (!BUFFERP (w->contents))
(gdb) n
2611      else if (MINI_WINDOW_P (w)
(gdb) n
2612               && (EQ (minibuf, Qlambda)
(gdb) n
2613                   || (WINDOWP (minibuf) && !EQ (minibuf, window))))
(gdb) n
2619      else if (EQ (all_frames, Qt))
(gdb) n
2621      else if (NILP (all_frames))
(gdb) n
2623          eassert (WINDOWP (owindow));
(gdb) n
2624          candidate_p = EQ (w->frame, XWINDOW (owindow)->frame);
(gdb) n
2661      return candidate_p;
(gdb) p candidate_p
$92 = false
(gdb) n
2662    }
(gdb) n
window_list_1 (window=XIL(0x555555effc45), minibuf=XIL(0x30), 
    all_frames=XIL(0)) at ../../master/src/window.c:2866
2866      for (tail = window_list (); CONSP (tail); tail = XCDR (tail))
(gdb) n
2871      list = Fnreverse (list);
(gdb) n
2872      rest = Fmemq (window, list);
(gdb) n
2873      if (!NILP (rest) && !EQ (rest, list))
(gdb) n
2880      return list;
(gdb) p list
$93 = XIL(0)
(gdb) n
2881    }
(gdb) n
window_loop (type=REPLACE_BUFFER_IN_WINDOWS_SAFELY, obj=XIL(0x5555573fd885), 
    mini=true, frames=XIL(0x555555eff9dd)) at ../../master/src/window.c:3002
3002      best_window = Qnil;
(gdb) n
3004      for (; CONSP (windows); windows = XCDR (windows))
(gdb) n
3097      return best_window;
(gdb) n
3098    }
(gdb) n
replace_buffer_in_windows_safely (buffer=XIL(0x5555573fd885))
    at ../../master/src/window.c:3450
3450              FOR_EACH_FRAME (tail, frame)
(gdb) n
3454          eassert (count == replace_buffer_in_windows_safely_count);
(gdb) p count
$94 = 1
(gdb) p replace_buffer_in_windows_safely_count 
$95 = 0

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-05 19:57                                                                                                         ` Michael Welsh Duggan
@ 2021-04-05 20:39                                                                                                           ` martin rudalics
  2021-04-05 20:56                                                                                                             ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-05 20:39 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

 > Surprisingly, no.  Three frames were checked.  The only buffers in
 > windows involved in the entire process were:
 >
 > "build.ninja"  - I had that file in another frame
 > " *Minibuf-0*" - Looks like this was in the same frame as build.ninja?
 > "*Server*"     - This was the window whose buffer is being deleted

But *Server* _is_ the buffer that shall be killed IIUC - the obj passed
to window_loop.  I nowhere see that you tried

p XBUFFER (w->contents)->name_

below.  Basically when you encounter the

if (EQ (w->contents, obj))

eventually w->contents should be that buffer.  And apparently
w->contents never is that buffer.  Can you check again?

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-05 20:39                                                                                                           ` martin rudalics
@ 2021-04-05 20:56                                                                                                             ` Michael Welsh Duggan
  2021-04-06  8:10                                                                                                               ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-05 20:56 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>> Surprisingly, no.  Three frames were checked.  The only buffers in
>> windows involved in the entire process were:
>>
>> "build.ninja"  - I had that file in another frame
>> " *Minibuf-0*" - Looks like this was in the same frame as build.ninja?
>> "*Server*"     - This was the window whose buffer is being deleted
>
> But *Server* _is_ the buffer that shall be killed IIUC - the obj passed
> to window_loop.  I nowhere see that you tried
>
> p XBUFFER (w->contents)->name_
>
> below.  Basically when you encounter the
>
> if (EQ (w->contents, obj))
>
> eventually w->contents should be that buffer.  And apparently
> w->contents never is that buffer.  Can you check again?

Actually, what I did is use xbuffer, which as part of it outputs the
name_.  For example:

(gdb) p w->contents
$53 = XIL(0x5555578be555)
(gdb) xbuffer
$54 = (struct buffer *) 0x5555578be550
0x555557241db0 "build.ninja"

In this case the name_ field is "build.ninja".  The definition of
xbuffer is:

define xbuffer
  xgetptr $
  print (struct buffer *) $ptr
  xgetptr $->name_
  output $ptr ? (char *) ((struct Lisp_String *) $ptr)->u.s.data : "DEAD"
  echo \n
end
document xbuffer
Set $ as a buffer pointer and the name of the buffer.
This command assumes $ is an Emacs Lisp buffer value.
end

When window_list_1() gets called with the window that has "*Server*" as
the buffer, window_list() (as called on line 2866) does not return a
list that contains that window.  I do not know how Vwindow_list (which
is what is returned by window_list() gets updated.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-05 20:56                                                                                                             ` Michael Welsh Duggan
@ 2021-04-06  8:10                                                                                                               ` martin rudalics
  2021-04-06 14:40                                                                                                                 ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-06  8:10 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

 > Actually, what I did is use xbuffer, which as part of it outputs the
 > name_.  For example:
 >
 > (gdb) p w->contents
 > $53 = XIL(0x5555578be555)
 > (gdb) xbuffer
 > $54 = (struct buffer *) 0x5555578be550
 > 0x555557241db0 "build.ninja"
 >
 > In this case the name_ field is "build.ninja".  The definition of
 > xbuffer is:

OK.  But please let me reassess what you said earlier:

 > There were three
 > frames that we looped over in the FOR_EACH_FRAME() loop.  Of these, only
 > the first is interesting.  In this case window_list_1() in window_loop()
 > returned three windows.  For each window, in the
 > REPLACE_BUFFER_IN_WINDOWS_SAFELY case branch, EQ (w->contents, obj)
 > returned false.

So if one of these three windows on the first frame shows (showed)
"build.ninja" then what do (did) the other two windows show?

 > As a result, best_window is Qnil at the end, and
 > replace-buffer_in_windows_safely_count never gets incremented.  For the
 > other two frames the return value of window_list_1() was Qnil.

The latter could be another problem but should not concern us for the
moment - do these frames get killed in the course?

 > When window_list_1() gets called with the window that has "*Server*" as
 > the buffer, window_list() (as called on line 2866) does not return a
 > list that contains that window.  I do not know how Vwindow_list (which
 > is what is returned by window_list() gets updated.

Vwindow_list is a cache of the list of all windows and is (re-)built by
window_list when it is nil.  It is set to nil (that is, the cache gets
invalidated) whenever a window is deleted or created.  What is the value
of Vwindow_list when window_list_1() gets called with the window that
has "*Server*" as the buffer?

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-06  8:10                                                                                                               ` martin rudalics
@ 2021-04-06 14:40                                                                                                                 ` Michael Welsh Duggan
  2021-04-06 16:12                                                                                                                   ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-06 14:40 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>> Actually, what I did is use xbuffer, which as part of it outputs the
>> name_.  For example:
>>
>> (gdb) p w->contents
>> $53 = XIL(0x5555578be555)
>> (gdb) xbuffer
>> $54 = (struct buffer *) 0x5555578be550
>> 0x555557241db0 "build.ninja"
>>
>> In this case the name_ field is "build.ninja".  The definition of
>> xbuffer is:
>
> OK.  But please let me reassess what you said earlier:
>
>> There were three
>> frames that we looped over in the FOR_EACH_FRAME() loop.  Of these, only
>> the first is interesting.  In this case window_list_1() in window_loop()
>> returned three windows.  For each window, in the
>> REPLACE_BUFFER_IN_WINDOWS_SAFELY case branch, EQ (w->contents, obj)
>> returned false.
>
> So if one of these three windows on the first frame shows (showed)
> "build.ninja" then what do (did) the other two windows show?

I was somewhat incorrect.  The first frame has two windows: build.ninja
and a minibuffer.  See below for more.

>> As a result, best_window is Qnil at the end, and
>> replace-buffer_in_windows_safely_count never gets incremented.  For the
>> other two frames the return value of window_list_1() was Qnil.
>
> The latter could be another problem but should not concern us for the
> moment - do these frames get killed in the course?

The two frames that returned no windows were the invisible daemon frame
"F1" and the frame containing the window containing the "*Server*"
buffer.

>> When window_list_1() gets called with the window that has "*Server*" as
>> the buffer, window_list() (as called on line 2866) does not return a
>> list that contains that window.  I do not know how Vwindow_list (which
>> is what is returned by window_list() gets updated.
>
> Vwindow_list is a cache of the list of all windows and is (re-)built by
> window_list when it is nil.  It is set to nil (that is, the cache gets
> invalidated) whenever a window is deleted or created.  What is the value
> of Vwindow_list when window_list_1() gets called with the window that
> has "*Server*" as the buffer?

Here is the state as I've been able to determine from the debugger:

Vframe_list contains three entries: "build.ninja", "*Server*", and
"F1".  This matches reality.  "F1" is the invisible frame created by
--daemon.

Frame "build.ninja" has a selected_window whose contents are the buffer
"build.ninja".

Frame "*Server*" has a selected_window whose contents are the buffer
"*Server*".

Frame "F1" has a selected_window whose contents are the buffer
"*scratch*".

Vwindow_list contains two entries: A window whose contents are
"build.ninja", and a window whose contents are " *Minibuf-0*".

Importantly, Vwindow_list does not contain the window whose contents are
"*Server*".  Since the window_list_1() call uses the value of
Vwindow_list to create its result, the loop in window_loop() will never
compare EQ in the REPLACE_BUFFER_IN_WINDOWS_SAFELY case clause.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-06 14:40                                                                                                                 ` Michael Welsh Duggan
@ 2021-04-06 16:12                                                                                                                   ` martin rudalics
  2021-04-06 16:48                                                                                                                     ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-06 16:12 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

 > Here is the state as I've been able to determine from the debugger:
 >
 > Vframe_list contains three entries: "build.ninja", "*Server*", and
 > "F1".  This matches reality.  "F1" is the invisible frame created by
 > --daemon.
 >
 > Frame "build.ninja" has a selected_window whose contents are the buffer
 > "build.ninja".
 >
 > Frame "*Server*" has a selected_window whose contents are the buffer
 > "*Server*".
 >
 > Frame "F1" has a selected_window whose contents are the buffer
 > "*scratch*".
 >
 > Vwindow_list contains two entries: A window whose contents are
 > "build.ninja", and a window whose contents are " *Minibuf-0*".
 >
 > Importantly, Vwindow_list does not contain the window whose contents are
 > "*Server*".  Since the window_list_1() call uses the value of
 > Vwindow_list to create its result, the loop in window_loop() will never
 > compare EQ in the REPLACE_BUFFER_IN_WINDOWS_SAFELY case clause.

Impressive, thanks.  This means that if earlier everything worked as
intended someone did

(1) set Vwindow_list to nil (because otherwise the *Server* window would
     still figure in it), and

(2) window_list () recreated Vwindow_list but did _not_ include the
     *Server* window.

The mysterious aspect is (2): Why did window_list skip the *Server*
window?  What is the value of FRAME_ROOT_WINDOW (f) where f is the
*Server* frame?  What is the name of that window's buffer?  IIUC the
*Server* frame does not have a minibuffer window - correct?

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-06 16:12                                                                                                                   ` martin rudalics
@ 2021-04-06 16:48                                                                                                                     ` Michael Welsh Duggan
  2021-04-06 17:00                                                                                                                       ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-06 16:48 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > Here is the state as I've been able to determine from the debugger:
>  >
>  > Vframe_list contains three entries: "build.ninja", "*Server*", and
>  > "F1".  This matches reality.  "F1" is the invisible frame created by
>  > --daemon.
>  >
>  > Frame "build.ninja" has a selected_window whose contents are the buffer
>  > "build.ninja".
>  >
>  > Frame "*Server*" has a selected_window whose contents are the buffer
>  > "*Server*".
>  >
>  > Frame "F1" has a selected_window whose contents are the buffer
>  > "*scratch*".
>  >
>  > Vwindow_list contains two entries: A window whose contents are
>  > "build.ninja", and a window whose contents are " *Minibuf-0*".
>  >
>  > Importantly, Vwindow_list does not contain the window whose contents are
>  > "*Server*".  Since the window_list_1() call uses the value of
>  > Vwindow_list to create its result, the loop in window_loop() will never
>  > compare EQ in the REPLACE_BUFFER_IN_WINDOWS_SAFELY case clause.
>
> Impressive, thanks.  This means that if earlier everything worked as
> intended someone did
>
> (1) set Vwindow_list to nil (because otherwise the *Server* window would
>      still figure in it), and
>
> (2) window_list () recreated Vwindow_list but did _not_ include the
>      *Server* window.
>
> The mysterious aspect is (2): Why did window_list skip the *Server*
> window? 

Good question.  I plan to set Vwindow_list to nil and call it to see
what happens.

> What is the value of FRAME_ROOT_WINDOW (f) where f is the
> *Server* frame?  What is the name of that window's buffer? 

It's a window containing the buffer "*Server*".

> IIUC the *Server* frame does not have a minibuffer window - correct?

It didn't appear in Vwindow_list, but it does have a minibuffer.

(gdb) p $116->minibuffer_window
$139 = XIL(0x555556fc8185)
(gdb) xwindow
$140 = (struct window *) 0x555556fc8180
84x1+0+59
(gdb) p $140->contents
$141 = XIL(0x7ffff2a3cb15)
(gdb) xbuffer
$142 = (struct buffer *) 0x7ffff2a3cb10
0x7ffff2d244ea " *Minibuf-0*"

I will note that the window itself is different than the one on the
Vwindow_list with the same contents.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-06 16:48                                                                                                                     ` Michael Welsh Duggan
@ 2021-04-06 17:00                                                                                                                       ` martin rudalics
  2021-04-06 17:24                                                                                                                         ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-06 17:00 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

 >> The mysterious aspect is (2): Why did window_list skip the *Server*
 >> window?
 >
 > Good question.  I plan to set Vwindow_list to nil and call it to see
 > what happens.

This should resolve the mystery.

 >> What is the value of FRAME_ROOT_WINDOW (f) where f is the
 >> *Server* frame?  What is the name of that window's buffer?
 >
 > It's a window containing the buffer "*Server*".

So a bad FRAME_ROOT_WINDOW can't be the cause for (2).

 >> IIUC the *Server* frame does not have a minibuffer window - correct?
 >
 > It didn't appear in Vwindow_list, but it does have a minibuffer.
 >
 > (gdb) p $116->minibuffer_window
 > $139 = XIL(0x555556fc8185)
 > (gdb) xwindow
 > $140 = (struct window *) 0x555556fc8180
 > 84x1+0+59
 > (gdb) p $140->contents
 > $141 = XIL(0x7ffff2a3cb15)
 > (gdb) xbuffer
 > $142 = (struct buffer *) 0x7ffff2a3cb10
 > 0x7ffff2d244ea " *Minibuf-0*"
 >
 > I will note that the window itself is different than the one on the
 > Vwindow_list with the same contents.

Are you sure it's on the same frame as the *Server* window (w->frame
gives you that)?  What is the value of w->next for the *Server* window?

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-06 17:00                                                                                                                       ` martin rudalics
@ 2021-04-06 17:24                                                                                                                         ` Michael Welsh Duggan
  2021-04-07  2:22                                                                                                                           ` Michael Welsh Duggan
  2021-04-07  9:00                                                                                                                           ` martin rudalics
  0 siblings, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-06 17:24 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  >> The mysterious aspect is (2): Why did window_list skip the *Server*
>  >> window?
>  >
>  > Good question.  I plan to set Vwindow_list to nil and call it to see
>  > what happens.
>
> This should resolve the mystery.

I wish it did.  After doing this, Vwindow_list has six entries, one for
each selected_window on each frame, and one for each minibuffer window
on each frame.  This includes the "*Server*" buffer.

>  >> What is the value of FRAME_ROOT_WINDOW (f) where f is the
>  >> *Server* frame?  What is the name of that window's buffer?
>  >
>  > It's a window containing the buffer "*Server*".
>
> So a bad FRAME_ROOT_WINDOW can't be the cause for (2).
>
>  >> IIUC the *Server* frame does not have a minibuffer window - correct?
>  >
>  > It didn't appear in Vwindow_list, but it does have a minibuffer.
>  >
>  > (gdb) p $116->minibuffer_window
>  > $139 = XIL(0x555556fc8185)
>  > (gdb) xwindow
>  > $140 = (struct window *) 0x555556fc8180
>  > 84x1+0+59
>  > (gdb) p $140->contents
>  > $141 = XIL(0x7ffff2a3cb15)
>  > (gdb) xbuffer
>  > $142 = (struct buffer *) 0x7ffff2a3cb10
>  > 0x7ffff2d244ea " *Minibuf-0*"
>  >
>  > I will note that the window itself is different than the one on the
>  > Vwindow_list with the same contents.
>
> Are you sure it's on the same frame as the *Server* window (w->frame
> gives you that)?  What is the value of w->next for the *Server* window?

I am certain.  w->next on that window is a minibuffer window.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-06 17:24                                                                                                                         ` Michael Welsh Duggan
@ 2021-04-07  2:22                                                                                                                           ` Michael Welsh Duggan
  2021-04-07  7:52                                                                                                                             ` Andreas Schwab
  2021-04-07  9:00                                                                                                                             ` martin rudalics
  2021-04-07  9:00                                                                                                                           ` martin rudalics
  1 sibling, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-07  2:22 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

Michael Welsh Duggan <mwd@cert.org> writes:

> martin rudalics <rudalics@gmx.at> writes:
>
>>  >> The mysterious aspect is (2): Why did window_list skip the *Server*
>>  >> window?
>>  >
>>  > Good question.  I plan to set Vwindow_list to nil and call it to see
>>  > what happens.
>>
>> This should resolve the mystery.
>
> I wish it did.  After doing this, Vwindow_list has six entries, one for
> each selected_window on each frame, and one for each minibuffer window
> on each frame.  This includes the "*Server*" buffer.

Just a shot in the dark here.  The only way I can think of this
occurring (Vwindow_list being too small), is that something modified
Vwindow_list when we don't expect it to be modified.  I looked through
all the uses of Vwindow_list and window_list(), and they all look
kosher.  The only modification seems to be setting Vwindow_list to nil.
But window_list() does call into lisp (nconc2, which calls Fnconc) when
constructing Vwindow_list, and it uses Vwindow_list as a temporary in
the process.  Is it possible that during that call something happens
asynchronously (via gc?) that calls something that sets Vwindow_list
to nil again, while Vwindow_list is being constructed?  I don't think
so, off hand, but I'm grasping at straws.

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07  2:22                                                                                                                           ` Michael Welsh Duggan
@ 2021-04-07  7:52                                                                                                                             ` Andreas Schwab
  2021-04-07  9:00                                                                                                                             ` martin rudalics
  1 sibling, 0 replies; 160+ messages in thread
From: Andreas Schwab @ 2021-04-07  7:52 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: 47244@debbugs.gnu.org, Michael Welsh Duggan

On Apr 06 2021, Michael Welsh Duggan wrote:

> But window_list() does call into lisp (nconc2, which calls Fnconc) when
> constructing Vwindow_list, and it uses Vwindow_list as a temporary in
> the process.  Is it possible that during that call something happens
> asynchronously (via gc?)

nconc doesn't allocate any lisp data, since it is destructive.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-06 17:24                                                                                                                         ` Michael Welsh Duggan
  2021-04-07  2:22                                                                                                                           ` Michael Welsh Duggan
@ 2021-04-07  9:00                                                                                                                           ` martin rudalics
  1 sibling, 0 replies; 160+ messages in thread
From: martin rudalics @ 2021-04-07  9:00 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

 > I wish it did.  After doing this, Vwindow_list has six entries, one for
 > each selected_window on each frame, and one for each minibuffer window
 > on each frame.  This includes the "*Server*" buffer.

Fine.  This is the expected behavior (till now I didn't know that each
of your frames had its own minibuffer window).  It also means that we
can dismiss many other potential causes of the behavior you see and
concentrate on why Emacs apparently butchers your window list.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07  2:22                                                                                                                           ` Michael Welsh Duggan
  2021-04-07  7:52                                                                                                                             ` Andreas Schwab
@ 2021-04-07  9:00                                                                                                                             ` martin rudalics
  2021-04-07 12:42                                                                                                                               ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-07  9:00 UTC (permalink / raw)
  To: Michael Welsh Duggan, Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 1240 bytes --]

 > Just a shot in the dark here.  The only way I can think of this
 > occurring (Vwindow_list being too small), is that something modified
 > Vwindow_list when we don't expect it to be modified.  I looked through
 > all the uses of Vwindow_list and window_list(), and they all look
 > kosher.  The only modification seems to be setting Vwindow_list to nil.
 > But window_list() does call into lisp (nconc2, which calls Fnconc) when
 > constructing Vwindow_list, and it uses Vwindow_list as a temporary in
 > the process.  Is it possible that during that call something happens
 > asynchronously (via gc?) that calls something that sets Vwindow_list
 > to nil again, while Vwindow_list is being constructed?

Improbable but I attached some code that could detect such an
incidence.  Put a breakpoint at the

	Vwindow_list = window_list_2;

line.

 > I don't think
 > so, off hand, but I'm grasping at straws.

I also added a variable called `window-list-lengths' which records the
last 20 or so last changes in the number of windows seen by window_list.
Maybe you can detect some strange 2 ~> 6 or 6 ~> 2 change while running
Gnus.  I'm still not sure whether your daemon setup could be involved
somehow.

martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 9280 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..70b37e61a2 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1951,6 +1951,9 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
      This gets rid of them for certain.  */
   reset_buffer_local_variables (b, 1);
 
+  if (!b->base_buffer)
+    eassert (b->window_count == 0);
+
   bset_name (b, Qnil);
 
   block_input ();
@@ -1991,6 +1994,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2156,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.  */
diff --git a/src/window.c b/src/window.c
index eb16e2a433..16c75a13d5 100644
--- a/src/window.c
+++ b/src/window.c
@@ -307,7 +307,11 @@ wset_buffer (struct window *w, Lisp_Object val)
   if (BUFFERP (val))
     /* Make sure that we do not assign the buffer
        to an internal window.  */
-    eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    {
+      eassert (BUFFER_LIVE_P (XBUFFER (val)));
+      eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    }
+
   w->contents = val;
   adjust_window_count (w, 1);
 }
@@ -315,6 +319,7 @@ wset_buffer (struct window *w, Lisp_Object val)
 static void
 wset_old_buffer (struct window *w, Lisp_Object val)
 {
+  eassert (BUFFER_LIVE_P (XBUFFER (val)));
   w->old_buffer = val;
 }
 
@@ -594,6 +599,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -2556,6 +2563,7 @@ window_list (void)
   if (!CONSP (Vwindow_list))
     {
       Lisp_Object tail, frame;
+      Lisp_Object window_list_2 = Qnil;
 
       Vwindow_list = Qnil;
       FOR_EACH_FRAME (tail, frame)
@@ -2569,6 +2577,42 @@ window_list (void)
 	  arglist = Fnreverse (arglist);
 	  Vwindow_list = nconc2 (Vwindow_list, arglist);
 	}
+
+      if (NILP (window_list_lengths))
+	window_list_lengths
+	  = Fcons (make_fixnum (list_length (Vwindow_list)), Qnil);
+      else
+	{
+	  int old_length = XFIXNUM (Fcar (window_list_lengths));
+	  int new_length = list_length (Vwindow_list);
+
+	  if (old_length != new_length)
+	    {
+	      Lisp_Object twentieth;
+
+	      window_list_lengths
+		= Fcons (make_fixnum (new_length), window_list_lengths);
+
+	      /* Crop to 20 elements.  */
+	      twentieth = Fnthcdr (make_fixnum (20), window_list_lengths);
+
+	      if (!NILP (twentieth))
+		XSETCDR (twentieth, Qnil);
+	    }
+	}
+
+      FOR_EACH_FRAME (tail, frame)
+	{
+	  Lisp_Object arglist = Qnil;
+
+	  foreach_window (XFRAME (frame), add_window_to_list, &arglist);
+	  arglist = Fnreverse (arglist);
+	  window_list_2 = nconc2 (window_list_2, arglist);
+	}
+
+      if (NILP (Fequal (Vwindow_list, window_list_2)))
+	Vwindow_list = window_list_2;
+
     }
 
   return Vwindow_list;
@@ -2950,6 +2994,8 @@ DEFUN ("window-list-1", Fwindow_list_1, Swindow_list_1, 0, 3, 0,
   CHECK_ALL_WINDOWS                 /* Arg is ignored */
 };
 
+static int replace_buffer_in_windows_safely_count;
+
 static Lisp_Object
 window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 	     Lisp_Object frames)
@@ -3048,6 +3094,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 		if (EQ (window, selected_window)
 		    && XBUFFER (w->contents) == current_buffer)
 		  Fset_buffer (w->contents);
+
+		replace_buffer_in_windows_safely_count += 1;
 	      }
 	    break;
 
@@ -3411,6 +3459,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3419,7 +3469,28 @@ replace_buffer_in_windows (Lisp_Object buffer)
 void
 replace_buffer_in_windows_safely (Lisp_Object buffer)
 {
-  if (buffer_window_count (XBUFFER (buffer)))
+  if (!NILP (Fstring_equal (XBUFFER (buffer)->name_,
+			    build_string ("*Server*"))))
+    {
+      int count = buffer_window_count (XBUFFER (buffer));
+
+      replace_buffer_in_windows_safely_count = 0;
+
+
+      if (buffer_window_count (XBUFFER (buffer)))
+	{
+	  Lisp_Object tail, frame;
+
+	  /* A single call to window_loop won't do the job because it only
+	     considers frames on the current keyboard.  So loop manually over
+	     frames, and handle each one.  */
+	  FOR_EACH_FRAME (tail, frame)
+	    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
+	}
+
+      eassert (count == replace_buffer_in_windows_safely_count);
+    }
+  else if (buffer_window_count (XBUFFER (buffer)))
     {
       Lisp_Object tail, frame;
 
@@ -3429,6 +3500,7 @@ replace_buffer_in_windows_safely (Lisp_Object buffer)
       FOR_EACH_FRAME (tail, frame)
 	window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
     }
+
 }
 \f
 /* The following three routines are needed for running a window's
@@ -3960,6 +4032,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4128,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -5174,6 +5251,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
@@ -7233,6 +7312,9 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
   minibuf_selected_window = data->minibuf_selected_window;
 
   SAFE_FREE ();
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return FRAME_LIVE_P (f) ? Qt : Qnil;
 }
 
@@ -8479,6 +8561,10 @@ syms_of_window (void)
 displayed after a scrolling operation to be somewhat inaccurate.  */);
   fast_but_imprecise_scrolling = false;
 
+  DEFVAR_LISP ("window-list-lengths", window_list_lengths,
+               doc: /* Last lengths of `window-list'.  */);
+  window_list_lengths = Qnil;
+
   defsubr (&Sselected_window);
   defsubr (&Sold_selected_window);
   defsubr (&Sminibuffer_window);
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07  9:00                                                                                                                             ` martin rudalics
@ 2021-04-07 12:42                                                                                                                               ` Michael Welsh Duggan
  2021-04-07 13:35                                                                                                                                 ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-07 12:42 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org, Michael Welsh Duggan

martin rudalics <rudalics@gmx.at> writes:

>> Just a shot in the dark here.  The only way I can think of this
>> occurring (Vwindow_list being too small), is that something modified
>> Vwindow_list when we don't expect it to be modified.  I looked through
>> all the uses of Vwindow_list and window_list(), and they all look
>> kosher.  The only modification seems to be setting Vwindow_list to nil.
>> But window_list() does call into lisp (nconc2, which calls Fnconc) when
>> constructing Vwindow_list, and it uses Vwindow_list as a temporary in
>> the process.  Is it possible that during that call something happens
>> asynchronously (via gc?) that calls something that sets Vwindow_list
>> to nil again, while Vwindow_list is being constructed?
>
> Improbable but I attached some code that could detect such an
> incidence.  Put a breakpoint at the
>
> 	Vwindow_list = window_list_2;
>
> line.
>
>> I don't think
>> so, off hand, but I'm grasping at straws.
>
> I also added a variable called `window-list-lengths' which records the
> last 20 or so last changes in the number of windows seen by window_list.
> Maybe you can detect some strange 2 ~> 6 or 6 ~> 2 change while running
> Gnus.  I'm still not sure whether your daemon setup could be involved
> somehow.

I can run with this, but I am uncertain how I should be using it.  What
should I be trapping on and looking at?  I'm guessing the same process
as I used before, but we get another variable we can look at in the
process?

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 12:42                                                                                                                               ` Michael Welsh Duggan
@ 2021-04-07 13:35                                                                                                                                 ` martin rudalics
  2021-04-07 15:29                                                                                                                                   ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-07 13:35 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

 > I can run with this, but I am uncertain how I should be using it.  What
 > should I be trapping on and looking at?  I'm guessing the same process
 > as I used before, but we get another variable we can look at in the
 > process?

Occasionally, with your two visible frames setup for Gnus look at its
value.  So far we only know that it can eventually become 2 and by
explicitly setting Vframe_list to nil and triggering a window_list call
it gets set to 6.  I'd like to know whether it can become 2 earlier
and/or we can detect some sort of pattern how it gets set to that value.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 13:35                                                                                                                                 ` martin rudalics
@ 2021-04-07 15:29                                                                                                                                   ` Michael Welsh Duggan
  2021-04-07 16:16                                                                                                                                     ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-07 15:29 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > I can run with this, but I am uncertain how I should be using it.  What
>  > should I be trapping on and looking at?  I'm guessing the same process
>  > as I used before, but we get another variable we can look at in the
>  > process?
>
> Occasionally, with your two visible frames setup for Gnus look at its
> value.  So far we only know that it can eventually become 2 and by
> explicitly setting Vframe_list to nil and triggering a window_list call
> it gets set to 6.  I'd like to know whether it can become 2 earlier
> and/or we can detect some sort of pattern how it gets set to that value.

Don't know where to go from here, but I have a breakpoint set on

      replace_buffer_in_windows_safely_count = 0;

conditioned on count != 0.

I've hit that, and here's some info.  Don't know where to go from here,
but I'm happy to give more info if requested.

Thread 3.1 "emacs" hit Breakpoint 5, replace_buffer_in_windows_safely (
    buffer=XIL(0x555556c75c9d)) at ../../master/src/window.c:3477
3477          replace_buffer_in_windows_safely_count = 0;
(gdb) p Vwindow_list
$1 = XIL(0x555557f034d3)
(gdb) p list_length(Vwindow_list)
$2 = 2
(gdb) p Vwindow_list 
$3 = XIL(0x555557f034d3)
(gdb) xlist
$4 = 0x55555791df75
Lisp_Vectorlike
PVEC_WINDOW
$5 = (struct window *) 0x55555791df70
100x57+0+0
---
$6 = 0x5555577f28a5
Lisp_Vectorlike
PVEC_WINDOW
$7 = (struct window *) 0x5555577f28a0
100x1+0+57
---
nil
(gdb) p $5->contents 
$8 = XIL(0x5555579dc345)
(gdb) xbuffer
$9 = (struct buffer *) 0x5555579dc340
0x555557e69358 "build.py"
(gdb) p $7->contents 
$10 = XIL(0x7ffff2a3cb25)
(gdb) xbuffer
$11 = (struct buffer *) 0x7ffff2a3cb20
0x7ffff2d244ea " *Minibuf-0*"
(gdb) p window_list_lengths
$12 = XIL(0x5555575cd343)
(gdb) xlist
$13 = 0x1a
Lisp_Int0
$14 = 6
---
$15 = 0x1e
Lisp_Int1
$16 = 7
---
$17 = 0x1a
Lisp_Int0
$18 = 6
---
$19 = 0x1e
Lisp_Int1
$20 = 7
---
$21 = 0x1a
Lisp_Int0
$22 = 6
---
$23 = 0x1e
Lisp_Int1
$24 = 7
---
$25 = 0x1a
Lisp_Int0
$26 = 6
---
$27 = 0x1e
Lisp_Int1
$28 = 7
---
$29 = 0x1a
Lisp_Int0
$30 = 6
---
$31 = 0x22
Lisp_Int0
$32 = 8
---
...
$33 = 93825046649712
(gdb) p Vframe_list
$34 = XIL(0x5555582da543)
(gdb) xlist
$35 = 0x555558285545
Lisp_Vectorlike
PVEC_FRAME
$36 = (struct frame *) 0x555558285540
"build.py"
---
$37 = 0x555556fc830d
Lisp_Vectorlike
PVEC_FRAME
$38 = (struct frame *) 0x555556fc8308
"*Server*"
---
$39 = 0x555555eff9dd
Lisp_Vectorlike
PVEC_FRAME
$40 = (struct frame *) 0x555555eff9d8
"F1"
---
nil


-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 15:29                                                                                                                                   ` Michael Welsh Duggan
@ 2021-04-07 16:16                                                                                                                                     ` martin rudalics
  2021-04-07 17:37                                                                                                                                       ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-07 16:16 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 640 bytes --]

 > Don't know where to go from here, but I have a breakpoint set on
 >
 >        replace_buffer_in_windows_safely_count = 0;
 >
 > conditioned on count != 0.

Good.  IIUC this

 > (gdb) p list_length(Vwindow_list)
 > $2 = 2

and this

 > (gdb) xlist
 > $13 = 0x1a
 > Lisp_Int0
 > $14 = 6

together indicate that Vwindow_list spontaneously shrinks from 6 to 2
elements (which is "impossible" as we know already).  Attaching the next
patch which should catch this situation automatically.  It will still be
of no help because we won't catch the one that apparently clobbers that
list but hopefully more useful than the previous diff.

martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 7773 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..70b37e61a2 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1951,6 +1951,9 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
      This gets rid of them for certain.  */
   reset_buffer_local_variables (b, 1);
 
+  if (!b->base_buffer)
+    eassert (b->window_count == 0);
+
   bset_name (b, Qnil);
 
   block_input ();
@@ -1991,6 +1994,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2156,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.  */
diff --git a/src/window.c b/src/window.c
index eb16e2a433..c6fbe24742 100644
--- a/src/window.c
+++ b/src/window.c
@@ -87,6 +87,8 @@
    by setting it to nil.  */
 Lisp_Object Vwindow_list;
 
+static int window_list_length = 0;
+
 /* True mean window_change_record has to record all live frames.  */
 static bool window_change_record_frames;
 
@@ -307,7 +309,11 @@ wset_buffer (struct window *w, Lisp_Object val)
   if (BUFFERP (val))
     /* Make sure that we do not assign the buffer
        to an internal window.  */
-    eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    {
+      eassert (BUFFER_LIVE_P (XBUFFER (val)));
+      eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    }
+
   w->contents = val;
   adjust_window_count (w, 1);
 }
@@ -315,6 +321,7 @@ wset_buffer (struct window *w, Lisp_Object val)
 static void
 wset_old_buffer (struct window *w, Lisp_Object val)
 {
+  eassert (BUFFER_LIVE_P (XBUFFER (val)));
   w->old_buffer = val;
 }
 
@@ -594,6 +601,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -2569,7 +2578,11 @@ window_list (void)
 	  arglist = Fnreverse (arglist);
 	  Vwindow_list = nconc2 (Vwindow_list, arglist);
 	}
+
+      window_list_length = list_length (Vwindow_list);
     }
+  else
+    eassert (window_list_length == list_length (Vwindow_list));
 
   return Vwindow_list;
 }
@@ -2950,6 +2963,8 @@ DEFUN ("window-list-1", Fwindow_list_1, Swindow_list_1, 0, 3, 0,
   CHECK_ALL_WINDOWS                 /* Arg is ignored */
 };
 
+static int replace_buffer_in_windows_safely_count;
+
 static Lisp_Object
 window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 	     Lisp_Object frames)
@@ -3048,6 +3063,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 		if (EQ (window, selected_window)
 		    && XBUFFER (w->contents) == current_buffer)
 		  Fset_buffer (w->contents);
+
+		replace_buffer_in_windows_safely_count += 1;
 	      }
 	    break;
 
@@ -3411,6 +3428,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3419,7 +3438,28 @@ replace_buffer_in_windows (Lisp_Object buffer)
 void
 replace_buffer_in_windows_safely (Lisp_Object buffer)
 {
-  if (buffer_window_count (XBUFFER (buffer)))
+  if (!NILP (Fstring_equal (XBUFFER (buffer)->name_,
+			    build_string ("*Server*"))))
+    {
+      int count = buffer_window_count (XBUFFER (buffer));
+
+      replace_buffer_in_windows_safely_count = 0;
+
+
+      if (buffer_window_count (XBUFFER (buffer)))
+	{
+	  Lisp_Object tail, frame;
+
+	  /* A single call to window_loop won't do the job because it only
+	     considers frames on the current keyboard.  So loop manually over
+	     frames, and handle each one.  */
+	  FOR_EACH_FRAME (tail, frame)
+	    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
+	}
+
+      eassert (count == replace_buffer_in_windows_safely_count);
+    }
+  else if (buffer_window_count (XBUFFER (buffer)))
     {
       Lisp_Object tail, frame;
 
@@ -3960,6 +4000,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4096,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -5174,6 +5219,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
@@ -7233,6 +7280,9 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
   minibuf_selected_window = data->minibuf_selected_window;
 
   SAFE_FREE ();
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return FRAME_LIVE_P (f) ? Qt : Qnil;
 }
 
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 16:16                                                                                                                                     ` martin rudalics
@ 2021-04-07 17:37                                                                                                                                       ` Michael Welsh Duggan
  2021-04-07 17:55                                                                                                                                         ` Michael Welsh Duggan
                                                                                                                                                           ` (2 more replies)
  0 siblings, 3 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-07 17:37 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > Don't know where to go from here, but I have a breakpoint set on
>  >
>  >        replace_buffer_in_windows_safely_count = 0;
>  >
>  > conditioned on count != 0.
>
> Good.  IIUC this
>
>  > (gdb) p list_length(Vwindow_list)
>  > $2 = 2
>
> and this
>
>  > (gdb) xlist
>  > $13 = 0x1a
>  > Lisp_Int0
>  > $14 = 6
>
> together indicate that Vwindow_list spontaneously shrinks from 6 to 2
> elements (which is "impossible" as we know already).  Attaching the next
> patch which should catch this situation automatically.  It will still be
> of no help because we won't catch the one that apparently clobbers that
> list but hopefully more useful than the previous diff.

Triggered.  Here's the backtrace:

#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647)
    at ../../master/src/emacs.c:379
#1  0x00005555557c4aa2 in die
    (msg=0x5555559105c8 "window_list_length == list_length (Vwindow_list)", file=0x55555590f9cf "../../master/src/window.c", line=2585)
    at ../../master/src/alloc.c:7420
#2  0x000055555564b3ea in window_list () at ../../master/src/window.c:2585
#3  0x000055555564bfec in window_list_1
    (window=XIL(0x555556f6f995), minibuf=XIL(0xc0), all_frames=XIL(0x30))
    at ../../master/src/window.c:2872
        tail = XIL(0x7ffff26647bd)
        list = XIL(0)
        rest = XIL(0x7ffff26647c0)
#4  0x000055555564c332 in Fwindow_list_1
    (window=XIL(0), minibuf=XIL(0), all_frames=XIL(0x30))
    at ../../master/src/window.c:2946
#5  0x00005555557fdb25 in funcall_subr
    (subr=0x555555dd4960 <Swindow_list_1>, numargs=3, args=0x7fffffffbfa0)
    at ../../master/src/eval.c:2992
        internal_argbuf = 
          {XIL(0x7fffffffbed0), XIL(0x1000000000), XIL(0x555555dd4960), XIL(0x7fffffffbed8), make_fixnum(23456248746435), XIL(0x10557f41d5), XIL(0x555555dd4965), XIL(0x7fffffffbef0)}
        internal_args = 0x7fffffffbfa0
#6  0x00005555557fd593 in Ffuncall (nargs=4, args=0x7fffffffbf98)
    at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd4965)
        original_fun = XIL(0x2aaa9c71a7a8)
        funcar = XIL(0x7fffffffbf50)
        numargs = 3
        val = XIL(0x55555792ff75)
        count = 12
#7  0x0000555555856c56 in exec_byte_code
    (bytestr=XIL(0x7ffff277c864), vector=XIL(0x7ffff277c80d), maxdepth=make_fixnum(8), args_template=make_fixnum(256), nargs=1, args=0x7fffffffc4b0)
    at ../../master/src/bytecode.c:632
        op = 3
        type = (CATCHER_ALL | unknown: 0x20)
        targets = 
          {0x555555859aeb <exec_byte_code+15219>, 0x555555859b10 <exec_byte_code+15256>, 0x555555859b12 <exec_byte_code+15258>, 0x555555859b14 <exec_byte_code+15260>, 0x555555859b16 <exec_byte_code+15262>, 0x555555859b16 <exec_byte_code+15262>, 0x555555859b7b <exec_byte_code+15363>, 0x555555859bef <exec_byte_code+15479>, 0x555555856516 <exec_byte_code+1438>, 0x555555856518 <exec_byte_code+1440>, 0x55555585651a <exec_byte_code+1442>, 0x55555585651c <exec_byte_code+1444>, 0x55555585651e <exec_byte_code+1446>, 0x55555585651e <exec_byte_code+1446>, 0x555555856524 <exec_byte_code+1452>, 0x5555558564e5 <exec_byte_code+1389>, 0x55555585693c <exec_byte_code+2500>, 0x55555585693e <exec_byte_code+2502>, 0x555555856940 <exec_byte_code+2504>, 0x555555856942 <exec_byte_code+2506>, 0x555555856944 <exec_byte_code+2508>, 0x555555856944 <exec_byte_code+2508>, 0x555555856979 <exec_byte_code+2561>, 0x55555585694a <exec_byte_code+2514>, 0x555555856b6e <exec_byte_code+3062>, 0x555555856b70 <exec_byte_code+3064>, 0x555555856b72 <exec_byte_code+3066>, 0x555555856b74 <exec_byte_code+3068>, 0x555555856b76 <exec_byte_code+3070>, 0x555555856b76 <exec_byte_code+3070>, 0x555555856b28 <exec_byte_code+2992>, 0x555555856b3f <exec_byte_code+3015>, 0x555555856c23 <exec_byte_code+3243>, 0x555555856c25 <exec_byte_code+3245>, 0x555555856c27 <exec_byte_code+3247>, 0x555555856c29 <exec_byte_code+3249>, 0x555555856c2b <exec_byte_code+3251>, 0x555555856c2b <exec_byte_code+3251>, 0x555555856bdd <exec_byte_code+3173>, 0x555555856bf4 <exec_byte_code+3196>, 0x555555856cd5 <exec_byte_code+3421>, 0x555555856cd7 <exec_byte_code+3423>, 0x555555856cd9 <exec_byte_code+3425>, 0x555555856cdb <exec_byte_code+3427>, 0x555555856cdd <exec_byte_code+3429>, 0x555555856cdd <exec_byte_code+3429>, 0x555555856c8f <exec_byte_code+3351>, 0x555555856ca6 <exec_byte_code+3374>, 0x55555585753d <exec_byte_code+5573>, 0x555555857420 <exec_byte_code+5288>, 0x555555857417 <exec_byte_code+5279>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555857777 <exec_byte_code+6143>, 0x55555585788d <exec_byte_code+6421>, 0x5555558578ea <exec_byte_code+6514>, 0x55555585794a <exec_byte_code+6610>, 0x5555558579ac <exec_byte_code+6708>, 0x555555856795 <exec_byte_code+2077>, 0x555555856810 <exec_byte_code+2200>, 0x555555857a25 <exec_byte_code+6829>, 0x5555558566d2 <exec_byte_code+1882>, 0x555555856878 <exec_byte_code+2304>, 0x555555857a8d <exec_byte_code+6933>, 0x555555857af5 <exec_byte_code+7037>, 0x555555857b3d <exec_byte_code+7109>, 0x555555857ba5 <exec_byte_code+7213>, 0x555555857c0b <exec_byte_code+7315>, 0x555555857cf1 <exec_byte_code+7545>, 0x555555857d39 <exec_byte_code+7617>, 0x555555857da1 <exec_byte_code+7721>, 0x555555857e26 <exec_byte_code+7854>, 0x555555857e6e <exec_byte_code+7926>, 0x555555857eb6 <exec_byte_code+7998>, 0x555555857f1e <exec_byte_code+8102>, 0x555555857f86 <exec_byte_code+8206>, 0x555555857fee <exec_byte_code+8310>, 0x555555858073 <exec_byte_code+8443>, 0x5555558580c2 <exec_byte_code+8522>, 0x555555858111 <exec_byte_code+8601>, 0x5555558581d8 <exec_byte_code+8800>, 0x5555558582d1 <exec_byte_code+9049>, 0x5555558583ca <exec_byte_code+9298>, 0x555555858437 <exec_byte_code+9407>, 0x5555558584a4 <exec_byte_code+9516>, 0x555555858511 <exec_byte_code+9625>, 0x55555585857e <exec_byte_code+9734>, 0x5555558585eb <exec_byte_code+9843>, 0x55555585863a <exec_byte_code+9922>, 0x555555858734 <exec_byte_code+10172>, 0x555555858783 <exec_byte_code+10251>, 0x5555558587d2 <exec_byte_code+10330>, 0x555555858821 <exec_byte_code+10409>, 0x555555858927 <exec_byte_code+10671>, 0x555555857297 <exec_byte_code+4895>, 0x555555858982 <exec_byte_code+10762>, 0x5555558589ca <exec_byte_code+10834>, 0x555555858a8c <exec_byte_code+11028>, 0x555555858af5 <exec_byte_code+11133>, 0x555555858b50 <exec_byte_code+11224>, 0x555555858b98 <exec_byte_code+11296>, 0x555555858bdb <exec_byte_code+11363>, 0x555555858c1e <exec_byte_code+11430>, 0x555555858c69 <exec_byte_code+11505>, 0x555555859aeb <exec_byte_code+15219>, 0x555555858cc1 <exec_byte_code+11593>, 0x555555858d04 <exec_byte_code+11660>, 0x555555858d47 <exec_byte_code+11727>, 0x555555858d8a <exec_byte_code+11794>, 0x555555858dcd <exec_byte_code+11861>, 0x555555858e10 <exec_byte_code+11928>, 0x555555857297 <exec_byte_code+4895>, 0x555555859aeb <exec_byte_code+15219>, 0x555555858e58 <exec_byte_code+12000>, 0x555555858eaa <exec_byte_code+12082>, 0x555555858ef2 <exec_byte_code+12154>, 0x555555858f3a <exec_byte_code+12226>, 0x555555858fa2 <exec_byte_code+12330>, 0x55555585900a <exec_byte_code+12434>, 0x555555859052 <exec_byte_code+12506>, 0x55555585910f <exec_byte_code+12695>, 0x555555859177 <exec_byte_code+12799>, 0x5555558591df <exec_byte_code+12903>, 0x555555859247 <exec_byte_code+13007>, 0x55555585928a <exec_byte_code+13074>, 0x555555859aeb <exec_byte_code+15219>, 0x5555558571dd <exec_byte_code+4709>, 0x555555856d87 <exec_byte_code+3599>, 0x555555856640 <exec_byte_code+1736>, 0x555555856e38 <exec_byte_code+3776>, 0x555555856ebc <exec_byte_code+3908>, 0x555555856f3d <exec_byte_code+4037>, 0x555555857191 <exec_byte_code+4633>, 0x5555558571a6 <exec_byte_code+4654>, 0x555555856ad5 <exec_byte_code+2909>, 0x555555857260 <exec_byte_code+4840>, 0x5555558572ce <exec_byte_code+4950>, 0x55555585735f <exec_byte_code+5095>, 0x5555558573a8 <exec_byte_code+5168>, 0x555555857589 <exec_byte_code+5649>, 0x555555857606 <exec_byte_code+5774>, 0x55555585768b <exec_byte_code+5907>, 0x5555558576f1 <exec_byte_code+6009>, 0x555555856d39 <exec_byte_code+3521>, 0x5555558592d2 <exec_byte_code+13146>, 0x555555859357 <exec_byte_code+13279>, 0x55555585939f <exec_byte_code+13351>, 0x5555558593e7 <exec_byte_code+13423>, 0x55555585942f <exec_byte_code+13495>, 0x555555859477 <exec_byte_code+13567>, 0x5555558594df <exec_byte_code+13671>, 0x555555859547 <exec_byte_code+13775>, 0x5555558595af <exec_byte_code+13879>, 0x555555859617 <exec_byte_code+13983>, 0x555555859760 <exec_byte_code+14312>, 0x5555558597c8 <exec_byte_code+14416>, 0x555555859830 <exec_byte_code+14520>, 0x555555859878 <exec_byte_code+14592>, 0x5555558598e0 <exec_byte_code+14696>, 0x555555859948 <exec_byte_code+14800>, 0x555555859990 <exec_byte_code+14872>, 0x5555558599d8 <exec_byte_code+14944>, 0x555555858870 <exec_byte_code+10488>, 0x5555558588bf <exec_byte_code+10567>, 0x555555859a27 <exec_byte_code+15023>, 0x555555859a89 <exec_byte_code+15121>, 0x555555859aeb <exec_byte_code+15219>, 0x555555856fbe <exec_byte_code+4166>, 0x555555856fdb <exec_byte_code+4195>, 0x55555585704a <exec_byte_code+4306>, 0x5555558570b9 <exec_byte_code+4417>, 0x555555857125 <exec_byte_code+4525>, 0x555555857c79 <exec_byte_code+7425>, 0x555555858160 <exec_byte_code+8680>, 0x555555858a14 <exec_byte_code+10908>, 0x555555859c82 <exec_byte_code+15626>, 0x555555859cf7 <exec_byte_code+15743>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859d8d <exec_byte_code+15893>, 0x555555859e14 <exec_byte_code+16028>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859f62 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 10
        bytestr_length = 56
        vectorp = 0x7ffff277c810
        quitcounter = 1 '\001'
        stack_items = 9
        sa_avail = 16256
        sa_count = 12
        alloc = 0x7fffffffbf80
        stack_base = 0x7fffffffbf80
        top = 0x7fffffffbf98
        stack_lim = 0x7fffffffbfc8
        bytestr_data = 0x7fffffffbfc8 "\300\001!\301\302\211\303#\211\205\067"
        pc = 0x7fffffffbfd0 "\211\205\067"
        count = 12
        result = XIL(0xc557d245f)
#8  0x00005555557fdd7e in fetch_and_exec_byte_code (fun=XIL(0x7ffff277c7b5), syms_left=make_fixnum(256), nargs=1, args=0x7fffffffc4a8) at ../../master/src/eval.c:3036
#9  0x00005555557fe204 in funcall_lambda (fun=XIL(0x7ffff277c7b5), nargs=1, arg_vector=0x7fffffffc4a8) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffc420)
        syms_left = make_fixnum(256)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 12
        i = 93824994985742
        optional = false
        rest = false
#10 0x00005555557fd5d7 in Ffuncall (nargs=2, args=0x7fffffffc4a0) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff277c7b5)
        original_fun = XIL(0xbd60)
        funcar = XIL(0x7fffffffc470)
        numargs = 1
        val = XIL(0x555555e63080)
        count = 11
#11 0x00005555557fcda1 in call1 (fn=XIL(0xbd60), arg1=XIL(0x55555792ff75)) at ../../master/src/eval.c:2774
#12 0x000055555564d83c in replace_buffer_in_windows (buffer=XIL(0x55555792ff75)) at ../../master/src/window.c:3430
#13 0x0000555555758d98 in Fkill_buffer (buffer_or_name=XIL(0x55555792ff75)) at ../../master/src/buffer.c:1830
        buffer = XIL(0x55555792ff75)
        b = 0x55555792ff70
        tem = make_fixnum(23456248581479)
        m = 0x7fffffffc5f0
#14 0x00005555557fdacb in funcall_subr (subr=0x555555dd9ce0 <Skill_buffer>, numargs=1, args=0x7fffffffc710) at ../../master/src/eval.c:2987
        internal_argbuf = {XIL(0x7fffffffc650), XIL(0x1000000000), XIL(0x555555dd9ce0), XIL(0x7fffffffc658), make_fixnum(23456248746435), XIL(0x10557f41d5), XIL(0x555555dd9ce5), XIL(0x7fffffffc670)}
        internal_args = 0x7fffffffc710
#15 0x00005555557fd593 in Ffuncall (nargs=2, args=0x7fffffffc708) at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd9ce5)
        original_fun = XIL(0x2aaa9c7147c0)
        funcar = XIL(0x7fffffffc6d0)
        numargs = 1
        val = XIL(0x7fffffffc6f0)
        count = 10
#16 0x0000555555856c56 in exec_byte_code (bytestr=XIL(0x7ffff25c7454), vector=XIL(0x555558229a65), maxdepth=make_fixnum(2), args_template=make_fixnum(0), nargs=0, args=0x7fffffffcbc0) at ../../master/src/bytecode.c:632
        op = 1
        type = (CONDITION_CASE | unknown: 0x5588e68c)
        targets = {0x555555859aeb <exec_byte_code+15219>, 0x555555859b10 <exec_byte_code+15256>, 0x555555859b12 <exec_byte_code+15258>, 0x555555859b14 <exec_byte_code+15260>, 0x555555859b16 <exec_byte_code+15262>, 0x555555859b16 <exec_byte_code+15262>, 0x555555859b7b <exec_byte_code+15363>, 0x555555859bef <exec_byte_code+15479>, 0x555555856516 <exec_byte_code+1438>, 0x555555856518 <exec_byte_code+1440>, 0x55555585651a <exec_byte_code+1442>, 0x55555585651c <exec_byte_code+1444>, 0x55555585651e <exec_byte_code+1446>, 0x55555585651e <exec_byte_code+1446>, 0x555555856524 <exec_byte_code+1452>, 0x5555558564e5 <exec_byte_code+1389>, 0x55555585693c <exec_byte_code+2500>, 0x55555585693e <exec_byte_code+2502>, 0x555555856940 <exec_byte_code+2504>, 0x555555856942 <exec_byte_code+2506>, 0x555555856944 <exec_byte_code+2508>, 0x555555856944 <exec_byte_code+2508>, 0x555555856979 <exec_byte_code+2561>, 0x55555585694a <exec_byte_code+2514>, 0x555555856b6e <exec_byte_code+3062>, 0x555555856b70 <exec_byte_code+3064>, 0x555555856b72 <exec_byte_code+3066>, 0x555555856b74 <exec_byte_code+3068>, 0x555555856b76 <exec_byte_code+3070>, 0x555555856b76 <exec_byte_code+3070>, 0x555555856b28 <exec_byte_code+2992>, 0x555555856b3f <exec_byte_code+3015>, 0x555555856c23 <exec_byte_code+3243>, 0x555555856c25 <exec_byte_code+3245>, 0x555555856c27 <exec_byte_code+3247>, 0x555555856c29 <exec_byte_code+3249>, 0x555555856c2b <exec_byte_code+3251>, 0x555555856c2b <exec_byte_code+3251>, 0x555555856bdd <exec_byte_code+3173>, 0x555555856bf4 <exec_byte_code+3196>, 0x555555856cd5 <exec_byte_code+3421>, 0x555555856cd7 <exec_byte_code+3423>, 0x555555856cd9 <exec_byte_code+3425>, 0x555555856cdb <exec_byte_code+3427>, 0x555555856cdd <exec_byte_code+3429>, 0x555555856cdd <exec_byte_code+3429>, 0x555555856c8f <exec_byte_code+3351>, 0x555555856ca6 <exec_byte_code+3374>, 0x55555585753d <exec_byte_code+5573>, 0x555555857420 <exec_byte_code+5288>, 0x555555857417 <exec_byte_code+5279>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555857777 <exec_byte_code+6143>, 0x55555585788d <exec_byte_code+6421>, 0x5555558578ea <exec_byte_code+6514>, 0x55555585794a <exec_byte_code+6610>, 0x5555558579ac <exec_byte_code+6708>, 0x555555856795 <exec_byte_code+2077>, 0x555555856810 <exec_byte_code+2200>, 0x555555857a25 <exec_byte_code+6829>, 0x5555558566d2 <exec_byte_code+1882>, 0x555555856878 <exec_byte_code+2304>, 0x555555857a8d <exec_byte_code+6933>, 0x555555857af5 <exec_byte_code+7037>, 0x555555857b3d <exec_byte_code+7109>, 0x555555857ba5 <exec_byte_code+7213>, 0x555555857c0b <exec_byte_code+7315>, 0x555555857cf1 <exec_byte_code+7545>, 0x555555857d39 <exec_byte_code+7617>, 0x555555857da1 <exec_byte_code+7721>, 0x555555857e26 <exec_byte_code+7854>, 0x555555857e6e <exec_byte_code+7926>, 0x555555857eb6 <exec_byte_code+7998>, 0x555555857f1e <exec_byte_code+8102>, 0x555555857f86 <exec_byte_code+8206>, 0x555555857fee <exec_byte_code+8310>, 0x555555858073 <exec_byte_code+8443>, 0x5555558580c2 <exec_byte_code+8522>, 0x555555858111 <exec_byte_code+8601>, 0x5555558581d8 <exec_byte_code+8800>, 0x5555558582d1 <exec_byte_code+9049>, 0x5555558583ca <exec_byte_code+9298>, 0x555555858437 <exec_byte_code+9407>, 0x5555558584a4 <exec_byte_code+9516>, 0x555555858511 <exec_byte_code+9625>, 0x55555585857e <exec_byte_code+9734>, 0x5555558585eb <exec_byte_code+9843>, 0x55555585863a <exec_byte_code+9922>, 0x555555858734 <exec_byte_code+10172>, 0x555555858783 <exec_byte_code+10251>, 0x5555558587d2 <exec_byte_code+10330>, 0x555555858821 <exec_byte_code+10409>, 0x555555858927 <exec_byte_code+10671>, 0x555555857297 <exec_byte_code+4895>, 0x555555858982 <exec_byte_code+10762>, 0x5555558589ca <exec_byte_code+10834>, 0x555555858a8c <exec_byte_code+11028>, 0x555555858af5 <exec_byte_code+11133>, 0x555555858b50 <exec_byte_code+11224>, 0x555555858b98 <exec_byte_code+11296>, 0x555555858bdb <exec_byte_code+11363>, 0x555555858c1e <exec_byte_code+11430>, 0x555555858c69 <exec_byte_code+11505>, 0x555555859aeb <exec_byte_code+15219>, 0x555555858cc1 <exec_byte_code+11593>, 0x555555858d04 <exec_byte_code+11660>, 0x555555858d47 <exec_byte_code+11727>, 0x555555858d8a <exec_byte_code+11794>, 0x555555858dcd <exec_byte_code+11861>, 0x555555858e10 <exec_byte_code+11928>, 0x555555857297 <exec_byte_code+4895>, 0x555555859aeb <exec_byte_code+15219>, 0x555555858e58 <exec_byte_code+12000>, 0x555555858eaa <exec_byte_code+12082>, 0x555555858ef2 <exec_byte_code+12154>, 0x555555858f3a <exec_byte_code+12226>, 0x555555858fa2 <exec_byte_code+12330>, 0x55555585900a <exec_byte_code+12434>, 0x555555859052 <exec_byte_code+12506>, 0x55555585910f <exec_byte_code+12695>, 0x555555859177 <exec_byte_code+12799>, 0x5555558591df <exec_byte_code+12903>, 0x555555859247 <exec_byte_code+13007>, 0x55555585928a <exec_byte_code+13074>, 0x555555859aeb <exec_byte_code+15219>, 0x5555558571dd <exec_byte_code+4709>, 0x555555856d87 <exec_byte_code+3599>, 0x555555856640 <exec_byte_code+1736>, 0x555555856e38 <exec_byte_code+3776>, 0x555555856ebc <exec_byte_code+3908>, 0x555555856f3d <exec_byte_code+4037>, 0x555555857191 <exec_byte_code+4633>, 0x5555558571a6 <exec_byte_code+4654>, 0x555555856ad5 <exec_byte_code+2909>, 0x555555857260 <exec_byte_code+4840>, 0x5555558572ce <exec_byte_code+4950>, 0x55555585735f <exec_byte_code+5095>, 0x5555558573a8 <exec_byte_code+5168>, 0x555555857589 <exec_byte_code+5649>, 0x555555857606 <exec_byte_code+5774>, 0x55555585768b <exec_byte_code+5907>, 0x5555558576f1 <exec_byte_code+6009>, 0x555555856d39 <exec_byte_code+3521>, 0x5555558592d2 <exec_byte_code+13146>, 0x555555859357 <exec_byte_code+13279>, 0x55555585939f <exec_byte_code+13351>, 0x5555558593e7 <exec_byte_code+13423>, 0x55555585942f <exec_byte_code+13495>, 0x555555859477 <exec_byte_code+13567>, 0x5555558594df <exec_byte_code+13671>, 0x555555859547 <exec_byte_code+13775>, 0x5555558595af <exec_byte_code+13879>, 0x555555859617 <exec_byte_code+13983>, 0x555555859760 <exec_byte_code+14312>, 0x5555558597c8 <exec_byte_code+14416>, 0x555555859830 <exec_byte_code+14520>, 0x555555859878 <exec_byte_code+14592>, 0x5555558598e0 <exec_byte_code+14696>, 0x555555859948 <exec_byte_code+14800>, 0x555555859990 <exec_byte_code+14872>, 0x5555558599d8 <exec_byte_code+14944>, 0x555555858870 <exec_byte_code+10488>, 0x5555558588bf <exec_byte_code+10567>, 0x555555859a27 <exec_byte_code+15023>, 0x555555859a89 <exec_byte_code+15121>, 0x555555859aeb <exec_byte_code+15219>, 0x555555856fbe <exec_byte_code+4166>, 0x555555856fdb <exec_byte_code+4195>, 0x55555585704a <exec_byte_code+4306>, 0x5555558570b9 <exec_byte_code+4417>, 0x555555857125 <exec_byte_code+4525>, 0x555555857c79 <exec_byte_code+7425>, 0x555555858160 <exec_byte_code+8680>, 0x555555858a14 <exec_byte_code+10908>, 0x555555859c82 <exec_byte_code+15626>, 0x555555859cf7 <exec_byte_code+15743>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859d8d <exec_byte_code+15893>, 0x555555859e14 <exec_byte_code+16028>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859f62 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 3
        bytestr_length = 10
        vectorp = 0x555558229a68
        quitcounter = 1 '\001'
        stack_items = 3
        sa_avail = 16350
        sa_count = 10
        alloc = 0x7fffffffc700
        stack_base = 0x7fffffffc700
        top = 0x7fffffffc708
        stack_lim = 0x7fffffffc718
        bytestr_data = 0x7fffffffc718 "\301\300!\205\t"
        pc = 0x7fffffffc721 "\207\377\377\377\177"
        count = 10
        result = XIL(0x9)
#17 0x00005555557fdd7e in fetch_and_exec_byte_code (fun=XIL(0x555557821b4d), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffcbc0) at ../../master/src/eval.c:3036
#18 0x00005555557fe204 in funcall_lambda (fun=XIL(0x555557821b4d), nargs=0, arg_vector=0x7fffffffcbc0) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffcb40)
        syms_left = make_fixnum(0)
        next = XIL(0x1)
        lexenv = XIL(0x1800000000)
        count = 10
        i = 93824994985742
        optional = false
        rest = false
#19 0x00005555557fd5d7 in Ffuncall (nargs=1, args=0x7fffffffcbb8) at ../../master/src/eval.c:2916
        fun = XIL(0x555557821b4d)
        original_fun = XIL(0x555557821b4d)
        funcar = XIL(0x7fffffffcb70)
        numargs = 0
        val = XIL(0x555555e63080)
        count = 9
#20 0x0000555555855f75 in bcall0 (f=XIL(0x555557821b4d)) at ../../master/src/bytecode.c:340
#21 0x00005555557ffa0b in do_one_unbind (this_binding=0x7fffffffcc30, unwinding=true, bindflag=SET_INTERNAL_UNBIND) at ../../master/src/eval.c:3575
#22 0x00005555557ffe37 in unbind_to (count=8, value=XIL(0)) at ../../master/src/eval.c:3713
        this_binding = {
          kind = SPECPDL_UNWIND,
          unwind = {
            kind = SPECPDL_UNWIND,
            func = 0x555555855f58 <bcall0>,
            arg = XIL(0x555557821b4d),
            eval_depth = 4
          },
          unwind_array = {
            kind = SPECPDL_UNWIND,
            nelts = 93824995385176,
            array = 0x555557821b4d
          },
          unwind_ptr = {
            kind = SPECPDL_UNWIND,
            func = 0x555555855f58 <bcall0>,
            arg = 0x555557821b4d
          },
          unwind_int = {
            kind = SPECPDL_UNWIND,
            func = 0x555555855f58 <bcall0>,
            arg = 1468144461
          },
          unwind_intmax = {
            kind = SPECPDL_UNWIND,
            func = 0x555555855f58 <bcall0>,
            arg = 93825028725581
          },
          unwind_excursion = {
            kind = SPECPDL_UNWIND,
            marker = XIL(0x555555855f58),
            window = XIL(0x555557821b4d)
          },
          unwind_void = {
            kind = SPECPDL_UNWIND,
            func = 0x555555855f58 <bcall0>
          },
          let = {
            kind = SPECPDL_UNWIND,
            symbol = XIL(0x555555855f58),
            old_value = XIL(0x555557821b4d),
            where = XIL(0x4),
            saved_value = XIL(0)
          },
          bt = {
            kind = SPECPDL_UNWIND,
            debug_on_exit = false,
            function = XIL(0x555555855f58),
            args = 0x555557821b4d,
            nargs = 4
          }
        }
        quitf = XIL(0)
#23 0x0000555555856d07 in exec_byte_code (bytestr=XIL(0x7ffff2908874), vector=XIL(0x7ffff2908525), maxdepth=make_fixnum(23), args_template=make_fixnum(257), nargs=1, args=0x7fffffffd3e0) at ../../master/src/bytecode.c:652
        op = 2
        type = (unknown: 0xffffd230)
        targets = {0x555555859aeb <exec_byte_code+15219>, 0x555555859b10 <exec_byte_code+15256>, 0x555555859b12 <exec_byte_code+15258>, 0x555555859b14 <exec_byte_code+15260>, 0x555555859b16 <exec_byte_code+15262>, 0x555555859b16 <exec_byte_code+15262>, 0x555555859b7b <exec_byte_code+15363>, 0x555555859bef <exec_byte_code+15479>, 0x555555856516 <exec_byte_code+1438>, 0x555555856518 <exec_byte_code+1440>, 0x55555585651a <exec_byte_code+1442>, 0x55555585651c <exec_byte_code+1444>, 0x55555585651e <exec_byte_code+1446>, 0x55555585651e <exec_byte_code+1446>, 0x555555856524 <exec_byte_code+1452>, 0x5555558564e5 <exec_byte_code+1389>, 0x55555585693c <exec_byte_code+2500>, 0x55555585693e <exec_byte_code+2502>, 0x555555856940 <exec_byte_code+2504>, 0x555555856942 <exec_byte_code+2506>, 0x555555856944 <exec_byte_code+2508>, 0x555555856944 <exec_byte_code+2508>, 0x555555856979 <exec_byte_code+2561>, 0x55555585694a <exec_byte_code+2514>, 0x555555856b6e <exec_byte_code+3062>, 0x555555856b70 <exec_byte_code+3064>, 0x555555856b72 <exec_byte_code+3066>, 0x555555856b74 <exec_byte_code+3068>, 0x555555856b76 <exec_byte_code+3070>, 0x555555856b76 <exec_byte_code+3070>, 0x555555856b28 <exec_byte_code+2992>, 0x555555856b3f <exec_byte_code+3015>, 0x555555856c23 <exec_byte_code+3243>, 0x555555856c25 <exec_byte_code+3245>, 0x555555856c27 <exec_byte_code+3247>, 0x555555856c29 <exec_byte_code+3249>, 0x555555856c2b <exec_byte_code+3251>, 0x555555856c2b <exec_byte_code+3251>, 0x555555856bdd <exec_byte_code+3173>, 0x555555856bf4 <exec_byte_code+3196>, 0x555555856cd5 <exec_byte_code+3421>, 0x555555856cd7 <exec_byte_code+3423>, 0x555555856cd9 <exec_byte_code+3425>, 0x555555856cdb <exec_byte_code+3427>, 0x555555856cdd <exec_byte_code+3429>, 0x555555856cdd <exec_byte_code+3429>, 0x555555856c8f <exec_byte_code+3351>, 0x555555856ca6 <exec_byte_code+3374>, 0x55555585753d <exec_byte_code+5573>, 0x555555857420 <exec_byte_code+5288>, 0x555555857417 <exec_byte_code+5279>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555857777 <exec_byte_code+6143>, 0x55555585788d <exec_byte_code+6421>, 0x5555558578ea <exec_byte_code+6514>, 0x55555585794a <exec_byte_code+6610>, 0x5555558579ac <exec_byte_code+6708>, 0x555555856795 <exec_byte_code+2077>, 0x555555856810 <exec_byte_code+2200>, 0x555555857a25 <exec_byte_code+6829>, 0x5555558566d2 <exec_byte_code+1882>, 0x555555856878 <exec_byte_code+2304>, 0x555555857a8d <exec_byte_code+6933>, 0x555555857af5 <exec_byte_code+7037>, 0x555555857b3d <exec_byte_code+7109>, 0x555555857ba5 <exec_byte_code+7213>, 0x555555857c0b <exec_byte_code+7315>, 0x555555857cf1 <exec_byte_code+7545>, 0x555555857d39 <exec_byte_code+7617>, 0x555555857da1 <exec_byte_code+7721>, 0x555555857e26 <exec_byte_code+7854>, 0x555555857e6e <exec_byte_code+7926>, 0x555555857eb6 <exec_byte_code+7998>, 0x555555857f1e <exec_byte_code+8102>, 0x555555857f86 <exec_byte_code+8206>, 0x555555857fee <exec_byte_code+8310>, 0x555555858073 <exec_byte_code+8443>, 0x5555558580c2 <exec_byte_code+8522>, 0x555555858111 <exec_byte_code+8601>, 0x5555558581d8 <exec_byte_code+8800>, 0x5555558582d1 <exec_byte_code+9049>, 0x5555558583ca <exec_byte_code+9298>, 0x555555858437 <exec_byte_code+9407>, 0x5555558584a4 <exec_byte_code+9516>, 0x555555858511 <exec_byte_code+9625>, 0x55555585857e <exec_byte_code+9734>, 0x5555558585eb <exec_byte_code+9843>, 0x55555585863a <exec_byte_code+9922>, 0x555555858734 <exec_byte_code+10172>, 0x555555858783 <exec_byte_code+10251>, 0x5555558587d2 <exec_byte_code+10330>, 0x555555858821 <exec_byte_code+10409>, 0x555555858927 <exec_byte_code+10671>, 0x555555857297 <exec_byte_code+4895>, 0x555555858982 <exec_byte_code+10762>, 0x5555558589ca <exec_byte_code+10834>, 0x555555858a8c <exec_byte_code+11028>, 0x555555858af5 <exec_byte_code+11133>, 0x555555858b50 <exec_byte_code+11224>, 0x555555858b98 <exec_byte_code+11296>, 0x555555858bdb <exec_byte_code+11363>, 0x555555858c1e <exec_byte_code+11430>, 0x555555858c69 <exec_byte_code+11505>, 0x555555859aeb <exec_byte_code+15219>, 0x555555858cc1 <exec_byte_code+11593>, 0x555555858d04 <exec_byte_code+11660>, 0x555555858d47 <exec_byte_code+11727>, 0x555555858d8a <exec_byte_code+11794>, 0x555555858dcd <exec_byte_code+11861>, 0x555555858e10 <exec_byte_code+11928>, 0x555555857297 <exec_byte_code+4895>, 0x555555859aeb <exec_byte_code+15219>, 0x555555858e58 <exec_byte_code+12000>, 0x555555858eaa <exec_byte_code+12082>, 0x555555858ef2 <exec_byte_code+12154>, 0x555555858f3a <exec_byte_code+12226>, 0x555555858fa2 <exec_byte_code+12330>, 0x55555585900a <exec_byte_code+12434>, 0x555555859052 <exec_byte_code+12506>, 0x55555585910f <exec_byte_code+12695>, 0x555555859177 <exec_byte_code+12799>, 0x5555558591df <exec_byte_code+12903>, 0x555555859247 <exec_byte_code+13007>, 0x55555585928a <exec_byte_code+13074>, 0x555555859aeb <exec_byte_code+15219>, 0x5555558571dd <exec_byte_code+4709>, 0x555555856d87 <exec_byte_code+3599>, 0x555555856640 <exec_byte_code+1736>, 0x555555856e38 <exec_byte_code+3776>, 0x555555856ebc <exec_byte_code+3908>, 0x555555856f3d <exec_byte_code+4037>, 0x555555857191 <exec_byte_code+4633>, 0x5555558571a6 <exec_byte_code+4654>, 0x555555856ad5 <exec_byte_code+2909>, 0x555555857260 <exec_byte_code+4840>, 0x5555558572ce <exec_byte_code+4950>, 0x55555585735f <exec_byte_code+5095>, 0x5555558573a8 <exec_byte_code+5168>, 0x555555857589 <exec_byte_code+5649>, 0x555555857606 <exec_byte_code+5774>, 0x55555585768b <exec_byte_code+5907>, 0x5555558576f1 <exec_byte_code+6009>, 0x555555856d39 <exec_byte_code+3521>, 0x5555558592d2 <exec_byte_code+13146>, 0x555555859357 <exec_byte_code+13279>, 0x55555585939f <exec_byte_code+13351>, 0x5555558593e7 <exec_byte_code+13423>, 0x55555585942f <exec_byte_code+13495>, 0x555555859477 <exec_byte_code+13567>, 0x5555558594df <exec_byte_code+13671>, 0x555555859547 <exec_byte_code+13775>, 0x5555558595af <exec_byte_code+13879>, 0x555555859617 <exec_byte_code+13983>, 0x555555859760 <exec_byte_code+14312>, 0x5555558597c8 <exec_byte_code+14416>, 0x555555859830 <exec_byte_code+14520>, 0x555555859878 <exec_byte_code+14592>, 0x5555558598e0 <exec_byte_code+14696>, 0x555555859948 <exec_byte_code+14800>, 0x555555859990 <exec_byte_code+14872>, 0x5555558599d8 <exec_byte_code+14944>, 0x555555858870 <exec_byte_code+10488>, 0x5555558588bf <exec_byte_code+10567>, 0x555555859a27 <exec_byte_code+15023>, 0x555555859a89 <exec_byte_code+15121>, 0x555555859aeb <exec_byte_code+15219>, 0x555555856fbe <exec_byte_code+4166>, 0x555555856fdb <exec_byte_code+4195>, 0x55555585704a <exec_byte_code+4306>, 0x5555558570b9 <exec_byte_code+4417>, 0x555555857125 <exec_byte_code+4525>, 0x555555857c79 <exec_byte_code+7425>, 0x555555858160 <exec_byte_code+8680>, 0x555555858a14 <exec_byte_code+10908>, 0x555555859c82 <exec_byte_code+15626>, 0x555555859cf7 <exec_byte_code+15743>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859d8d <exec_byte_code+15893>, 0x555555859e14 <exec_byte_code+16028>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859f62 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 51
        bytestr_length = 494
        vectorp = 0x7ffff2908528
        quitcounter = 59 ';'
        stack_items = 24
        sa_avail = 15698
        sa_count = 7
        alloc = 0x7fffffffcc80
        stack_base = 0x7fffffffcc80
        top = 0x7fffffffccb0
        stack_lim = 0x7fffffffcd40
        bytestr_data = 0x7fffffffcd40 "\211??\205\355\001\b\302p\001\031\303\304\302\"r\211q\210\305\306\002\"\216\004c\210eb\210`dW\203\345\001`lj\211\211g\310U\203\234\001\311\061:"
        pc = 0x7fffffffcf28 "\262\001)\266\203\207"
        count = 7
        result = XIL(0)
#24 0x00005555557fdd7e in fetch_and_exec_byte_code (fun=XIL(0x7ffff29084f5), syms_left=make_fixnum(257), nargs=1, args=0x7fffffffd3d8) at ../../master/src/eval.c:3036
#25 0x00005555557fe204 in funcall_lambda (fun=XIL(0x7ffff29084f5), nargs=1, arg_vector=0x7fffffffd3d8) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffd350)
        syms_left = make_fixnum(257)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 7
        i = 93824994985742
        optional = false
        rest = false
#26 0x00005555557fd5d7 in Ffuncall (nargs=2, args=0x7fffffffd3d0) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff29084f5)
        original_fun = XIL(0xcff0)
        funcar = XIL(0x555555e63080)
        numargs = 1
        val = XIL(0x5af0)
        count = 6
#27 0x00005555557fcda1 in call1 (fn=XIL(0xcff0), arg1=XIL(0x555556232084)) at ../../master/src/eval.c:2774
#28 0x0000555555830f9f in print_error_message (data=XIL(0x5555584b93b3), stream=XIL(0x30), context=0x7ffff2c64148 "", caller=XIL(0)) at ../../master/src/print.c:944
        error_conditions = XIL(0x7ffff2c2da13)
        errname = XIL(0xb820)
        errmsg = XIL(0x55555571d57f)
        file_error = XIL(0x7fffffffd4c0)
        tail = XIL(0x30)
#29 0x000055555572094e in Fcommand_error_default_function (data=XIL(0x5555584b93b3), context=XIL(0x7ffff25734c4), signal=XIL(0)) at ../../master/src/keyboard.c:1032
        sf = 0x555556f6f728
#30 0x00005555557fdb25 in funcall_subr (subr=0x555555dd86a0 <Scommand_error_default_function>, numargs=3, args=0x7fffffffd628) at ../../master/src/eval.c:2992
        internal_argbuf = {XIL(0x7fffffffd570), XIL(0x1000000000), XIL(0x555555dd86a0), XIL(0x7fffffffd578), make_fixnum(23456248746435), XIL(0x10557f41d5), XIL(0x555555dd86a5), XIL(0x7fffffffd590)}
        internal_args = 0x7fffffffd628
#31 0x00005555557fd593 in Ffuncall (nargs=4, args=0x7fffffffd620) at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd86a5)
        original_fun = XIL(0x2aaa9ccc8548)
        funcar = XIL(0x7fffffffd5f0)
        numargs = 3
        val = XIL(0x7fffffffd610)
        count = 5
#32 0x00005555557fc6b7 in Fapply (nargs=2, args=0x7fffffffd7e8) at ../../master/src/eval.c:2544
        i = 4
        funcall_nargs = 4
        funcall_args = 0x7fffffffd620
        spread_arg = XIL(0)
        fun = XIL(0x555555dd86a5)
        sa_avail = 16352
        sa_count = 5
        numargs = 3
        retval = XIL(0)
#33 0x00005555557fd9bc in funcall_subr (subr=0x555555de04a0 <Sapply>, numargs=2, args=0x7fffffffd7e8) at ../../master/src/eval.c:2967
#34 0x00005555557fd593 in Ffuncall (nargs=3, args=0x7fffffffd7e0) at ../../master/src/eval.c:2914
        fun = XIL(0x555555de04a5)
        original_fun = XIL(0x2d60)
        funcar = XIL(0x7fffffffd7a0)
        numargs = 2
        val = XIL(0x7fffffffdcc8)
        count = 4
#35 0x0000555555856c56 in exec_byte_code (bytestr=XIL(0x7ffff258f0e4), vector=XIL(0x7ffff2c1d0fd), maxdepth=make_fixnum(5), args_template=make_fixnum(128), nargs=3, args=0x7fffffffdcc8) at ../../master/src/bytecode.c:632
        op = 2
        type = (unknown: 0xffffdb10)
        targets = {0x555555859aeb <exec_byte_code+15219>, 0x555555859b10 <exec_byte_code+15256>, 0x555555859b12 <exec_byte_code+15258>, 0x555555859b14 <exec_byte_code+15260>, 0x555555859b16 <exec_byte_code+15262>, 0x555555859b16 <exec_byte_code+15262>, 0x555555859b7b <exec_byte_code+15363>, 0x555555859bef <exec_byte_code+15479>, 0x555555856516 <exec_byte_code+1438>, 0x555555856518 <exec_byte_code+1440>, 0x55555585651a <exec_byte_code+1442>, 0x55555585651c <exec_byte_code+1444>, 0x55555585651e <exec_byte_code+1446>, 0x55555585651e <exec_byte_code+1446>, 0x555555856524 <exec_byte_code+1452>, 0x5555558564e5 <exec_byte_code+1389>, 0x55555585693c <exec_byte_code+2500>, 0x55555585693e <exec_byte_code+2502>, 0x555555856940 <exec_byte_code+2504>, 0x555555856942 <exec_byte_code+2506>, 0x555555856944 <exec_byte_code+2508>, 0x555555856944 <exec_byte_code+2508>, 0x555555856979 <exec_byte_code+2561>, 0x55555585694a <exec_byte_code+2514>, 0x555555856b6e <exec_byte_code+3062>, 0x555555856b70 <exec_byte_code+3064>, 0x555555856b72 <exec_byte_code+3066>, 0x555555856b74 <exec_byte_code+3068>, 0x555555856b76 <exec_byte_code+3070>, 0x555555856b76 <exec_byte_code+3070>, 0x555555856b28 <exec_byte_code+2992>, 0x555555856b3f <exec_byte_code+3015>, 0x555555856c23 <exec_byte_code+3243>, 0x555555856c25 <exec_byte_code+3245>, 0x555555856c27 <exec_byte_code+3247>, 0x555555856c29 <exec_byte_code+3249>, 0x555555856c2b <exec_byte_code+3251>, 0x555555856c2b <exec_byte_code+3251>, 0x555555856bdd <exec_byte_code+3173>, 0x555555856bf4 <exec_byte_code+3196>, 0x555555856cd5 <exec_byte_code+3421>, 0x555555856cd7 <exec_byte_code+3423>, 0x555555856cd9 <exec_byte_code+3425>, 0x555555856cdb <exec_byte_code+3427>, 0x555555856cdd <exec_byte_code+3429>, 0x555555856cdd <exec_byte_code+3429>, 0x555555856c8f <exec_byte_code+3351>, 0x555555856ca6 <exec_byte_code+3374>, 0x55555585753d <exec_byte_code+5573>, 0x555555857420 <exec_byte_code+5288>, 0x555555857417 <exec_byte_code+5279>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555857777 <exec_byte_code+6143>, 0x55555585788d <exec_byte_code+6421>, 0x5555558578ea <exec_byte_code+6514>, 0x55555585794a <exec_byte_code+6610>, 0x5555558579ac <exec_byte_code+6708>, 0x555555856795 <exec_byte_code+2077>, 0x555555856810 <exec_byte_code+2200>, 0x555555857a25 <exec_byte_code+6829>, 0x5555558566d2 <exec_byte_code+1882>, 0x555555856878 <exec_byte_code+2304>, 0x555555857a8d <exec_byte_code+6933>, 0x555555857af5 <exec_byte_code+7037>, 0x555555857b3d <exec_byte_code+7109>, 0x555555857ba5 <exec_byte_code+7213>, 0x555555857c0b <exec_byte_code+7315>, 0x555555857cf1 <exec_byte_code+7545>, 0x555555857d39 <exec_byte_code+7617>, 0x555555857da1 <exec_byte_code+7721>, 0x555555857e26 <exec_byte_code+7854>, 0x555555857e6e <exec_byte_code+7926>, 0x555555857eb6 <exec_byte_code+7998>, 0x555555857f1e <exec_byte_code+8102>, 0x555555857f86 <exec_byte_code+8206>, 0x555555857fee <exec_byte_code+8310>, 0x555555858073 <exec_byte_code+8443>, 0x5555558580c2 <exec_byte_code+8522>, 0x555555858111 <exec_byte_code+8601>, 0x5555558581d8 <exec_byte_code+8800>, 0x5555558582d1 <exec_byte_code+9049>, 0x5555558583ca <exec_byte_code+9298>, 0x555555858437 <exec_byte_code+9407>, 0x5555558584a4 <exec_byte_code+9516>, 0x555555858511 <exec_byte_code+9625>, 0x55555585857e <exec_byte_code+9734>, 0x5555558585eb <exec_byte_code+9843>, 0x55555585863a <exec_byte_code+9922>, 0x555555858734 <exec_byte_code+10172>, 0x555555858783 <exec_byte_code+10251>, 0x5555558587d2 <exec_byte_code+10330>, 0x555555858821 <exec_byte_code+10409>, 0x555555858927 <exec_byte_code+10671>, 0x555555857297 <exec_byte_code+4895>, 0x555555858982 <exec_byte_code+10762>, 0x5555558589ca <exec_byte_code+10834>, 0x555555858a8c <exec_byte_code+11028>, 0x555555858af5 <exec_byte_code+11133>, 0x555555858b50 <exec_byte_code+11224>, 0x555555858b98 <exec_byte_code+11296>, 0x555555858bdb <exec_byte_code+11363>, 0x555555858c1e <exec_byte_code+11430>, 0x555555858c69 <exec_byte_code+11505>, 0x555555859aeb <exec_byte_code+15219>, 0x555555858cc1 <exec_byte_code+11593>, 0x555555858d04 <exec_byte_code+11660>, 0x555555858d47 <exec_byte_code+11727>, 0x555555858d8a <exec_byte_code+11794>, 0x555555858dcd <exec_byte_code+11861>, 0x555555858e10 <exec_byte_code+11928>, 0x555555857297 <exec_byte_code+4895>, 0x555555859aeb <exec_byte_code+15219>, 0x555555858e58 <exec_byte_code+12000>, 0x555555858eaa <exec_byte_code+12082>, 0x555555858ef2 <exec_byte_code+12154>, 0x555555858f3a <exec_byte_code+12226>, 0x555555858fa2 <exec_byte_code+12330>, 0x55555585900a <exec_byte_code+12434>, 0x555555859052 <exec_byte_code+12506>, 0x55555585910f <exec_byte_code+12695>, 0x555555859177 <exec_byte_code+12799>, 0x5555558591df <exec_byte_code+12903>, 0x555555859247 <exec_byte_code+13007>, 0x55555585928a <exec_byte_code+13074>, 0x555555859aeb <exec_byte_code+15219>, 0x5555558571dd <exec_byte_code+4709>, 0x555555856d87 <exec_byte_code+3599>, 0x555555856640 <exec_byte_code+1736>, 0x555555856e38 <exec_byte_code+3776>, 0x555555856ebc <exec_byte_code+3908>, 0x555555856f3d <exec_byte_code+4037>, 0x555555857191 <exec_byte_code+4633>, 0x5555558571a6 <exec_byte_code+4654>, 0x555555856ad5 <exec_byte_code+2909>, 0x555555857260 <exec_byte_code+4840>, 0x5555558572ce <exec_byte_code+4950>, 0x55555585735f <exec_byte_code+5095>, 0x5555558573a8 <exec_byte_code+5168>, 0x555555857589 <exec_byte_code+5649>, 0x555555857606 <exec_byte_code+5774>, 0x55555585768b <exec_byte_code+5907>, 0x5555558576f1 <exec_byte_code+6009>, 0x555555856d39 <exec_byte_code+3521>, 0x5555558592d2 <exec_byte_code+13146>, 0x555555859357 <exec_byte_code+13279>, 0x55555585939f <exec_byte_code+13351>, 0x5555558593e7 <exec_byte_code+13423>, 0x55555585942f <exec_byte_code+13495>, 0x555555859477 <exec_byte_code+13567>, 0x5555558594df <exec_byte_code+13671>, 0x555555859547 <exec_byte_code+13775>, 0x5555558595af <exec_byte_code+13879>, 0x555555859617 <exec_byte_code+13983>, 0x555555859760 <exec_byte_code+14312>, 0x5555558597c8 <exec_byte_code+14416>, 0x555555859830 <exec_byte_code+14520>, 0x555555859878 <exec_byte_code+14592>, 0x5555558598e0 <exec_byte_code+14696>, 0x555555859948 <exec_byte_code+14800>, 0x555555859990 <exec_byte_code+14872>, 0x5555558599d8 <exec_byte_code+14944>, 0x555555858870 <exec_byte_code+10488>, 0x5555558588bf <exec_byte_code+10567>, 0x555555859a27 <exec_byte_code+15023>, 0x555555859a89 <exec_byte_code+15121>, 0x555555859aeb <exec_byte_code+15219>, 0x555555856fbe <exec_byte_code+4166>, 0x555555856fdb <exec_byte_code+4195>, 0x55555585704a <exec_byte_code+4306>, 0x5555558570b9 <exec_byte_code+4417>, 0x555555857125 <exec_byte_code+4525>, 0x555555857c79 <exec_byte_code+7425>, 0x555555858160 <exec_byte_code+8680>, 0x555555858a14 <exec_byte_code+10908>, 0x555555859c82 <exec_byte_code+15626>, 0x555555859cf7 <exec_byte_code+15743>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859d8d <exec_byte_code+15893>, 0x555555859e14 <exec_byte_code+16028>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859aeb <exec_byte_code+15219>, 0x555555859f62 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 4
        bytestr_length = 10
        vectorp = 0x7ffff2c1d100
        quitcounter = 1 '\001'
        stack_items = 6
        sa_avail = 16326
        sa_count = 4
        alloc = 0x7fffffffd7d0
        stack_base = 0x7fffffffd7d0
        top = 0x7fffffffd7e0
        stack_lim = 0x7fffffffd800
        bytestr_data = 0x7fffffffd800 "\300\302\002\"\300\301\003\"\210\207"
        pc = 0x7fffffffd804 "\300\301\003\"\210\207"
        count = 4
        result = XIL(0x5555557f41d5)
#36 0x00005555557fdd7e in fetch_and_exec_byte_code (fun=XIL(0x7ffff2c1d0cd), syms_left=make_fixnum(128), nargs=3, args=0x7fffffffdcc8) at ../../master/src/eval.c:3036
#37 0x00005555557fe204 in funcall_lambda (fun=XIL(0x7ffff2c1d0cd), nargs=3, arg_vector=0x7fffffffdcc8) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffdc30)
        syms_left = make_fixnum(128)
        next = make_fixnum(2)
        lexenv = XIL(0x1800000003)
        count = 4
        i = 93824994985742
        optional = false
        rest = false
#38 0x00005555557fd5d7 in Ffuncall (nargs=4, args=0x7fffffffdcc0) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff2c1d0cd)
        original_fun = XIL(0x7ffff2c1d0cd)
        funcar = XIL(0x7fffffffdc70)
        numargs = 3
        val = XIL(0x7fffffffdc90)
        count = 3
#39 0x00005555557fce2b in call3 (fn=XIL(0x7ffff2c1d0cd), arg1=XIL(0x5555584b93b3), arg2=XIL(0x7ffff25734c4), arg3=XIL(0)) at ../../master/src/eval.c:2788
#40 0x0000555555720769 in cmd_error_internal (data=XIL(0x5555584b93b3), context=0x7fffffffdd70 "") at ../../master/src/keyboard.c:987
#41 0x0000555555720637 in cmd_error (data=XIL(0x5555584b93b3)) at ../../master/src/keyboard.c:956
        old_level = XIL(0)
        old_length = XIL(0)
        macroerror = "\000\000\000\000\000\000\000\000\360\350\365UUU\000\000\260\335\377\377\001\000\000\000\002\000\000\000\000\000\000\000\000x\000\000\000\000\000\000\230\227\177UUU\000\000\360h"
#42 0x00005555557f9347 in internal_condition_case (bfun=0x555555720ec1 <command_loop_1>, handlers=XIL(0x90), hfun=0x5555557204e4 <cmd_error>) at ../../master/src/eval.c:1435
        val = XIL(0x5555584b93b3)
        c = 0x555555f5e8f0
#43 0x0000555555720ab1 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#44 0x00005555557f875f in internal_catch (tag=XIL(0xd9e0), func=0x555555720a84 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555f47770
#45 0x0000555555720a50 in command_loop () at ../../master/src/keyboard.c:1073
#46 0x000055555571ffcd in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf00)
#47 0x00005555557201c4 in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#48 0x000055555571c0a9 in main (argc=2, argv=0x7fffffffe168) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"window-list-1" (0xffffbfa0)
"replace-buffer-in-windows" (0xffffc4a8)
"kill-buffer" (0xffffc710)
0x57821b48 PVEC_COMPILED
"substitute-command-keys" (0xffffd3d8)
"command-error-default-function" (0xffffd628)
"apply" (0xffffd7e8)
0xf2c1d0c8 PVEC_COMPILED

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 17:37                                                                                                                                       ` Michael Welsh Duggan
@ 2021-04-07 17:55                                                                                                                                         ` Michael Welsh Duggan
  2021-04-07 18:31                                                                                                                                         ` Michael Welsh Duggan
  2021-04-07 18:48                                                                                                                                         ` martin rudalics
  2 siblings, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-07 17:55 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

Michael Welsh Duggan <mwd@cert.org> writes:

> martin rudalics <rudalics@gmx.at> writes:
>
>>  > Don't know where to go from here, but I have a breakpoint set on
>>  >
>>  >        replace_buffer_in_windows_safely_count = 0;
>>  >
>>  > conditioned on count != 0.
>>
>> Good.  IIUC this
>>
>>  > (gdb) p list_length(Vwindow_list)
>>  > $2 = 2
>>
>> and this
>>
>>  > (gdb) xlist
>>  > $13 = 0x1a
>>  > Lisp_Int0
>>  > $14 = 6
>>
>> together indicate that Vwindow_list spontaneously shrinks from 6 to 2
>> elements (which is "impossible" as we know already).  Attaching the next
>> patch which should catch this situation automatically.  It will still be
>> of no help because we won't catch the one that apparently clobbers that
>> list but hopefully more useful than the previous diff.
>
> Triggered.  Here's the backtrace:

[...]

And, to be clear:

(gdb) up
#2  0x000055555564b3ea in window_list () at ../../master/src/window.c:2585
2585        eassert (window_list_length == list_length (Vwindow_list));
(gdb) p window_list_length
$1 = 6
(gdb) p list_length(Vwindow_list)
$2 = 2

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 17:37                                                                                                                                       ` Michael Welsh Duggan
  2021-04-07 17:55                                                                                                                                         ` Michael Welsh Duggan
@ 2021-04-07 18:31                                                                                                                                         ` Michael Welsh Duggan
  2021-04-07 19:25                                                                                                                                           ` Michael Welsh Duggan
  2021-04-07 19:40                                                                                                                                           ` Eli Zaretskii
  2021-04-07 18:48                                                                                                                                         ` martin rudalics
  2 siblings, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-07 18:31 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

Michael Welsh Duggan <mwd@cert.org> writes:

> martin rudalics <rudalics@gmx.at> writes:
>
>>  > Don't know where to go from here, but I have a breakpoint set on
>>  >
>>  >        replace_buffer_in_windows_safely_count = 0;
>>  >
>>  > conditioned on count != 0.
>>
>> Good.  IIUC this
>>
>>  > (gdb) p list_length(Vwindow_list)
>>  > $2 = 2
>>
>> and this
>>
>>  > (gdb) xlist
>>  > $13 = 0x1a
>>  > Lisp_Int0
>>  > $14 = 6
>>
>> together indicate that Vwindow_list spontaneously shrinks from 6 to 2
>> elements (which is "impossible" as we know already).  Attaching the next
>> patch which should catch this situation automatically.  It will still be
>> of no help because we won't catch the one that apparently clobbers that
>> list but hopefully more useful than the previous diff.
>
> Triggered.  Here's the backtrace:

Context for what was going on when the assert was triggered: 

 As usual, when triggering this, I had turned off the VPN, and Gnus hung
when trying to fetch mail or news over an existing connection.  I typed
C-g a couple of times to get back interactivity.  This is when the
assert happened.  In past instances the next step would have been to
bring up the *Server* buffer, close and re-open connections, and then
quit the *Server* buffer.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 17:37                                                                                                                                       ` Michael Welsh Duggan
  2021-04-07 17:55                                                                                                                                         ` Michael Welsh Duggan
  2021-04-07 18:31                                                                                                                                         ` Michael Welsh Duggan
@ 2021-04-07 18:48                                                                                                                                         ` martin rudalics
  2021-04-07 18:53                                                                                                                                           ` Michael Welsh Duggan
  2 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-07 18:48 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 1013 bytes --]

 > Triggered.  Here's the backtrace:
 >
 > #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647)
 >      at ../../master/src/emacs.c:379
 > #1  0x00005555557c4aa2 in die
 >      (msg=0x5555559105c8 "window_list_length == list_length (Vwindow_list)", file=0x55555590f9cf "../../master/src/window.c", line=2585)
 >      at ../../master/src/alloc.c:7420
 >
[...]
 > Lisp Backtrace:
 > "window-list-1" (0xffffbfa0)
 > "replace-buffer-in-windows" (0xffffc4a8)
 > "kill-buffer" (0xffffc710)
 > 0x57821b48 PVEC_COMPILED
 > "substitute-command-keys" (0xffffd3d8)
 > "command-error-default-function" (0xffffd628)
 > "apply" (0xffffd7e8)
 > 0xf2c1d0c8 PVEC_COMPILED

All we can conclude from that is that Vwindow_list must have been
clobbered before `kill-buffer' triggered the execution of
`replace-buffer-in-windows'.  When and how that happened is yet unclear.

The attached should cure the crashes by simply reconstructing the full
list after window_list notices that Vwindow_list has changed length.

martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 7976 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..70b37e61a2 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1951,6 +1951,9 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
      This gets rid of them for certain.  */
   reset_buffer_local_variables (b, 1);
 
+  if (!b->base_buffer)
+    eassert (b->window_count == 0);
+
   bset_name (b, Qnil);
 
   block_input ();
@@ -1991,6 +1994,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2156,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.  */
diff --git a/src/window.c b/src/window.c
index eb16e2a433..71dd2428e2 100644
--- a/src/window.c
+++ b/src/window.c
@@ -87,6 +87,8 @@
    by setting it to nil.  */
 Lisp_Object Vwindow_list;
 
+static int window_list_length = 0;
+
 /* True mean window_change_record has to record all live frames.  */
 static bool window_change_record_frames;
 
@@ -307,7 +309,11 @@ wset_buffer (struct window *w, Lisp_Object val)
   if (BUFFERP (val))
     /* Make sure that we do not assign the buffer
        to an internal window.  */
-    eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    {
+      eassert (BUFFER_LIVE_P (XBUFFER (val)));
+      eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    }
+
   w->contents = val;
   adjust_window_count (w, 1);
 }
@@ -315,6 +321,7 @@ wset_buffer (struct window *w, Lisp_Object val)
 static void
 wset_old_buffer (struct window *w, Lisp_Object val)
 {
+  eassert (BUFFER_LIVE_P (XBUFFER (val)));
   w->old_buffer = val;
 }
 
@@ -594,6 +601,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -2553,7 +2562,8 @@ add_window_to_list (struct window *w, void *user_data)
 Lisp_Object
 window_list (void)
 {
-  if (!CONSP (Vwindow_list))
+  if (!CONSP (Vwindow_list)
+      || window_list_length != list_length (Vwindow_list))
     {
       Lisp_Object tail, frame;
 
@@ -2569,6 +2579,8 @@ window_list (void)
 	  arglist = Fnreverse (arglist);
 	  Vwindow_list = nconc2 (Vwindow_list, arglist);
 	}
+
+      window_list_length = list_length (Vwindow_list);
     }
 
   return Vwindow_list;
@@ -2950,6 +2962,8 @@ DEFUN ("window-list-1", Fwindow_list_1, Swindow_list_1, 0, 3, 0,
   CHECK_ALL_WINDOWS                 /* Arg is ignored */
 };
 
+static int replace_buffer_in_windows_safely_count;
+
 static Lisp_Object
 window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 	     Lisp_Object frames)
@@ -3048,6 +3062,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 		if (EQ (window, selected_window)
 		    && XBUFFER (w->contents) == current_buffer)
 		  Fset_buffer (w->contents);
+
+		replace_buffer_in_windows_safely_count += 1;
 	      }
 	    break;
 
@@ -3411,6 +3427,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3419,7 +3437,28 @@ replace_buffer_in_windows (Lisp_Object buffer)
 void
 replace_buffer_in_windows_safely (Lisp_Object buffer)
 {
-  if (buffer_window_count (XBUFFER (buffer)))
+  if (!NILP (Fstring_equal (XBUFFER (buffer)->name_,
+			    build_string ("*Server*"))))
+    {
+      int count = buffer_window_count (XBUFFER (buffer));
+
+      replace_buffer_in_windows_safely_count = 0;
+
+
+      if (buffer_window_count (XBUFFER (buffer)))
+	{
+	  Lisp_Object tail, frame;
+
+	  /* A single call to window_loop won't do the job because it only
+	     considers frames on the current keyboard.  So loop manually over
+	     frames, and handle each one.  */
+	  FOR_EACH_FRAME (tail, frame)
+	    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
+	}
+
+      eassert (count == replace_buffer_in_windows_safely_count);
+    }
+  else if (buffer_window_count (XBUFFER (buffer)))
     {
       Lisp_Object tail, frame;
 
@@ -3960,6 +3999,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4095,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -5174,6 +5218,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
@@ -7233,6 +7279,9 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
   minibuf_selected_window = data->minibuf_selected_window;
 
   SAFE_FREE ();
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return FRAME_LIVE_P (f) ? Qt : Qnil;
 }
 
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 18:48                                                                                                                                         ` martin rudalics
@ 2021-04-07 18:53                                                                                                                                           ` Michael Welsh Duggan
  2021-04-07 20:25                                                                                                                                             ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-07 18:53 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>> Triggered.  Here's the backtrace:
>>
>> #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647)
>>      at ../../master/src/emacs.c:379
>> #1  0x00005555557c4aa2 in die
>>      (msg=0x5555559105c8 "window_list_length == list_length
>> (Vwindow_list)", file=0x55555590f9cf "../../master/src/window.c",
>> line=2585)
>>      at ../../master/src/alloc.c:7420
>>
> [...]
>> Lisp Backtrace:
>> "window-list-1" (0xffffbfa0)
>> "replace-buffer-in-windows" (0xffffc4a8)
>> "kill-buffer" (0xffffc710)
>> 0x57821b48 PVEC_COMPILED
>> "substitute-command-keys" (0xffffd3d8)
>> "command-error-default-function" (0xffffd628)
>> "apply" (0xffffd7e8)
>> 0xf2c1d0c8 PVEC_COMPILED
>
> All we can conclude from that is that Vwindow_list must have been
> clobbered before `kill-buffer' triggered the execution of
> `replace-buffer-in-windows'.  When and how that happened is yet unclear.
>
> The attached should cure the crashes by simply reconstructing the full
> list after window_list notices that Vwindow_list has changed length.

Sure.  But won't that just make it so that I can't trigger the problem
anymore?  Or is that what I am testing?

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 18:31                                                                                                                                         ` Michael Welsh Duggan
@ 2021-04-07 19:25                                                                                                                                           ` Michael Welsh Duggan
  2021-04-07 20:25                                                                                                                                             ` martin rudalics
  2021-04-07 19:40                                                                                                                                           ` Eli Zaretskii
  1 sibling, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-07 19:25 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

Michael Welsh Duggan <mwd@cert.org> writes:

> Michael Welsh Duggan <mwd@cert.org> writes:
>
>> martin rudalics <rudalics@gmx.at> writes:
>>
>>>  > Don't know where to go from here, but I have a breakpoint set on
>>>  >
>>>  >        replace_buffer_in_windows_safely_count = 0;
>>>  >
>>>  > conditioned on count != 0.
>>>
>>> Good.  IIUC this
>>>
>>>  > (gdb) p list_length(Vwindow_list)
>>>  > $2 = 2
>>>
>>> and this
>>>
>>>  > (gdb) xlist
>>>  > $13 = 0x1a
>>>  > Lisp_Int0
>>>  > $14 = 6
>>>
>>> together indicate that Vwindow_list spontaneously shrinks from 6 to 2
>>> elements (which is "impossible" as we know already).  Attaching the next
>>> patch which should catch this situation automatically.  It will still be
>>> of no help because we won't catch the one that apparently clobbers that
>>> list but hopefully more useful than the previous diff.

Using watchpoints on Vwindow_list that are turned off when in
window_list() and ignored when it is set to nil, I was at least able to
determine that whatever is modifying the list is doing so destructively,
not by setting a new value.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 18:31                                                                                                                                         ` Michael Welsh Duggan
  2021-04-07 19:25                                                                                                                                           ` Michael Welsh Duggan
@ 2021-04-07 19:40                                                                                                                                           ` Eli Zaretskii
  1 sibling, 0 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-07 19:40 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Date: Wed, 07 Apr 2021 14:31:51 -0400
> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> 
>  As usual, when triggering this, I had turned off the VPN, and Gnus hung
> when trying to fetch mail or news over an existing connection.  I typed
> C-g a couple of times to get back interactivity.  This is when the
> assert happened.

Maybe we lack an unwind-protect somewhere?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 18:53                                                                                                                                           ` Michael Welsh Duggan
@ 2021-04-07 20:25                                                                                                                                             ` martin rudalics
  0 siblings, 0 replies; 160+ messages in thread
From: martin rudalics @ 2021-04-07 20:25 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

 > Sure.  But won't that just make it so that I can't trigger the problem
 > anymore?

Right.  `replace-buffer-in-windows' should now work on the full window
list and do its job.  replace_buffer_in_windows_safely should not have
to do anything.

 > Or is that what I am testing?

We have found one problem but we have no idea why it happens.  We should
also exclude any other problems with a selected window showing a dead
buffer.  If you run for a while without seeing such things, we can at least
conclude that the problem is "only" that of the clobbered window list.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 19:25                                                                                                                                           ` Michael Welsh Duggan
@ 2021-04-07 20:25                                                                                                                                             ` martin rudalics
  2021-04-07 20:32                                                                                                                                               ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-07 20:25 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

 > Using watchpoints on Vwindow_list that are turned off when in
 > window_list() and ignored when it is set to nil, I was at least able to
 > determine that whatever is modifying the list is doing so destructively,
 > not by setting a new value.

Since I don't believe in miracles I expected that.  But I've been
searching our code base repeatedly and nowhere found a clue that that
list - the return value of window_list - would be modified in such a
deterministic and orderly way.  Maybe I'm blind already.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 20:25                                                                                                                                             ` martin rudalics
@ 2021-04-07 20:32                                                                                                                                               ` Michael Welsh Duggan
  2021-04-08  6:59                                                                                                                                                 ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-07 20:32 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org, Michael Welsh Duggan

martin rudalics <rudalics@gmx.at> writes:

>> Using watchpoints on Vwindow_list that are turned off when in
>> window_list() and ignored when it is set to nil, I was at least able to
>> determine that whatever is modifying the list is doing so destructively,
>> not by setting a new value.
>
> Since I don't believe in miracles I expected that.  But I've been
> searching our code base repeatedly and nowhere found a clue that that
> list - the return value of window_list - would be modified in such a
> deterministic and orderly way.  Maybe I'm blind already.

FWIW, I've been trying to do the same and have been similarly
unsuccessful.

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-07 20:32                                                                                                                                               ` Michael Welsh Duggan
@ 2021-04-08  6:59                                                                                                                                                 ` martin rudalics
  2021-04-08 10:47                                                                                                                                                   ` Gregory Heytings
  2021-04-08 14:35                                                                                                                                                   ` Michael Welsh Duggan
  0 siblings, 2 replies; 160+ messages in thread
From: martin rudalics @ 2021-04-08  6:59 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

[-- Attachment #1: Type: text/plain, Size: 575 bytes --]

 > FWIW, I've been trying to do the same and have been similarly
 > unsuccessful.

I attach a version where I make a shadow copy of Vwindow_list called
Vwindow_list_2.  The two should behave the same just that Vwindow_list_2
is never accessed by other code.  So we can put an assertion like

     eassert (!NILP (Fequal (Vwindow_list, Vwindow_list_2)));

anywhere in the code.  I put one in window_list and it should trigger
the same way as the length check before.

Now if anyone can suggest some strategic positions where to put these
assertions, I'll be all ears.

martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 11404 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..70b37e61a2 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1951,6 +1951,9 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
      This gets rid of them for certain.  */
   reset_buffer_local_variables (b, 1);
 
+  if (!b->base_buffer)
+    eassert (b->window_count == 0);
+
   bset_name (b, Qnil);
 
   block_input ();
@@ -1991,6 +1994,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2156,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.  */
diff --git a/src/nsfns.m b/src/nsfns.m
index 5c4cc915e7..82136b0639 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1447,7 +1447,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side.
 
   /* Make sure windows on this frame appear in calls to next-window
      and similar functions.  */
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 
   return unbind_to (count, frame);
 }
diff --git a/src/w32fns.c b/src/w32fns.c
index 9db367bfaf..f2d5e34c3e 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -6148,7 +6148,7 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
 
   /* Make sure windows on this frame appear in calls to next-window
      and similar functions.  */
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 
   return unbind_to (count, frame);
 }
diff --git a/src/window.c b/src/window.c
index eb16e2a433..da0d2bc57d 100644
--- a/src/window.c
+++ b/src/window.c
@@ -86,6 +86,7 @@
    Functions creating or deleting windows should invalidate this cache
    by setting it to nil.  */
 Lisp_Object Vwindow_list;
+Lisp_Object Vwindow_list_2;
 
 /* True mean window_change_record has to record all live frames.  */
 static bool window_change_record_frames;
@@ -307,7 +308,11 @@ wset_buffer (struct window *w, Lisp_Object val)
   if (BUFFERP (val))
     /* Make sure that we do not assign the buffer
        to an internal window.  */
-    eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    {
+      eassert (BUFFER_LIVE_P (XBUFFER (val)));
+      eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    }
+
   w->contents = val;
   adjust_window_count (w, 1);
 }
@@ -315,6 +320,7 @@ wset_buffer (struct window *w, Lisp_Object val)
 static void
 wset_old_buffer (struct window *w, Lisp_Object val)
 {
+  eassert (BUFFER_LIVE_P (XBUFFER (val)));
   w->old_buffer = val;
 }
 
@@ -594,6 +600,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -2569,7 +2577,11 @@ window_list (void)
 	  arglist = Fnreverse (arglist);
 	  Vwindow_list = nconc2 (Vwindow_list, arglist);
 	}
+
+      Vwindow_list_2 = Fcopy_sequence (Vwindow_list);
     }
+  else
+    eassert (!NILP (Fequal (Vwindow_list, Vwindow_list_2)));
 
   return Vwindow_list;
 }
@@ -2950,6 +2962,8 @@ DEFUN ("window-list-1", Fwindow_list_1, Swindow_list_1, 0, 3, 0,
   CHECK_ALL_WINDOWS                 /* Arg is ignored */
 };
 
+static int replace_buffer_in_windows_safely_count;
+
 static Lisp_Object
 window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 	     Lisp_Object frames)
@@ -3048,6 +3062,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 		if (EQ (window, selected_window)
 		    && XBUFFER (w->contents) == current_buffer)
 		  Fset_buffer (w->contents);
+
+		replace_buffer_in_windows_safely_count += 1;
 	      }
 	    break;
 
@@ -3277,7 +3293,7 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
   free_window_matrices (r);
 
   fset_redisplay (f);
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 
   if (!WINDOW_LEAF_P (w))
     {
@@ -3411,6 +3427,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3419,7 +3437,28 @@ replace_buffer_in_windows (Lisp_Object buffer)
 void
 replace_buffer_in_windows_safely (Lisp_Object buffer)
 {
-  if (buffer_window_count (XBUFFER (buffer)))
+  if (!NILP (Fstring_equal (XBUFFER (buffer)->name_,
+			    build_string ("*Server*"))))
+    {
+      int count = buffer_window_count (XBUFFER (buffer));
+
+      replace_buffer_in_windows_safely_count = 0;
+
+
+      if (buffer_window_count (XBUFFER (buffer)))
+	{
+	  Lisp_Object tail, frame;
+
+	  /* A single call to window_loop won't do the job because it only
+	     considers frames on the current keyboard.  So loop manually over
+	     frames, and handle each one.  */
+	  FOR_EACH_FRAME (tail, frame)
+	    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
+	}
+
+      eassert (count == replace_buffer_in_windows_safely_count);
+    }
+  else if (buffer_window_count (XBUFFER (buffer)))
     {
       Lisp_Object tail, frame;
 
@@ -3960,6 +3999,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4095,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -4296,7 +4340,7 @@ make_window (void)
   w->scroll_bar_height = -1;
   w->column_number_displayed = -1;
   /* Reset window_list.  */
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
   /* Return window.  */
   XSETWINDOW (window, w);
   return window;
@@ -5086,7 +5130,7 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
 	}
 
       fset_redisplay (f);
-      Vwindow_list = Qnil;
+      Vwindow_list = Vwindow_list_2 = Qnil;
 
       wset_next (w, Qnil);  /* Don't delete w->next too.  */
       free_window_matrices (w);
@@ -5174,6 +5218,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
@@ -7233,6 +7279,9 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
   minibuf_selected_window = data->minibuf_selected_window;
 
   SAFE_FREE ();
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return FRAME_LIVE_P (f) ? Qt : Qnil;
 }
 
@@ -7279,7 +7328,7 @@ delete_all_child_windows (Lisp_Object window)
       wset_buffer (w, Qnil);
     }
 
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 }
 \f
 static ptrdiff_t
@@ -8128,8 +8177,9 @@ init_window_once (void)
   selected_window = Qnil;
   staticpro (&selected_window);
 
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
   staticpro (&Vwindow_list);
+  staticpro (&Vwindow_list_2);
 
   minibuf_selected_window = Qnil;
   staticpro (&minibuf_selected_window);
@@ -8148,6 +8198,7 @@ init_window_once (void)
   PDUMPER_RESET_LV (minibuf_window, Qnil);
   PDUMPER_RESET_LV (selected_window, Qnil);
   PDUMPER_RESET_LV (Vwindow_list, Qnil);
+  PDUMPER_RESET_LV (Vwindow_list_2, Qnil);
   PDUMPER_RESET_LV (minibuf_selected_window, Qnil);
 
   /* Hack: if mode_line_in_non_selected_windows is true (which it may
@@ -8178,7 +8229,7 @@ init_window_once (void)
 void
 init_window (void)
 {
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 }
 
 void
diff --git a/src/window.h b/src/window.h
index b6f88e8f55..74d3cbb7be 100644
--- a/src/window.h
+++ b/src/window.h
@@ -1171,6 +1171,7 @@ #define CHECK_LIVE_WINDOW(WINDOW)				\
 
 /* These used to be in lisp.h.  */
 extern Lisp_Object Vwindow_list;
+extern Lisp_Object Vwindow_list_2;
 
 extern Lisp_Object window_list (void);
 extern Lisp_Object window_parameter (struct window *, Lisp_Object parameter);
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;
diff --git a/src/xfns.c b/src/xfns.c
index d90644819b..fbe9014555 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -4225,7 +4225,7 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
 
   /* Make sure windows on this frame appear in calls to next-window
      and similar functions.  */
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 
  return unbind_to (count, frame);
 }

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08  6:59                                                                                                                                                 ` martin rudalics
@ 2021-04-08 10:47                                                                                                                                                   ` Gregory Heytings
  2021-04-08 11:39                                                                                                                                                     ` Eli Zaretskii
  2021-04-08 12:03                                                                                                                                                     ` martin rudalics
  2021-04-08 14:35                                                                                                                                                   ` Michael Welsh Duggan
  1 sibling, 2 replies; 160+ messages in thread
From: Gregory Heytings @ 2021-04-08 10:47 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org, 47244,
	Michael Welsh Duggan


>
> Now if anyone can suggest some strategic positions where to put these 
> assertions, I'll be all ears.
>

I'm really impressed by your patience.  I have no suggestion, but a 
question: why don't you try to bisect this bug?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 10:47                                                                                                                                                   ` Gregory Heytings
@ 2021-04-08 11:39                                                                                                                                                     ` Eli Zaretskii
  2021-04-08 12:06                                                                                                                                                       ` Andreas Schwab
  2021-04-08 12:03                                                                                                                                                     ` martin rudalics
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-08 11:39 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: mwd, schwab, 47244, mwd

> Date: Thu, 08 Apr 2021 10:47:55 +0000
> From: Gregory Heytings <gregory@heytings.org>
> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>, 47244@debbugs.gnu.org,
>  Michael Welsh Duggan <mwd@cert.org>
> 
> I have no suggestion, but a question: why don't you try to bisect
> this bug?

Bisection requires to know the last commit where the bug didn't exist.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 10:47                                                                                                                                                   ` Gregory Heytings
  2021-04-08 11:39                                                                                                                                                     ` Eli Zaretskii
@ 2021-04-08 12:03                                                                                                                                                     ` martin rudalics
  2021-04-08 12:24                                                                                                                                                       ` Gregory Heytings
  1 sibling, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-08 12:03 UTC (permalink / raw)
  To: Gregory Heytings
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org, 47244,
	Michael Welsh Duggan

 > I have no suggestion, but a question: why don't you try to bisect this bug?

Probably because this bug sits just around the corner - we are only not
able to see it.  Bisecting is problematic for two reasons: It takes
Michael some time to reproduce the bug and it's not yet clear whether
the functionality of an older Emacs would allow him to reproduce that
bug in the first place.

martin







^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 11:39                                                                                                                                                     ` Eli Zaretskii
@ 2021-04-08 12:06                                                                                                                                                       ` Andreas Schwab
  2021-04-08 12:29                                                                                                                                                         ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Andreas Schwab @ 2021-04-08 12:06 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, Gregory Heytings, 47244, mwd

On Apr 08 2021, Eli Zaretskii wrote:

> Bisection requires to know the last commit where the bug didn't exist.

Not the *last* commit, that what bisection is for to find out.  It just
requires *any* commit where the bug didn't exist.  But it also requires
a reliable on/off condition for the bug.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 12:03                                                                                                                                                     ` martin rudalics
@ 2021-04-08 12:24                                                                                                                                                       ` Gregory Heytings
  2021-04-08 13:39                                                                                                                                                         ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Gregory Heytings @ 2021-04-08 12:24 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org, 47244,
	Michael Welsh Duggan


>> I have no suggestion, but a question: why don't you try to bisect this 
>> bug?
>
> Probably because this bug sits just around the corner - we are only not 
> able to see it.  Bisecting is problematic for two reasons: It takes 
> Michael some time to reproduce the bug and it's not yet clear whether 
> the functionality of an older Emacs would allow him to reproduce that 
> bug in the first place.
>

I see, but still, given the time you've already spent on this, would it 
not be easier to check whether say HEAD~2000 already has the bug?  IIUC 
the reproduction is always under the same condition: resetting Gnus after 
switching the VPN.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 12:06                                                                                                                                                       ` Andreas Schwab
@ 2021-04-08 12:29                                                                                                                                                         ` Eli Zaretskii
  2021-04-08 12:43                                                                                                                                                           ` Gregory Heytings
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-08 12:29 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: mwd, gregory, 47244, mwd

> From: Andreas Schwab <schwab@linux-m68k.org>
> Cc: Gregory Heytings <gregory@heytings.org>,  rudalics@gmx.at,
>   mwd@md5i.com,  47244@debbugs.gnu.org,  mwd@cert.org
> Date: Thu, 08 Apr 2021 14:06:14 +0200
> 
> On Apr 08 2021, Eli Zaretskii wrote:
> 
> > Bisection requires to know the last commit where the bug didn't exist.
> 
> Not the *last* commit, that what bisection is for to find out.  It just
> requires *any* commit where the bug didn't exist.

Right, but that's unknown as well here.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 12:29                                                                                                                                                         ` Eli Zaretskii
@ 2021-04-08 12:43                                                                                                                                                           ` Gregory Heytings
  2021-04-08 12:59                                                                                                                                                             ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Gregory Heytings @ 2021-04-08 12:43 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, Andreas Schwab, 47244, mwd


>>> Bisection requires to know the last commit where the bug didn't exist.
>>
>> Not the *last* commit, that what bisection is for to find out.  It just 
>> requires *any* commit where the bug didn't exist.
>
> Right, but that's unknown as well here.
>

Usually the first step in bisecting is to find some distant commit where 
the bug did not exist.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 12:43                                                                                                                                                           ` Gregory Heytings
@ 2021-04-08 12:59                                                                                                                                                             ` Eli Zaretskii
  2021-04-08 16:20                                                                                                                                                               ` Gregory Heytings
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-08 12:59 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: mwd, schwab, 47244, mwd

> Date: Thu, 08 Apr 2021 12:43:02 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: Andreas Schwab <schwab@linux-m68k.org>, mwd@md5i.com, 
>     47244@debbugs.gnu.org, mwd@cert.org
> 
> >>> Bisection requires to know the last commit where the bug didn't exist.
> >>
> >> Not the *last* commit, that what bisection is for to find out.  It just 
> >> requires *any* commit where the bug didn't exist.
> >
> > Right, but that's unknown as well here.
> >
> 
> Usually the first step in bisecting is to find some distant commit where 
> the bug did not exist.

Sure, but given the time it takes to reproduce the problem, that could
take much longer than what Martin is doing now.  And if you go far
enough into the past, Emacs will stop building successfully, so you
are stuck there.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 12:24                                                                                                                                                       ` Gregory Heytings
@ 2021-04-08 13:39                                                                                                                                                         ` Michael Welsh Duggan
  0 siblings, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 13:39 UTC (permalink / raw)
  To: Gregory Heytings
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

Gregory Heytings <gregory@heytings.org> writes:

>>> I have no suggestion, but a question: why don't you try to bisect this 
>>> bug?
>>
>> Probably because this bug sits just around the corner - we are only not 
>> able to see it.  Bisecting is problematic for two reasons: It takes 
>> Michael some time to reproduce the bug and it's not yet clear whether 
>> the functionality of an older Emacs would allow him to reproduce that 
>> bug in the first place.
>>
>
> I see, but still, given the time you've already spent on this, would it 
> not be easier to check whether say HEAD~2000 already has the bug?  IIUC 
> the reproduction is always under the same condition: resetting Gnus after 
> switching the VPN.

Unfortunately, although it always triggers under the same condition, it
doesn't trigger every time I'm in that condition.  In fact, I don't know
that I've every been able to trigger it more than twice in a day, even
when manually attempting to create the circumstances that might do so.
And some days I haven't been able to trigger it at all.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08  6:59                                                                                                                                                 ` martin rudalics
  2021-04-08 10:47                                                                                                                                                   ` Gregory Heytings
@ 2021-04-08 14:35                                                                                                                                                   ` Michael Welsh Duggan
  2021-04-08 15:08                                                                                                                                                     ` Eli Zaretskii
  2021-04-08 15:21                                                                                                                                                     ` Michael Welsh Duggan
  1 sibling, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 14:35 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > FWIW, I've been trying to do the same and have been similarly
>  > unsuccessful.
>
> I attach a version where I make a shadow copy of Vwindow_list called
> Vwindow_list_2.  The two should behave the same just that Vwindow_list_2
> is never accessed by other code.  So we can put an assertion like
>
>      eassert (!NILP (Fequal (Vwindow_list, Vwindow_list_2)));
>
> anywhere in the code.  I put one in window_list and it should trigger
> the same way as the length check before.
>
> Now if anyone can suggest some strategic positions where to put these
> assertions, I'll be all ears.

I've yet to run this code yet (will do so shortly), but I'd like to
mention that some other debugging I've been doing involving tricky
breakpoint commands is implying that, somehow, list_windows() is getting
called while list_windows() is still running.  I've got a breakpoint
at the beginning of the if clause in window_list() and one at the end,
and it looks like I'm seeing the first one get called twice without the
second getting called inbetween.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 14:35                                                                                                                                                   ` Michael Welsh Duggan
@ 2021-04-08 15:08                                                                                                                                                     ` Eli Zaretskii
  2021-04-08 15:24                                                                                                                                                       ` Andreas Schwab
  2021-04-08 15:21                                                                                                                                                     ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-08 15:08 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Date: Thu, 08 Apr 2021 10:35:53 -0400
> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> 
> I've yet to run this code yet (will do so shortly), but I'd like to
> mention that some other debugging I've been doing involving tricky
> breakpoint commands is implying that, somehow, list_windows() is getting
> called while list_windows() is still running.  I've got a breakpoint
> at the beginning of the if clause in window_list() and one at the end,
> and it looks like I'm seeing the first one get called twice without the
> second getting called inbetween.

That could mean some code signals an error, or throws to catchpoint,
before the second breakpoint is hit.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 14:35                                                                                                                                                   ` Michael Welsh Duggan
  2021-04-08 15:08                                                                                                                                                     ` Eli Zaretskii
@ 2021-04-08 15:21                                                                                                                                                     ` Michael Welsh Duggan
  2021-04-08 15:33                                                                                                                                                       ` Michael Welsh Duggan
                                                                                                                                                                         ` (2 more replies)
  1 sibling, 3 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 15:21 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

Michael Welsh Duggan <mwd@cert.org> writes:

> martin rudalics <rudalics@gmx.at> writes:
>
>>  > FWIW, I've been trying to do the same and have been similarly
>>  > unsuccessful.
>>
>> I attach a version where I make a shadow copy of Vwindow_list called
>> Vwindow_list_2.  The two should behave the same just that Vwindow_list_2
>> is never accessed by other code.  So we can put an assertion like
>>
>>      eassert (!NILP (Fequal (Vwindow_list, Vwindow_list_2)));
>>
>> anywhere in the code.  I put one in window_list and it should trigger
>> the same way as the length check before.
>>
>> Now if anyone can suggest some strategic positions where to put these
>> assertions, I'll be all ears.
>
> I've yet to run this code yet (will do so shortly), but I'd like to
> mention that some other debugging I've been doing involving tricky
> breakpoint commands is implying that, somehow, list_windows() is getting
> called while list_windows() is still running.  I've got a breakpoint
> at the beginning of the if clause in window_list() and one at the end,
> and it looks like I'm seeing the first one get called twice without the
> second getting called inbetween.

Okay, close, but not quite.  What seems to be happening is this:
list_windows() is called while Vwindow_list is nil, and the if branch is
taken.  Something causes list_windows() to exit without reaching the end
of the if block.  This leaves Vwindow_list partially created.  The next
time list_windows() is called it returns the partially created list.

To determine this I put a breakpoint at the beginning of the if block
that sets a gdb convenience variable called $in_list_windows to one and
continues.  I put a breakpoint at the end of that block that sets it to
zero and continues.  I put a third condition breakpoint at the entrance
to list_windows() that only triggers if $in_list_windows is one.  This
triggered with the included backtrace.

Once again, the state triggered when, due to the VPN state changing, a
background gnus demon hung trying to fetch mail.  The trigger was me
hitting C-g twice rapidly in succession to regain interactivity.

Can anyone recommend a means to check if this my theory is true?  Does
list_windows() need to be protected against quit?

#0  window_list () at ../../master/src/window.c:2566
#1  0x000055555564c0be in window_list_1
    (window=XIL(0x555556f6f995), minibuf=XIL(0xc0), all_frames=XIL(0x30))
    at ../../master/src/window.c:2886
        tail = XIL(0x7ffff26647bd)
        list = XIL(0)
        rest = XIL(0x7ffff26647c0)
#2  0x000055555564c404 in Fwindow_list_1
    (window=XIL(0), minibuf=XIL(0), all_frames=XIL(0x30))
    at ../../master/src/window.c:2960
#3  0x00005555557fdc14 in funcall_subr
    (subr=0x555555dd4960 <Swindow_list_1>, numargs=3, args=0x7fffffffbfa0)
    at ../../master/src/eval.c:2992
        internal_argbuf = 
          {XIL(0x7fffffffbed0), XIL(0x1000000000), XIL(0x555555dd4960), XIL(0x7fffffffbed8), XIL(0x5555557f47fd), XIL(0x10557f42c4), XIL(0x555555dd4965), XIL(0x7fffffffbef0)}
        internal_args = 0x7fffffffbfa0
#4  0x00005555557fd682 in Ffuncall (nargs=4, args=0x7fffffffbf98)
    at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd4965)
        original_fun = XIL(0x2aaa9c71a7a8)
        funcar = XIL(0x7fffffffbf50)
        numargs = 3
        val = XIL(0x55555854b805)
        count = 12
#5  0x0000555555856d45 in exec_byte_code
    (bytestr=XIL(0x7ffff277c864), vector=XIL(0x7ffff277c80d), maxdepth=make_fixnum(8), args_template=make_fixnum(256), nargs=1, args=0x7fffffffc4b0)
    at ../../master/src/bytecode.c:632
        op = 3
        type = (CONDITION_CASE | unknown: 0x8)
        targets = 
          {0x555555859bda <exec_byte_code+15219>, 0x555555859bff <exec_byte_code+15256>, 0x555555859c01 <exec_byte_code+15258>, 0x555555859c03 <exec_byte_code+15260>, 0x555555859c05 <exec_byte_code+15262>, 0x555555859c05 <exec_byte_code+15262>, 0x555555859c6a <exec_byte_code+15363>, 0x555555859cde <exec_byte_code+15479>, 0x555555856605 <exec_byte_code+1438>, 0x555555856607 <exec_byte_code+1440>, 0x555555856609 <exec_byte_code+1442>, 0x55555585660b <exec_byte_code+1444>, 0x55555585660d <exec_byte_code+1446>, 0x55555585660d <exec_byte_code+1446>, 0x555555856613 <exec_byte_code+1452>, 0x5555558565d4 <exec_byte_code+1389>, 0x555555856a2b <exec_byte_code+2500>, 0x555555856a2d <exec_byte_code+2502>, 0x555555856a2f <exec_byte_code+2504>, 0x555555856a31 <exec_byte_code+2506>, 0x555555856a33 <exec_byte_code+2508>, 0x555555856a33 <exec_byte_code+2508>, 0x555555856a68 <exec_byte_code+2561>, 0x555555856a39 <exec_byte_code+2514>, 0x555555856c5d <exec_byte_code+3062>, 0x555555856c5f <exec_byte_code+3064>, 0x555555856c61 <exec_byte_code+3066>, 0x555555856c63 <exec_byte_code+3068>, 0x555555856c65 <exec_byte_code+3070>, 0x555555856c65 <exec_byte_code+3070>, 0x555555856c17 <exec_byte_code+2992>, 0x555555856c2e <exec_byte_code+3015>, 0x555555856d12 <exec_byte_code+3243>, 0x555555856d14 <exec_byte_code+3245>, 0x555555856d16 <exec_byte_code+3247>, 0x555555856d18 <exec_byte_code+3249>, 0x555555856d1a <exec_byte_code+3251>, 0x555555856d1a <exec_byte_code+3251>, 0x555555856ccc <exec_byte_code+3173>, 0x555555856ce3 <exec_byte_code+3196>, 0x555555856dc4 <exec_byte_code+3421>, 0x555555856dc6 <exec_byte_code+3423>, 0x555555856dc8 <exec_byte_code+3425>, 0x555555856dca <exec_byte_code+3427>, 0x555555856dcc <exec_byte_code+3429>, 0x555555856dcc <exec_byte_code+3429>, 0x555555856d7e <exec_byte_code+3351>, 0x555555856d95 <exec_byte_code+3374>, 0x55555585762c <exec_byte_code+5573>, 0x55555585750f <exec_byte_code+5288>, 0x555555857506 <exec_byte_code+5279>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555857866 <exec_byte_code+6143>, 0x55555585797c <exec_byte_code+6421>, 0x5555558579d9 <exec_byte_code+6514>, 0x555555857a39 <exec_byte_code+6610>, 0x555555857a9b <exec_byte_code+6708>, 0x555555856884 <exec_byte_code+2077>, 0x5555558568ff <exec_byte_code+2200>, 0x555555857b14 <exec_byte_code+6829>, 0x5555558567c1 <exec_byte_code+1882>, 0x555555856967 <exec_byte_code+2304>, 0x555555857b7c <exec_byte_code+6933>, 0x555555857be4 <exec_byte_code+7037>, 0x555555857c2c <exec_byte_code+7109>, 0x555555857c94 <exec_byte_code+7213>, 0x555555857cfa <exec_byte_code+7315>, 0x555555857de0 <exec_byte_code+7545>, 0x555555857e28 <exec_byte_code+7617>, 0x555555857e90 <exec_byte_code+7721>, 0x555555857f15 <exec_byte_code+7854>, 0x555555857f5d <exec_byte_code+7926>, 0x555555857fa5 <exec_byte_code+7998>, 0x55555585800d <exec_byte_code+8102>, 0x555555858075 <exec_byte_code+8206>, 0x5555558580dd <exec_byte_code+8310>, 0x555555858162 <exec_byte_code+8443>, 0x5555558581b1 <exec_byte_code+8522>, 0x555555858200 <exec_byte_code+8601>, 0x5555558582c7 <exec_byte_code+8800>, 0x5555558583c0 <exec_byte_code+9049>, 0x5555558584b9 <exec_byte_code+9298>, 0x555555858526 <exec_byte_code+9407>, 0x555555858593 <exec_byte_code+9516>, 0x555555858600 <exec_byte_code+9625>, 0x55555585866d <exec_byte_code+9734>, 0x5555558586da <exec_byte_code+9843>, 0x555555858729 <exec_byte_code+9922>, 0x555555858823 <exec_byte_code+10172>, 0x555555858872 <exec_byte_code+10251>, 0x5555558588c1 <exec_byte_code+10330>, 0x555555858910 <exec_byte_code+10409>, 0x555555858a16 <exec_byte_code+10671>, 0x555555857386 <exec_byte_code+4895>, 0x555555858a71 <exec_byte_code+10762>, 0x555555858ab9 <exec_byte_code+10834>, 0x555555858b7b <exec_byte_code+11028>, 0x555555858be4 <exec_byte_code+11133>, 0x555555858c3f <exec_byte_code+11224>, 0x555555858c87 <exec_byte_code+11296>, 0x555555858cca <exec_byte_code+11363>, 0x555555858d0d <exec_byte_code+11430>, 0x555555858d58 <exec_byte_code+11505>, 0x555555859bda <exec_byte_code+15219>, 0x555555858db0 <exec_byte_code+11593>, 0x555555858df3 <exec_byte_code+11660>, 0x555555858e36 <exec_byte_code+11727>, 0x555555858e79 <exec_byte_code+11794>, 0x555555858ebc <exec_byte_code+11861>, 0x555555858eff <exec_byte_code+11928>, 0x555555857386 <exec_byte_code+4895>, 0x555555859bda <exec_byte_code+15219>, 0x555555858f47 <exec_byte_code+12000>, 0x555555858f99 <exec_byte_code+12082>, 0x555555858fe1 <exec_byte_code+12154>, 0x555555859029 <exec_byte_code+12226>, 0x555555859091 <exec_byte_code+12330>, 0x5555558590f9 <exec_byte_code+12434>, 0x555555859141 <exec_byte_code+12506>, 0x5555558591fe <exec_byte_code+12695>, 0x555555859266 <exec_byte_code+12799>, 0x5555558592ce <exec_byte_code+12903>, 0x555555859336 <exec_byte_code+13007>, 0x555555859379 <exec_byte_code+13074>, 0x555555859bda <exec_byte_code+15219>, 0x5555558572cc <exec_byte_code+4709>, 0x555555856e76 <exec_byte_code+3599>, 0x55555585672f <exec_byte_code+1736>, 0x555555856f27 <exec_byte_code+3776>, 0x555555856fab <exec_byte_code+3908>, 0x55555585702c <exec_byte_code+4037>, 0x555555857280 <exec_byte_code+4633>, 0x555555857295 <exec_byte_code+4654>, 0x555555856bc4 <exec_byte_code+2909>, 0x55555585734f <exec_byte_code+4840>, 0x5555558573bd <exec_byte_code+4950>, 0x55555585744e <exec_byte_code+5095>, 0x555555857497 <exec_byte_code+5168>, 0x555555857678 <exec_byte_code+5649>, 0x5555558576f5 <exec_byte_code+5774>, 0x55555585777a <exec_byte_code+5907>, 0x5555558577e0 <exec_byte_code+6009>, 0x555555856e28 <exec_byte_code+3521>, 0x5555558593c1 <exec_byte_code+13146>, 0x555555859446 <exec_byte_code+13279>, 0x55555585948e <exec_byte_code+13351>, 0x5555558594d6 <exec_byte_code+13423>, 0x55555585951e <exec_byte_code+13495>, 0x555555859566 <exec_byte_code+13567>, 0x5555558595ce <exec_byte_code+13671>, 0x555555859636 <exec_byte_code+13775>, 0x55555585969e <exec_byte_code+13879>, 0x555555859706 <exec_byte_code+13983>, 0x55555585984f <exec_byte_code+14312>, 0x5555558598b7 <exec_byte_code+14416>, 0x55555585991f <exec_byte_code+14520>, 0x555555859967 <exec_byte_code+14592>, 0x5555558599cf <exec_byte_code+14696>, 0x555555859a37 <exec_byte_code+14800>, 0x555555859a7f <exec_byte_code+14872>, 0x555555859ac7 <exec_byte_code+14944>, 0x55555585895f <exec_byte_code+10488>, 0x5555558589ae <exec_byte_code+10567>, 0x555555859b16 <exec_byte_code+15023>, 0x555555859b78 <exec_byte_code+15121>, 0x555555859bda <exec_byte_code+15219>, 0x5555558570ad <exec_byte_code+4166>, 0x5555558570ca <exec_byte_code+4195>, 0x555555857139 <exec_byte_code+4306>, 0x5555558571a8 <exec_byte_code+4417>, 0x555555857214 <exec_byte_code+4525>, 0x555555857d68 <exec_byte_code+7425>, 0x55555585824f <exec_byte_code+8680>, 0x555555858b03 <exec_byte_code+10908>, 0x555555859d71 <exec_byte_code+15626>, 0x555555859de6 <exec_byte_code+15743>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859e7c <exec_byte_code+15893>, 0x555555859f03 <exec_byte_code+16028>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x55555585a051 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 10
        bytestr_length = 56
        vectorp = 0x7ffff277c810
        quitcounter = 1 '\001'
        stack_items = 9
        sa_avail = 16256
        sa_count = 12
        alloc = 0x7fffffffbf80
        stack_base = 0x7fffffffbf80
        top = 0x7fffffffbf98
        stack_lim = 0x7fffffffbfc8
        bytestr_data = 0x7fffffffbfc8 "\300\001!\301\302\211\303#\211\205\067"
        pc = 0x7fffffffbfd0 "\211\205\067"
        count = 12
        result = make_fixnum(13243468115)
#6  0x00005555557fde6d in fetch_and_exec_byte_code (fun=XIL(0x7ffff277c7b5), syms_left=make_fixnum(256), nargs=1, args=0x7fffffffc4a8) at ../../master/src/eval.c:3036
#7  0x00005555557fe2f3 in funcall_lambda (fun=XIL(0x7ffff277c7b5), nargs=1, arg_vector=0x7fffffffc4a8) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffc420)
        syms_left = make_fixnum(256)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 12
        i = 93824994985981
        optional = false
        rest = false
#8  0x00005555557fd6c6 in Ffuncall (nargs=2, args=0x7fffffffc4a0) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff277c7b5)
        original_fun = XIL(0xbd60)
        funcar = XIL(0x7fffffffc470)
        numargs = 1
        val = XIL(0x555555e63080)
        count = 11
#9  0x00005555557fce90 in call1 (fn=XIL(0xbd60), arg1=XIL(0x55555854b805)) at ../../master/src/eval.c:2774
#10 0x000055555564d90e in replace_buffer_in_windows (buffer=XIL(0x55555854b805)) at ../../master/src/window.c:3444
#11 0x0000555555758e87 in Fkill_buffer (buffer_or_name=XIL(0x55555854b805)) at ../../master/src/buffer.c:1830
        buffer = XIL(0x55555854b805)
        b = 0x55555854b800
        tem = XIL(0x55555575368d)
        m = 0x7fffffffc5f0
#12 0x00005555557fdbba in funcall_subr (subr=0x555555dd9ce0 <Skill_buffer>, numargs=1, args=0x7fffffffc710) at ../../master/src/eval.c:2987
        internal_argbuf = {XIL(0x7fffffffc650), XIL(0x1000000000), XIL(0x555555dd9ce0), XIL(0x7fffffffc658), XIL(0x5555557f47fd), XIL(0x10557f42c4), XIL(0x555555dd9ce5), XIL(0x7fffffffc670)}
        internal_args = 0x7fffffffc710
#13 0x00005555557fd682 in Ffuncall (nargs=2, args=0x7fffffffc708) at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd9ce5)
        original_fun = XIL(0x2aaa9c7147c0)
        funcar = XIL(0x7fffffffc6d0)
        numargs = 1
        val = XIL(0x7fffffffc6f0)
        count = 10
#14 0x0000555555856d45 in exec_byte_code (bytestr=XIL(0x7ffff25c7454), vector=XIL(0x555557d4ffdd), maxdepth=make_fixnum(2), args_template=make_fixnum(0), nargs=0, args=0x7fffffffcbc0) at ../../master/src/bytecode.c:632
        op = 1
        type = (unknown: 0x5588e77c)
        targets = {0x555555859bda <exec_byte_code+15219>, 0x555555859bff <exec_byte_code+15256>, 0x555555859c01 <exec_byte_code+15258>, 0x555555859c03 <exec_byte_code+15260>, 0x555555859c05 <exec_byte_code+15262>, 0x555555859c05 <exec_byte_code+15262>, 0x555555859c6a <exec_byte_code+15363>, 0x555555859cde <exec_byte_code+15479>, 0x555555856605 <exec_byte_code+1438>, 0x555555856607 <exec_byte_code+1440>, 0x555555856609 <exec_byte_code+1442>, 0x55555585660b <exec_byte_code+1444>, 0x55555585660d <exec_byte_code+1446>, 0x55555585660d <exec_byte_code+1446>, 0x555555856613 <exec_byte_code+1452>, 0x5555558565d4 <exec_byte_code+1389>, 0x555555856a2b <exec_byte_code+2500>, 0x555555856a2d <exec_byte_code+2502>, 0x555555856a2f <exec_byte_code+2504>, 0x555555856a31 <exec_byte_code+2506>, 0x555555856a33 <exec_byte_code+2508>, 0x555555856a33 <exec_byte_code+2508>, 0x555555856a68 <exec_byte_code+2561>, 0x555555856a39 <exec_byte_code+2514>, 0x555555856c5d <exec_byte_code+3062>, 0x555555856c5f <exec_byte_code+3064>, 0x555555856c61 <exec_byte_code+3066>, 0x555555856c63 <exec_byte_code+3068>, 0x555555856c65 <exec_byte_code+3070>, 0x555555856c65 <exec_byte_code+3070>, 0x555555856c17 <exec_byte_code+2992>, 0x555555856c2e <exec_byte_code+3015>, 0x555555856d12 <exec_byte_code+3243>, 0x555555856d14 <exec_byte_code+3245>, 0x555555856d16 <exec_byte_code+3247>, 0x555555856d18 <exec_byte_code+3249>, 0x555555856d1a <exec_byte_code+3251>, 0x555555856d1a <exec_byte_code+3251>, 0x555555856ccc <exec_byte_code+3173>, 0x555555856ce3 <exec_byte_code+3196>, 0x555555856dc4 <exec_byte_code+3421>, 0x555555856dc6 <exec_byte_code+3423>, 0x555555856dc8 <exec_byte_code+3425>, 0x555555856dca <exec_byte_code+3427>, 0x555555856dcc <exec_byte_code+3429>, 0x555555856dcc <exec_byte_code+3429>, 0x555555856d7e <exec_byte_code+3351>, 0x555555856d95 <exec_byte_code+3374>, 0x55555585762c <exec_byte_code+5573>, 0x55555585750f <exec_byte_code+5288>, 0x555555857506 <exec_byte_code+5279>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555857866 <exec_byte_code+6143>, 0x55555585797c <exec_byte_code+6421>, 0x5555558579d9 <exec_byte_code+6514>, 0x555555857a39 <exec_byte_code+6610>, 0x555555857a9b <exec_byte_code+6708>, 0x555555856884 <exec_byte_code+2077>, 0x5555558568ff <exec_byte_code+2200>, 0x555555857b14 <exec_byte_code+6829>, 0x5555558567c1 <exec_byte_code+1882>, 0x555555856967 <exec_byte_code+2304>, 0x555555857b7c <exec_byte_code+6933>, 0x555555857be4 <exec_byte_code+7037>, 0x555555857c2c <exec_byte_code+7109>, 0x555555857c94 <exec_byte_code+7213>, 0x555555857cfa <exec_byte_code+7315>, 0x555555857de0 <exec_byte_code+7545>, 0x555555857e28 <exec_byte_code+7617>, 0x555555857e90 <exec_byte_code+7721>, 0x555555857f15 <exec_byte_code+7854>, 0x555555857f5d <exec_byte_code+7926>, 0x555555857fa5 <exec_byte_code+7998>, 0x55555585800d <exec_byte_code+8102>, 0x555555858075 <exec_byte_code+8206>, 0x5555558580dd <exec_byte_code+8310>, 0x555555858162 <exec_byte_code+8443>, 0x5555558581b1 <exec_byte_code+8522>, 0x555555858200 <exec_byte_code+8601>, 0x5555558582c7 <exec_byte_code+8800>, 0x5555558583c0 <exec_byte_code+9049>, 0x5555558584b9 <exec_byte_code+9298>, 0x555555858526 <exec_byte_code+9407>, 0x555555858593 <exec_byte_code+9516>, 0x555555858600 <exec_byte_code+9625>, 0x55555585866d <exec_byte_code+9734>, 0x5555558586da <exec_byte_code+9843>, 0x555555858729 <exec_byte_code+9922>, 0x555555858823 <exec_byte_code+10172>, 0x555555858872 <exec_byte_code+10251>, 0x5555558588c1 <exec_byte_code+10330>, 0x555555858910 <exec_byte_code+10409>, 0x555555858a16 <exec_byte_code+10671>, 0x555555857386 <exec_byte_code+4895>, 0x555555858a71 <exec_byte_code+10762>, 0x555555858ab9 <exec_byte_code+10834>, 0x555555858b7b <exec_byte_code+11028>, 0x555555858be4 <exec_byte_code+11133>, 0x555555858c3f <exec_byte_code+11224>, 0x555555858c87 <exec_byte_code+11296>, 0x555555858cca <exec_byte_code+11363>, 0x555555858d0d <exec_byte_code+11430>, 0x555555858d58 <exec_byte_code+11505>, 0x555555859bda <exec_byte_code+15219>, 0x555555858db0 <exec_byte_code+11593>, 0x555555858df3 <exec_byte_code+11660>, 0x555555858e36 <exec_byte_code+11727>, 0x555555858e79 <exec_byte_code+11794>, 0x555555858ebc <exec_byte_code+11861>, 0x555555858eff <exec_byte_code+11928>, 0x555555857386 <exec_byte_code+4895>, 0x555555859bda <exec_byte_code+15219>, 0x555555858f47 <exec_byte_code+12000>, 0x555555858f99 <exec_byte_code+12082>, 0x555555858fe1 <exec_byte_code+12154>, 0x555555859029 <exec_byte_code+12226>, 0x555555859091 <exec_byte_code+12330>, 0x5555558590f9 <exec_byte_code+12434>, 0x555555859141 <exec_byte_code+12506>, 0x5555558591fe <exec_byte_code+12695>, 0x555555859266 <exec_byte_code+12799>, 0x5555558592ce <exec_byte_code+12903>, 0x555555859336 <exec_byte_code+13007>, 0x555555859379 <exec_byte_code+13074>, 0x555555859bda <exec_byte_code+15219>, 0x5555558572cc <exec_byte_code+4709>, 0x555555856e76 <exec_byte_code+3599>, 0x55555585672f <exec_byte_code+1736>, 0x555555856f27 <exec_byte_code+3776>, 0x555555856fab <exec_byte_code+3908>, 0x55555585702c <exec_byte_code+4037>, 0x555555857280 <exec_byte_code+4633>, 0x555555857295 <exec_byte_code+4654>, 0x555555856bc4 <exec_byte_code+2909>, 0x55555585734f <exec_byte_code+4840>, 0x5555558573bd <exec_byte_code+4950>, 0x55555585744e <exec_byte_code+5095>, 0x555555857497 <exec_byte_code+5168>, 0x555555857678 <exec_byte_code+5649>, 0x5555558576f5 <exec_byte_code+5774>, 0x55555585777a <exec_byte_code+5907>, 0x5555558577e0 <exec_byte_code+6009>, 0x555555856e28 <exec_byte_code+3521>, 0x5555558593c1 <exec_byte_code+13146>, 0x555555859446 <exec_byte_code+13279>, 0x55555585948e <exec_byte_code+13351>, 0x5555558594d6 <exec_byte_code+13423>, 0x55555585951e <exec_byte_code+13495>, 0x555555859566 <exec_byte_code+13567>, 0x5555558595ce <exec_byte_code+13671>, 0x555555859636 <exec_byte_code+13775>, 0x55555585969e <exec_byte_code+13879>, 0x555555859706 <exec_byte_code+13983>, 0x55555585984f <exec_byte_code+14312>, 0x5555558598b7 <exec_byte_code+14416>, 0x55555585991f <exec_byte_code+14520>, 0x555555859967 <exec_byte_code+14592>, 0x5555558599cf <exec_byte_code+14696>, 0x555555859a37 <exec_byte_code+14800>, 0x555555859a7f <exec_byte_code+14872>, 0x555555859ac7 <exec_byte_code+14944>, 0x55555585895f <exec_byte_code+10488>, 0x5555558589ae <exec_byte_code+10567>, 0x555555859b16 <exec_byte_code+15023>, 0x555555859b78 <exec_byte_code+15121>, 0x555555859bda <exec_byte_code+15219>, 0x5555558570ad <exec_byte_code+4166>, 0x5555558570ca <exec_byte_code+4195>, 0x555555857139 <exec_byte_code+4306>, 0x5555558571a8 <exec_byte_code+4417>, 0x555555857214 <exec_byte_code+4525>, 0x555555857d68 <exec_byte_code+7425>, 0x55555585824f <exec_byte_code+8680>, 0x555555858b03 <exec_byte_code+10908>, 0x555555859d71 <exec_byte_code+15626>, 0x555555859de6 <exec_byte_code+15743>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859e7c <exec_byte_code+15893>, 0x555555859f03 <exec_byte_code+16028>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x55555585a051 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 3
        bytestr_length = 10
        vectorp = 0x555557d4ffe0
        quitcounter = 1 '\001'
        stack_items = 3
        sa_avail = 16350
        sa_count = 10
        alloc = 0x7fffffffc700
        stack_base = 0x7fffffffc700
        top = 0x7fffffffc708
        stack_lim = 0x7fffffffc718
        bytestr_data = 0x7fffffffc718 "\301\300!\205\t"
        pc = 0x7fffffffc721 "\207\377\377\377\177"
        count = 10
        result = XIL(0x9)
#15 0x00005555557fde6d in fetch_and_exec_byte_code (fun=XIL(0x55555783358d), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffcbc0) at ../../master/src/eval.c:3036
#16 0x00005555557fe2f3 in funcall_lambda (fun=XIL(0x55555783358d), nargs=0, arg_vector=0x7fffffffcbc0) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffcb40)
        syms_left = make_fixnum(0)
        next = XIL(0x1)
        lexenv = XIL(0x1800000000)
        count = 10
        i = 93824994985981
        optional = false
        rest = false
#17 0x00005555557fd6c6 in Ffuncall (nargs=1, args=0x7fffffffcbb8) at ../../master/src/eval.c:2916
        fun = XIL(0x55555783358d)
        original_fun = XIL(0x55555783358d)
        funcar = XIL(0x7fffffffcb70)
        numargs = 0
        val = XIL(0x555555e63080)
        count = 9
#18 0x0000555555856064 in bcall0 (f=XIL(0x55555783358d)) at ../../master/src/bytecode.c:340
#19 0x00005555557ffafa in do_one_unbind (this_binding=0x7fffffffcc30, unwinding=true, bindflag=SET_INTERNAL_UNBIND) at ../../master/src/eval.c:3575
#20 0x00005555557fff26 in unbind_to (count=8, value=XIL(0)) at ../../master/src/eval.c:3713
        this_binding = {
          kind = SPECPDL_UNWIND,
          unwind = {
            kind = SPECPDL_UNWIND,
            func = 0x555555856047 <bcall0>,
            arg = XIL(0x55555783358d),
            eval_depth = 4
          },
          unwind_array = {
            kind = SPECPDL_UNWIND,
            nelts = 93824995385415,
            array = 0x55555783358d
          },
          unwind_ptr = {
            kind = SPECPDL_UNWIND,
            func = 0x555555856047 <bcall0>,
            arg = 0x55555783358d
          },
          unwind_int = {
            kind = SPECPDL_UNWIND,
            func = 0x555555856047 <bcall0>,
            arg = 1468216717
          },
          unwind_intmax = {
            kind = SPECPDL_UNWIND,
            func = 0x555555856047 <bcall0>,
            arg = 93825028797837
          },
          unwind_excursion = {
            kind = SPECPDL_UNWIND,
            marker = XIL(0x555555856047),
            window = XIL(0x55555783358d)
          },
          unwind_void = {
            kind = SPECPDL_UNWIND,
            func = 0x555555856047 <bcall0>
          },
          let = {
            kind = SPECPDL_UNWIND,
            symbol = XIL(0x555555856047),
            old_value = XIL(0x55555783358d),
            where = XIL(0x4),
            saved_value = XIL(0)
          },
          bt = {
            kind = SPECPDL_UNWIND,
            debug_on_exit = false,
            function = XIL(0x555555856047),
            args = 0x55555783358d,
            nargs = 4
          }
        }
        quitf = XIL(0)
#21 0x0000555555856df6 in exec_byte_code (bytestr=XIL(0x7ffff2908874), vector=XIL(0x7ffff2908525), maxdepth=make_fixnum(23), args_template=make_fixnum(257), nargs=1, args=0x7fffffffd3e0) at ../../master/src/bytecode.c:652
        op = 2
        type = (unknown: 0xffffd230)
        targets = {0x555555859bda <exec_byte_code+15219>, 0x555555859bff <exec_byte_code+15256>, 0x555555859c01 <exec_byte_code+15258>, 0x555555859c03 <exec_byte_code+15260>, 0x555555859c05 <exec_byte_code+15262>, 0x555555859c05 <exec_byte_code+15262>, 0x555555859c6a <exec_byte_code+15363>, 0x555555859cde <exec_byte_code+15479>, 0x555555856605 <exec_byte_code+1438>, 0x555555856607 <exec_byte_code+1440>, 0x555555856609 <exec_byte_code+1442>, 0x55555585660b <exec_byte_code+1444>, 0x55555585660d <exec_byte_code+1446>, 0x55555585660d <exec_byte_code+1446>, 0x555555856613 <exec_byte_code+1452>, 0x5555558565d4 <exec_byte_code+1389>, 0x555555856a2b <exec_byte_code+2500>, 0x555555856a2d <exec_byte_code+2502>, 0x555555856a2f <exec_byte_code+2504>, 0x555555856a31 <exec_byte_code+2506>, 0x555555856a33 <exec_byte_code+2508>, 0x555555856a33 <exec_byte_code+2508>, 0x555555856a68 <exec_byte_code+2561>, 0x555555856a39 <exec_byte_code+2514>, 0x555555856c5d <exec_byte_code+3062>, 0x555555856c5f <exec_byte_code+3064>, 0x555555856c61 <exec_byte_code+3066>, 0x555555856c63 <exec_byte_code+3068>, 0x555555856c65 <exec_byte_code+3070>, 0x555555856c65 <exec_byte_code+3070>, 0x555555856c17 <exec_byte_code+2992>, 0x555555856c2e <exec_byte_code+3015>, 0x555555856d12 <exec_byte_code+3243>, 0x555555856d14 <exec_byte_code+3245>, 0x555555856d16 <exec_byte_code+3247>, 0x555555856d18 <exec_byte_code+3249>, 0x555555856d1a <exec_byte_code+3251>, 0x555555856d1a <exec_byte_code+3251>, 0x555555856ccc <exec_byte_code+3173>, 0x555555856ce3 <exec_byte_code+3196>, 0x555555856dc4 <exec_byte_code+3421>, 0x555555856dc6 <exec_byte_code+3423>, 0x555555856dc8 <exec_byte_code+3425>, 0x555555856dca <exec_byte_code+3427>, 0x555555856dcc <exec_byte_code+3429>, 0x555555856dcc <exec_byte_code+3429>, 0x555555856d7e <exec_byte_code+3351>, 0x555555856d95 <exec_byte_code+3374>, 0x55555585762c <exec_byte_code+5573>, 0x55555585750f <exec_byte_code+5288>, 0x555555857506 <exec_byte_code+5279>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555857866 <exec_byte_code+6143>, 0x55555585797c <exec_byte_code+6421>, 0x5555558579d9 <exec_byte_code+6514>, 0x555555857a39 <exec_byte_code+6610>, 0x555555857a9b <exec_byte_code+6708>, 0x555555856884 <exec_byte_code+2077>, 0x5555558568ff <exec_byte_code+2200>, 0x555555857b14 <exec_byte_code+6829>, 0x5555558567c1 <exec_byte_code+1882>, 0x555555856967 <exec_byte_code+2304>, 0x555555857b7c <exec_byte_code+6933>, 0x555555857be4 <exec_byte_code+7037>, 0x555555857c2c <exec_byte_code+7109>, 0x555555857c94 <exec_byte_code+7213>, 0x555555857cfa <exec_byte_code+7315>, 0x555555857de0 <exec_byte_code+7545>, 0x555555857e28 <exec_byte_code+7617>, 0x555555857e90 <exec_byte_code+7721>, 0x555555857f15 <exec_byte_code+7854>, 0x555555857f5d <exec_byte_code+7926>, 0x555555857fa5 <exec_byte_code+7998>, 0x55555585800d <exec_byte_code+8102>, 0x555555858075 <exec_byte_code+8206>, 0x5555558580dd <exec_byte_code+8310>, 0x555555858162 <exec_byte_code+8443>, 0x5555558581b1 <exec_byte_code+8522>, 0x555555858200 <exec_byte_code+8601>, 0x5555558582c7 <exec_byte_code+8800>, 0x5555558583c0 <exec_byte_code+9049>, 0x5555558584b9 <exec_byte_code+9298>, 0x555555858526 <exec_byte_code+9407>, 0x555555858593 <exec_byte_code+9516>, 0x555555858600 <exec_byte_code+9625>, 0x55555585866d <exec_byte_code+9734>, 0x5555558586da <exec_byte_code+9843>, 0x555555858729 <exec_byte_code+9922>, 0x555555858823 <exec_byte_code+10172>, 0x555555858872 <exec_byte_code+10251>, 0x5555558588c1 <exec_byte_code+10330>, 0x555555858910 <exec_byte_code+10409>, 0x555555858a16 <exec_byte_code+10671>, 0x555555857386 <exec_byte_code+4895>, 0x555555858a71 <exec_byte_code+10762>, 0x555555858ab9 <exec_byte_code+10834>, 0x555555858b7b <exec_byte_code+11028>, 0x555555858be4 <exec_byte_code+11133>, 0x555555858c3f <exec_byte_code+11224>, 0x555555858c87 <exec_byte_code+11296>, 0x555555858cca <exec_byte_code+11363>, 0x555555858d0d <exec_byte_code+11430>, 0x555555858d58 <exec_byte_code+11505>, 0x555555859bda <exec_byte_code+15219>, 0x555555858db0 <exec_byte_code+11593>, 0x555555858df3 <exec_byte_code+11660>, 0x555555858e36 <exec_byte_code+11727>, 0x555555858e79 <exec_byte_code+11794>, 0x555555858ebc <exec_byte_code+11861>, 0x555555858eff <exec_byte_code+11928>, 0x555555857386 <exec_byte_code+4895>, 0x555555859bda <exec_byte_code+15219>, 0x555555858f47 <exec_byte_code+12000>, 0x555555858f99 <exec_byte_code+12082>, 0x555555858fe1 <exec_byte_code+12154>, 0x555555859029 <exec_byte_code+12226>, 0x555555859091 <exec_byte_code+12330>, 0x5555558590f9 <exec_byte_code+12434>, 0x555555859141 <exec_byte_code+12506>, 0x5555558591fe <exec_byte_code+12695>, 0x555555859266 <exec_byte_code+12799>, 0x5555558592ce <exec_byte_code+12903>, 0x555555859336 <exec_byte_code+13007>, 0x555555859379 <exec_byte_code+13074>, 0x555555859bda <exec_byte_code+15219>, 0x5555558572cc <exec_byte_code+4709>, 0x555555856e76 <exec_byte_code+3599>, 0x55555585672f <exec_byte_code+1736>, 0x555555856f27 <exec_byte_code+3776>, 0x555555856fab <exec_byte_code+3908>, 0x55555585702c <exec_byte_code+4037>, 0x555555857280 <exec_byte_code+4633>, 0x555555857295 <exec_byte_code+4654>, 0x555555856bc4 <exec_byte_code+2909>, 0x55555585734f <exec_byte_code+4840>, 0x5555558573bd <exec_byte_code+4950>, 0x55555585744e <exec_byte_code+5095>, 0x555555857497 <exec_byte_code+5168>, 0x555555857678 <exec_byte_code+5649>, 0x5555558576f5 <exec_byte_code+5774>, 0x55555585777a <exec_byte_code+5907>, 0x5555558577e0 <exec_byte_code+6009>, 0x555555856e28 <exec_byte_code+3521>, 0x5555558593c1 <exec_byte_code+13146>, 0x555555859446 <exec_byte_code+13279>, 0x55555585948e <exec_byte_code+13351>, 0x5555558594d6 <exec_byte_code+13423>, 0x55555585951e <exec_byte_code+13495>, 0x555555859566 <exec_byte_code+13567>, 0x5555558595ce <exec_byte_code+13671>, 0x555555859636 <exec_byte_code+13775>, 0x55555585969e <exec_byte_code+13879>, 0x555555859706 <exec_byte_code+13983>, 0x55555585984f <exec_byte_code+14312>, 0x5555558598b7 <exec_byte_code+14416>, 0x55555585991f <exec_byte_code+14520>, 0x555555859967 <exec_byte_code+14592>, 0x5555558599cf <exec_byte_code+14696>, 0x555555859a37 <exec_byte_code+14800>, 0x555555859a7f <exec_byte_code+14872>, 0x555555859ac7 <exec_byte_code+14944>, 0x55555585895f <exec_byte_code+10488>, 0x5555558589ae <exec_byte_code+10567>, 0x555555859b16 <exec_byte_code+15023>, 0x555555859b78 <exec_byte_code+15121>, 0x555555859bda <exec_byte_code+15219>, 0x5555558570ad <exec_byte_code+4166>, 0x5555558570ca <exec_byte_code+4195>, 0x555555857139 <exec_byte_code+4306>, 0x5555558571a8 <exec_byte_code+4417>, 0x555555857214 <exec_byte_code+4525>, 0x555555857d68 <exec_byte_code+7425>, 0x55555585824f <exec_byte_code+8680>, 0x555555858b03 <exec_byte_code+10908>, 0x555555859d71 <exec_byte_code+15626>, 0x555555859de6 <exec_byte_code+15743>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859e7c <exec_byte_code+15893>, 0x555555859f03 <exec_byte_code+16028>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x55555585a051 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 51
        bytestr_length = 494
        vectorp = 0x7ffff2908528
        quitcounter = 59 ';'
        stack_items = 24
        sa_avail = 15698
        sa_count = 7
        alloc = 0x7fffffffcc80
        stack_base = 0x7fffffffcc80
        top = 0x7fffffffccb0
        stack_lim = 0x7fffffffcd40
        bytestr_data = 0x7fffffffcd40 "\211??\205\355\001\b\302p\001\031\303\304\302\"r\211q\210\305\306\002\"\216\004c\210eb\210`dW\203\345\001`lj\211\211g\310U\203\234\001\311\061:"
        pc = 0x7fffffffcf28 "\262\001)\266\203\207"
        count = 7
        result = XIL(0)
#22 0x00005555557fde6d in fetch_and_exec_byte_code (fun=XIL(0x7ffff29084f5), syms_left=make_fixnum(257), nargs=1, args=0x7fffffffd3d8) at ../../master/src/eval.c:3036
#23 0x00005555557fe2f3 in funcall_lambda (fun=XIL(0x7ffff29084f5), nargs=1, arg_vector=0x7fffffffd3d8) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffd350)
        syms_left = make_fixnum(257)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 7
        i = 93824994985981
        optional = false
        rest = false
#24 0x00005555557fd6c6 in Ffuncall (nargs=2, args=0x7fffffffd3d0) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff29084f5)
        original_fun = XIL(0xcff0)
        funcar = XIL(0x555555e63080)
        numargs = 1
        val = XIL(0x5af0)
        count = 6
#25 0x00005555557fce90 in call1 (fn=XIL(0xcff0), arg1=XIL(0x555556232084)) at ../../master/src/eval.c:2774
#26 0x000055555583108e in print_error_message (data=XIL(0x55555732d343), stream=XIL(0x30), context=0x7ffff2c64148 "", caller=XIL(0)) at ../../master/src/print.c:944
        error_conditions = XIL(0x7ffff2c2da13)
        errname = XIL(0xb820)
        errmsg = make_fixnum(23456248526235)
        file_error = XIL(0x7fffffffd4c0)
        tail = XIL(0x30)
#27 0x0000555555720a3d in Fcommand_error_default_function (data=XIL(0x55555732d343), context=XIL(0x7ffff25734c4), signal=XIL(0)) at ../../master/src/keyboard.c:1032
        sf = 0x555556f6f728
#28 0x00005555557fdc14 in funcall_subr (subr=0x555555dd86a0 <Scommand_error_default_function>, numargs=3, args=0x7fffffffd628) at ../../master/src/eval.c:2992
        internal_argbuf = {XIL(0x7fffffffd570), XIL(0x1000000000), XIL(0x555555dd86a0), XIL(0x7fffffffd578), XIL(0x5555557f47fd), XIL(0x10557f42c4), XIL(0x555555dd86a5), XIL(0x7fffffffd590)}
        internal_args = 0x7fffffffd628
#29 0x00005555557fd682 in Ffuncall (nargs=4, args=0x7fffffffd620) at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd86a5)
        original_fun = XIL(0x2aaa9ccc8548)
        funcar = XIL(0x7fffffffd5f0)
        numargs = 3
        val = XIL(0x7fffffffd610)
        count = 5
#30 0x00005555557fc7a6 in Fapply (nargs=2, args=0x7fffffffd7e8) at ../../master/src/eval.c:2544
        i = 4
        funcall_nargs = 4
        funcall_args = 0x7fffffffd620
        spread_arg = XIL(0)
        fun = XIL(0x555555dd86a5)
        sa_avail = 16352
        sa_count = 5
        numargs = 3
        retval = XIL(0)
#31 0x00005555557fdaab in funcall_subr (subr=0x555555de04a0 <Sapply>, numargs=2, args=0x7fffffffd7e8) at ../../master/src/eval.c:2967
#32 0x00005555557fd682 in Ffuncall (nargs=3, args=0x7fffffffd7e0) at ../../master/src/eval.c:2914
        fun = XIL(0x555555de04a5)
        original_fun = XIL(0x2d60)
        funcar = XIL(0x7fffffffd7a0)
        numargs = 2
        val = XIL(0x7fffffffdcc8)
        count = 4
#33 0x0000555555856d45 in exec_byte_code (bytestr=XIL(0x7ffff258f0e4), vector=XIL(0x7ffff2c1d0fd), maxdepth=make_fixnum(5), args_template=make_fixnum(128), nargs=3, args=0x7fffffffdcc8) at ../../master/src/bytecode.c:632
        op = 2
        type = (unknown: 0xffffdb10)
        targets = {0x555555859bda <exec_byte_code+15219>, 0x555555859bff <exec_byte_code+15256>, 0x555555859c01 <exec_byte_code+15258>, 0x555555859c03 <exec_byte_code+15260>, 0x555555859c05 <exec_byte_code+15262>, 0x555555859c05 <exec_byte_code+15262>, 0x555555859c6a <exec_byte_code+15363>, 0x555555859cde <exec_byte_code+15479>, 0x555555856605 <exec_byte_code+1438>, 0x555555856607 <exec_byte_code+1440>, 0x555555856609 <exec_byte_code+1442>, 0x55555585660b <exec_byte_code+1444>, 0x55555585660d <exec_byte_code+1446>, 0x55555585660d <exec_byte_code+1446>, 0x555555856613 <exec_byte_code+1452>, 0x5555558565d4 <exec_byte_code+1389>, 0x555555856a2b <exec_byte_code+2500>, 0x555555856a2d <exec_byte_code+2502>, 0x555555856a2f <exec_byte_code+2504>, 0x555555856a31 <exec_byte_code+2506>, 0x555555856a33 <exec_byte_code+2508>, 0x555555856a33 <exec_byte_code+2508>, 0x555555856a68 <exec_byte_code+2561>, 0x555555856a39 <exec_byte_code+2514>, 0x555555856c5d <exec_byte_code+3062>, 0x555555856c5f <exec_byte_code+3064>, 0x555555856c61 <exec_byte_code+3066>, 0x555555856c63 <exec_byte_code+3068>, 0x555555856c65 <exec_byte_code+3070>, 0x555555856c65 <exec_byte_code+3070>, 0x555555856c17 <exec_byte_code+2992>, 0x555555856c2e <exec_byte_code+3015>, 0x555555856d12 <exec_byte_code+3243>, 0x555555856d14 <exec_byte_code+3245>, 0x555555856d16 <exec_byte_code+3247>, 0x555555856d18 <exec_byte_code+3249>, 0x555555856d1a <exec_byte_code+3251>, 0x555555856d1a <exec_byte_code+3251>, 0x555555856ccc <exec_byte_code+3173>, 0x555555856ce3 <exec_byte_code+3196>, 0x555555856dc4 <exec_byte_code+3421>, 0x555555856dc6 <exec_byte_code+3423>, 0x555555856dc8 <exec_byte_code+3425>, 0x555555856dca <exec_byte_code+3427>, 0x555555856dcc <exec_byte_code+3429>, 0x555555856dcc <exec_byte_code+3429>, 0x555555856d7e <exec_byte_code+3351>, 0x555555856d95 <exec_byte_code+3374>, 0x55555585762c <exec_byte_code+5573>, 0x55555585750f <exec_byte_code+5288>, 0x555555857506 <exec_byte_code+5279>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555857866 <exec_byte_code+6143>, 0x55555585797c <exec_byte_code+6421>, 0x5555558579d9 <exec_byte_code+6514>, 0x555555857a39 <exec_byte_code+6610>, 0x555555857a9b <exec_byte_code+6708>, 0x555555856884 <exec_byte_code+2077>, 0x5555558568ff <exec_byte_code+2200>, 0x555555857b14 <exec_byte_code+6829>, 0x5555558567c1 <exec_byte_code+1882>, 0x555555856967 <exec_byte_code+2304>, 0x555555857b7c <exec_byte_code+6933>, 0x555555857be4 <exec_byte_code+7037>, 0x555555857c2c <exec_byte_code+7109>, 0x555555857c94 <exec_byte_code+7213>, 0x555555857cfa <exec_byte_code+7315>, 0x555555857de0 <exec_byte_code+7545>, 0x555555857e28 <exec_byte_code+7617>, 0x555555857e90 <exec_byte_code+7721>, 0x555555857f15 <exec_byte_code+7854>, 0x555555857f5d <exec_byte_code+7926>, 0x555555857fa5 <exec_byte_code+7998>, 0x55555585800d <exec_byte_code+8102>, 0x555555858075 <exec_byte_code+8206>, 0x5555558580dd <exec_byte_code+8310>, 0x555555858162 <exec_byte_code+8443>, 0x5555558581b1 <exec_byte_code+8522>, 0x555555858200 <exec_byte_code+8601>, 0x5555558582c7 <exec_byte_code+8800>, 0x5555558583c0 <exec_byte_code+9049>, 0x5555558584b9 <exec_byte_code+9298>, 0x555555858526 <exec_byte_code+9407>, 0x555555858593 <exec_byte_code+9516>, 0x555555858600 <exec_byte_code+9625>, 0x55555585866d <exec_byte_code+9734>, 0x5555558586da <exec_byte_code+9843>, 0x555555858729 <exec_byte_code+9922>, 0x555555858823 <exec_byte_code+10172>, 0x555555858872 <exec_byte_code+10251>, 0x5555558588c1 <exec_byte_code+10330>, 0x555555858910 <exec_byte_code+10409>, 0x555555858a16 <exec_byte_code+10671>, 0x555555857386 <exec_byte_code+4895>, 0x555555858a71 <exec_byte_code+10762>, 0x555555858ab9 <exec_byte_code+10834>, 0x555555858b7b <exec_byte_code+11028>, 0x555555858be4 <exec_byte_code+11133>, 0x555555858c3f <exec_byte_code+11224>, 0x555555858c87 <exec_byte_code+11296>, 0x555555858cca <exec_byte_code+11363>, 0x555555858d0d <exec_byte_code+11430>, 0x555555858d58 <exec_byte_code+11505>, 0x555555859bda <exec_byte_code+15219>, 0x555555858db0 <exec_byte_code+11593>, 0x555555858df3 <exec_byte_code+11660>, 0x555555858e36 <exec_byte_code+11727>, 0x555555858e79 <exec_byte_code+11794>, 0x555555858ebc <exec_byte_code+11861>, 0x555555858eff <exec_byte_code+11928>, 0x555555857386 <exec_byte_code+4895>, 0x555555859bda <exec_byte_code+15219>, 0x555555858f47 <exec_byte_code+12000>, 0x555555858f99 <exec_byte_code+12082>, 0x555555858fe1 <exec_byte_code+12154>, 0x555555859029 <exec_byte_code+12226>, 0x555555859091 <exec_byte_code+12330>, 0x5555558590f9 <exec_byte_code+12434>, 0x555555859141 <exec_byte_code+12506>, 0x5555558591fe <exec_byte_code+12695>, 0x555555859266 <exec_byte_code+12799>, 0x5555558592ce <exec_byte_code+12903>, 0x555555859336 <exec_byte_code+13007>, 0x555555859379 <exec_byte_code+13074>, 0x555555859bda <exec_byte_code+15219>, 0x5555558572cc <exec_byte_code+4709>, 0x555555856e76 <exec_byte_code+3599>, 0x55555585672f <exec_byte_code+1736>, 0x555555856f27 <exec_byte_code+3776>, 0x555555856fab <exec_byte_code+3908>, 0x55555585702c <exec_byte_code+4037>, 0x555555857280 <exec_byte_code+4633>, 0x555555857295 <exec_byte_code+4654>, 0x555555856bc4 <exec_byte_code+2909>, 0x55555585734f <exec_byte_code+4840>, 0x5555558573bd <exec_byte_code+4950>, 0x55555585744e <exec_byte_code+5095>, 0x555555857497 <exec_byte_code+5168>, 0x555555857678 <exec_byte_code+5649>, 0x5555558576f5 <exec_byte_code+5774>, 0x55555585777a <exec_byte_code+5907>, 0x5555558577e0 <exec_byte_code+6009>, 0x555555856e28 <exec_byte_code+3521>, 0x5555558593c1 <exec_byte_code+13146>, 0x555555859446 <exec_byte_code+13279>, 0x55555585948e <exec_byte_code+13351>, 0x5555558594d6 <exec_byte_code+13423>, 0x55555585951e <exec_byte_code+13495>, 0x555555859566 <exec_byte_code+13567>, 0x5555558595ce <exec_byte_code+13671>, 0x555555859636 <exec_byte_code+13775>, 0x55555585969e <exec_byte_code+13879>, 0x555555859706 <exec_byte_code+13983>, 0x55555585984f <exec_byte_code+14312>, 0x5555558598b7 <exec_byte_code+14416>, 0x55555585991f <exec_byte_code+14520>, 0x555555859967 <exec_byte_code+14592>, 0x5555558599cf <exec_byte_code+14696>, 0x555555859a37 <exec_byte_code+14800>, 0x555555859a7f <exec_byte_code+14872>, 0x555555859ac7 <exec_byte_code+14944>, 0x55555585895f <exec_byte_code+10488>, 0x5555558589ae <exec_byte_code+10567>, 0x555555859b16 <exec_byte_code+15023>, 0x555555859b78 <exec_byte_code+15121>, 0x555555859bda <exec_byte_code+15219>, 0x5555558570ad <exec_byte_code+4166>, 0x5555558570ca <exec_byte_code+4195>, 0x555555857139 <exec_byte_code+4306>, 0x5555558571a8 <exec_byte_code+4417>, 0x555555857214 <exec_byte_code+4525>, 0x555555857d68 <exec_byte_code+7425>, 0x55555585824f <exec_byte_code+8680>, 0x555555858b03 <exec_byte_code+10908>, 0x555555859d71 <exec_byte_code+15626>, 0x555555859de6 <exec_byte_code+15743>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859e7c <exec_byte_code+15893>, 0x555555859f03 <exec_byte_code+16028>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x555555859bda <exec_byte_code+15219>, 0x55555585a051 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 4
        bytestr_length = 10
        vectorp = 0x7ffff2c1d100
        quitcounter = 1 '\001'
        stack_items = 6
        sa_avail = 16326
        sa_count = 4
        alloc = 0x7fffffffd7d0
        stack_base = 0x7fffffffd7d0
        top = 0x7fffffffd7e0
        stack_lim = 0x7fffffffd800
        bytestr_data = 0x7fffffffd800 "\300\302\002\"\300\301\003\"\210\207"
        pc = 0x7fffffffd804 "\300\301\003\"\210\207"
        count = 4
        result = XIL(0x5555557f42c4)
#34 0x00005555557fde6d in fetch_and_exec_byte_code (fun=XIL(0x7ffff2c1d0cd), syms_left=make_fixnum(128), nargs=3, args=0x7fffffffdcc8) at ../../master/src/eval.c:3036
#35 0x00005555557fe2f3 in funcall_lambda (fun=XIL(0x7ffff2c1d0cd), nargs=3, arg_vector=0x7fffffffdcc8) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffdc30)
        syms_left = make_fixnum(128)
        next = make_fixnum(2)
        lexenv = XIL(0x1800000003)
        count = 4
        i = 93824994985981
        optional = false
        rest = false
#36 0x00005555557fd6c6 in Ffuncall (nargs=4, args=0x7fffffffdcc0) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff2c1d0cd)
        original_fun = XIL(0x7ffff2c1d0cd)
        funcar = XIL(0x7fffffffdc70)
        numargs = 3
        val = XIL(0x7fffffffdc90)
        count = 3
#37 0x00005555557fcf1a in call3 (fn=XIL(0x7ffff2c1d0cd), arg1=XIL(0x55555732d343), arg2=XIL(0x7ffff25734c4), arg3=XIL(0)) at ../../master/src/eval.c:2788
#38 0x0000555555720858 in cmd_error_internal (data=XIL(0x55555732d343), context=0x7fffffffdd70 "") at ../../master/src/keyboard.c:987
#39 0x0000555555720726 in cmd_error (data=XIL(0x55555732d343)) at ../../master/src/keyboard.c:956
        old_level = XIL(0)
        old_length = XIL(0)
        macroerror = "\000\000\000\000\000\000\000\000\360\350\365UUU\000\000\260\335\377\377\001\000\000\000\002\000\000\000\000\000\000\000\000x\000\000\000\000\000\000\207\230\177UUU\000\000\220", <incomplete sequence \321>
#40 0x00005555557f9436 in internal_condition_case (bfun=0x555555720fb0 <command_loop_1>, handlers=XIL(0x90), hfun=0x5555557205d3 <cmd_error>) at ../../master/src/eval.c:1435
        val = XIL(0x55555732d343)
        c = 0x555555f5e8f0
#41 0x0000555555720ba0 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = make_fixnum(0)
#42 0x00005555557f884e in internal_catch (tag=XIL(0xd9e0), func=0x555555720b73 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555f47770
#43 0x0000555555720b3f in command_loop () at ../../master/src/keyboard.c:1073
#44 0x00005555557200bc in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf00)
#45 0x00005555557202b3 in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#46 0x000055555571c198 in main (argc=2, argv=0x7fffffffe168) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"window-list-1" (0xffffbfa0)
"replace-buffer-in-windows" (0xffffc4a8)
"kill-buffer" (0xffffc710)
0x57833588 PVEC_COMPILED
"substitute-command-keys" (0xffffd3d8)
"command-error-default-function" (0xffffd628)
"apply" (0xffffd7e8)
0xf2c1d0c8 PVEC_COMPILED


-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 15:08                                                                                                                                                     ` Eli Zaretskii
@ 2021-04-08 15:24                                                                                                                                                       ` Andreas Schwab
  0 siblings, 0 replies; 160+ messages in thread
From: Andreas Schwab @ 2021-04-08 15:24 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, 47244, Michael Welsh Duggan

On Apr 08 2021, Eli Zaretskii wrote:

> That could mean some code signals an error, or throws to catchpoint,
> before the second breakpoint is hit.

I don't think the window_list function can be interrupted.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 15:21                                                                                                                                                     ` Michael Welsh Duggan
@ 2021-04-08 15:33                                                                                                                                                       ` Michael Welsh Duggan
  2021-04-08 15:48                                                                                                                                                       ` martin rudalics
  2021-04-08 15:58                                                                                                                                                       ` Eli Zaretskii
  2 siblings, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 15:33 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

Michael Welsh Duggan <mwd@md5i.com> writes:

> Michael Welsh Duggan <mwd@cert.org> writes:
>
>> martin rudalics <rudalics@gmx.at> writes:
>>
>>>  > FWIW, I've been trying to do the same and have been similarly
>>>  > unsuccessful.
>>>
>>> I attach a version where I make a shadow copy of Vwindow_list called
>>> Vwindow_list_2.  The two should behave the same just that Vwindow_list_2
>>> is never accessed by other code.  So we can put an assertion like
>>>
>>>      eassert (!NILP (Fequal (Vwindow_list, Vwindow_list_2)));
>>>
>>> anywhere in the code.  I put one in window_list and it should trigger
>>> the same way as the length check before.
>>>
>>> Now if anyone can suggest some strategic positions where to put these
>>> assertions, I'll be all ears.
>>
>> I've yet to run this code yet (will do so shortly), but I'd like to
>> mention that some other debugging I've been doing involving tricky
>> breakpoint commands is implying that, somehow, list_windows() is getting
>> called while list_windows() is still running.  I've got a breakpoint
>> at the beginning of the if clause in window_list() and one at the end,
>> and it looks like I'm seeing the first one get called twice without the
>> second getting called inbetween.
>
> Okay, close, but not quite.  What seems to be happening is this:
> list_windows() is called while Vwindow_list is nil, and the if branch is
> taken.  Something causes list_windows() to exit without reaching the end
> of the if block.  This leaves Vwindow_list partially created.  The next
> time list_windows() is called it returns the partially created list.
>
> To determine this I put a breakpoint at the beginning of the if block
> that sets a gdb convenience variable called $in_list_windows to one and
> continues.  I put a breakpoint at the end of that block that sets it to
> zero and continues.  I put a third condition breakpoint at the entrance
> to list_windows() that only triggers if $in_list_windows is one.  This
> triggered with the included backtrace.
>
> Once again, the state triggered when, due to the VPN state changing, a
> background gnus demon hung trying to fetch mail.  The trigger was me
> hitting C-g twice rapidly in succession to regain interactivity.
>
> Can anyone recommend a means to check if this my theory is true?  Does
> list_windows() need to be protected against quit?

For the backtrace of that run, please note that I was using my own
modified version of list_windows(), not Martin's latest one.  I'm now
running with Martin's version for the next trigger.

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 15:21                                                                                                                                                     ` Michael Welsh Duggan
  2021-04-08 15:33                                                                                                                                                       ` Michael Welsh Duggan
@ 2021-04-08 15:48                                                                                                                                                       ` martin rudalics
  2021-04-08 16:01                                                                                                                                                         ` Michael Welsh Duggan
  2021-04-08 15:58                                                                                                                                                       ` Eli Zaretskii
  2 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-08 15:48 UTC (permalink / raw)
  To: Michael Welsh Duggan, Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org

 > Okay, close, but not quite.  What seems to be happening is this:
 > list_windows()

This is a local rewrite.  You really intend window_list() here.  Right?

 > is called while Vwindow_list is nil, and the if branch is
 > taken.  Something causes list_windows() to exit without reaching the end
 > of the if block.  This leaves Vwindow_list partially created.

OK.  If you really get out of this after the first

	  Vwindow_list = nconc2 (Vwindow_list, arglist);

then we have one recorded frame, the length of Vwindow_list is 2 but we
did not record it in the earlier length-based experiment and the 2 won't
show up in the list of lengths.  So the explanation is valid and a bit
gruesome too.  This might hit us anywhere ...

 > The next
 > time list_windows() is called it returns the partially created list.
 >
 > To determine this I put a breakpoint at the beginning of the if block
 > that sets a gdb convenience variable called $in_list_windows to one and
 > continues.  I put a breakpoint at the end of that block that sets it to
 > zero and continues.  I put a third condition breakpoint at the entrance
 > to list_windows() that only triggers if $in_list_windows is one.  This
 > triggered with the included backtrace.
 >
 > Once again, the state triggered when, due to the VPN state changing, a
 > background gnus demon hung trying to fetch mail.  The trigger was me
 > hitting C-g twice rapidly in succession to regain interactivity.
 >
 > Can anyone recommend a means to check if this my theory is true?  Does
 > list_windows() need to be protected against quit?

Try with

   block_input ();
   ...
   unblock_input ();

around it.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 15:21                                                                                                                                                     ` Michael Welsh Duggan
  2021-04-08 15:33                                                                                                                                                       ` Michael Welsh Duggan
  2021-04-08 15:48                                                                                                                                                       ` martin rudalics
@ 2021-04-08 15:58                                                                                                                                                       ` Eli Zaretskii
  2021-04-08 16:05                                                                                                                                                         ` Michael Welsh Duggan
  2021-04-08 17:11                                                                                                                                                         ` Michael Welsh Duggan
  2 siblings, 2 replies; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-08 15:58 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: schwab, 47244, mwd

> From: Michael Welsh Duggan <mwd@md5i.com>
> Date: Thu, 08 Apr 2021 11:21:10 -0400
> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> 
> Okay, close, but not quite.  What seems to be happening is this:
> list_windows() is called while Vwindow_list is nil, and the if branch is
> taken.  Something causes list_windows() to exit without reaching the end
> of the if block.  This leaves Vwindow_list partially created.  The next
> time list_windows() is called it returns the partially created list.
> 
> To determine this I put a breakpoint at the beginning of the if block
> that sets a gdb convenience variable called $in_list_windows to one and
> continues.  I put a breakpoint at the end of that block that sets it to
> zero and continues.  I put a third condition breakpoint at the entrance
> to list_windows() that only triggers if $in_list_windows is one.  This
> triggered with the included backtrace.

I guess you mean window_list instead of list_windows?

> Once again, the state triggered when, due to the VPN state changing, a
> background gnus demon hung trying to fetch mail.  The trigger was me
> hitting C-g twice rapidly in succession to regain interactivity.
> 
> Can anyone recommend a means to check if this my theory is true?  Does
> list_windows() need to be protected against quit?

Set a breakpoint in 'quit' and disable it.  Set another breakpoint at
entry to 'window_list' that enables the breakpoint in 'quit', then
another breakpoint at exit which disables the breakpoint in 'quit'.
Then wait for the breakpoint in 'quit' to break during your recipe.

Perhaps also do the same with a breakpoint in Fthrow.

> #26 0x000055555583108e in print_error_message (data=XIL(0x55555732d343), stream=XIL(0x30), context=0x7ffff2c64148 "", caller=XIL(0)) at ../../master/src/print.c:944
>         error_conditions = XIL(0x7ffff2c2da13)
>         errname = XIL(0xb820)
>         errmsg = make_fixnum(23456248526235)
>         file_error = XIL(0x7fffffffd4c0)
>         tail = XIL(0x30)

What error message does this attempt to print?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 15:48                                                                                                                                                       ` martin rudalics
@ 2021-04-08 16:01                                                                                                                                                         ` Michael Welsh Duggan
  2021-04-08 16:14                                                                                                                                                           ` martin rudalics
  2021-04-08 16:35                                                                                                                                                           ` Eli Zaretskii
  0 siblings, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 16:01 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

martin rudalics <rudalics@gmx.at> writes:

>  > Okay, close, but not quite.  What seems to be happening is this:
>  > list_windows()
>
> This is a local rewrite.  You really intend window_list() here.  Right?

I did.  I've inverted the order of those words many times, and I didn't
catch it this time.

>  > is called while Vwindow_list is nil, and the if branch is
>  > taken.  Something causes list_windows() to exit without reaching the end
>  > of the if block.  This leaves Vwindow_list partially created.
>
> OK.  If you really get out of this after the first
>
> 	  Vwindow_list = nconc2 (Vwindow_list, arglist);
>
> then we have one recorded frame, the length of Vwindow_list is 2 but we
> did not record it in the earlier length-based experiment and the 2 won't
> show up in the list of lengths.  So the explanation is valid and a bit
> gruesome too.  This might hit us anywhere ...
>
>  > The next
>  > time list_windows() is called it returns the partially created list.
>  >
>  > To determine this I put a breakpoint at the beginning of the if block
>  > that sets a gdb convenience variable called $in_list_windows to one and
>  > continues.  I put a breakpoint at the end of that block that sets it to
>  > zero and continues.  I put a third condition breakpoint at the entrance
>  > to list_windows() that only triggers if $in_list_windows is one.  This
>  > triggered with the included backtrace.
>  >
>  > Once again, the state triggered when, due to the VPN state changing, a
>  > background gnus demon hung trying to fetch mail.  The trigger was me
>  > hitting C-g twice rapidly in succession to regain interactivity.
>  >
>  > Can anyone recommend a means to check if this my theory is true?  Does
>  > list_windows() need to be protected against quit?
>
> Try with
>
>    block_input ();
>    ...
>    unblock_input ();
>
> around it.
>
> martin

Before that, I include the backtrace with your latest patch.  And here's
the interesting bit:

(gdb) p Vwindow_list
$2 = XIL(0x55555863cae3)
(gdb) xlist
$3 = 0x555556fc8af5
Lisp_Vectorlike
PVEC_WINDOW
$4 = (struct window *) 0x555556fc8af0
84x59+0+0
---
$5 = 0x555556fc8d05
Lisp_Vectorlike
PVEC_WINDOW
$6 = (struct window *) 0x555556fc8d00
84x1+0+59
---
nil
(gdb) p Vwindow_list_2
$7 = XIL(0)

Right before this I hit a breakpoint that that I had set up that, once
again, implied that in this call of window_list() happened subsequent to
a call to window_list() that didn't complete, somehow. 

Before running with block_input(), unblock_input(), I'm going to modify
the sources to set a physical variable to one on entrance to the if
block and set it back to zero at the exit.  At least then I can be sure
that an unintended termination of this function is really happening and
that it is not a debugger artifact.

#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647)
    at ../../master/src/emacs.c:379
#1  0x00005555557c4b77 in die
    (msg=0x5555559105c8 "!NILP (Fequal (Vwindow_list, Vwindow_list_2))", file=0x55555590f9cf "../../master/src/window.c", line=2584)
    at ../../master/src/alloc.c:7420
#2  0x000055555564b3f9 in window_list () at ../../master/src/window.c:2584
#3  0x000055555564bffb in window_list_1
    (window=XIL(0x555556fc8af5), minibuf=XIL(0xc0), all_frames=XIL(0x30))
    at ../../master/src/window.c:2871
        tail = XIL(0x7ffff26647bd)
        list = XIL(0)
        rest = XIL(0x7ffff26647c0)
#4  0x000055555564c341 in Fwindow_list_1
    (window=XIL(0), minibuf=XIL(0), all_frames=XIL(0x30))
    at ../../master/src/window.c:2945
#5  0x00005555557fdbfa in funcall_subr
    (subr=0x555555dd4960 <Swindow_list_1>, numargs=3, args=0x7fffffffbfa0)
    at ../../master/src/eval.c:2992
        internal_argbuf = 
          {XIL(0x7fffffffbed0), XIL(0x1000000000), XIL(0x555555dd4960), XIL(0x7fffffffbed8), XIL(0x5555557f47e3), make_fixnum(17538470058), XIL(0x555555dd4965), XIL(0x7fffffffbef0)}
        internal_args = 0x7fffffffbfa0
#6  0x00005555557fd668 in Ffuncall (nargs=4, args=0x7fffffffbf98)
    at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd4965)
        original_fun = XIL(0x2aaa9c71a7a8)
        funcar = XIL(0x7fffffffbf50)
        numargs = 3
        val = XIL(0x5555571d7ced)
        count = 12
#7  0x0000555555856d2b in exec_byte_code
    (bytestr=XIL(0x7ffff277c864), vector=XIL(0x7ffff277c80d), maxdepth=make_fixnum(8), args_template=make_fixnum(256), nargs=1, args=0x7fffffffc4b0)
    at ../../master/src/bytecode.c:632
        op = 3
        type = (CATCHER_ALL | unknown: 0x20)
        targets = 
          {0x555555859bc0 <exec_byte_code+15219>, 0x555555859be5 <exec_byte_code+15256>, 0x555555859be7 <exec_byte_code+15258>, 0x555555859be9 <exec_byte_code+15260>, 0x555555859beb <exec_byte_code+15262>, 0x555555859beb <exec_byte_code+15262>, 0x555555859c50 <exec_byte_code+15363>, 0x555555859cc4 <exec_byte_code+15479>, 0x5555558565eb <exec_byte_code+1438>, 0x5555558565ed <exec_byte_code+1440>, 0x5555558565ef <exec_byte_code+1442>, 0x5555558565f1 <exec_byte_code+1444>, 0x5555558565f3 <exec_byte_code+1446>, 0x5555558565f3 <exec_byte_code+1446>, 0x5555558565f9 <exec_byte_code+1452>, 0x5555558565ba <exec_byte_code+1389>, 0x555555856a11 <exec_byte_code+2500>, 0x555555856a13 <exec_byte_code+2502>, 0x555555856a15 <exec_byte_code+2504>, 0x555555856a17 <exec_byte_code+2506>, 0x555555856a19 <exec_byte_code+2508>, 0x555555856a19 <exec_byte_code+2508>, 0x555555856a4e <exec_byte_code+2561>, 0x555555856a1f <exec_byte_code+2514>, 0x555555856c43 <exec_byte_code+3062>, 0x555555856c45 <exec_byte_code+3064>, 0x555555856c47 <exec_byte_code+3066>, 0x555555856c49 <exec_byte_code+3068>, 0x555555856c4b <exec_byte_code+3070>, 0x555555856c4b <exec_byte_code+3070>, 0x555555856bfd <exec_byte_code+2992>, 0x555555856c14 <exec_byte_code+3015>, 0x555555856cf8 <exec_byte_code+3243>, 0x555555856cfa <exec_byte_code+3245>, 0x555555856cfc <exec_byte_code+3247>, 0x555555856cfe <exec_byte_code+3249>, 0x555555856d00 <exec_byte_code+3251>, 0x555555856d00 <exec_byte_code+3251>, 0x555555856cb2 <exec_byte_code+3173>, 0x555555856cc9 <exec_byte_code+3196>, 0x555555856daa <exec_byte_code+3421>, 0x555555856dac <exec_byte_code+3423>, 0x555555856dae <exec_byte_code+3425>, 0x555555856db0 <exec_byte_code+3427>, 0x555555856db2 <exec_byte_code+3429>, 0x555555856db2 <exec_byte_code+3429>, 0x555555856d64 <exec_byte_code+3351>, 0x555555856d7b <exec_byte_code+3374>, 0x555555857612 <exec_byte_code+5573>, 0x5555558574f5 <exec_byte_code+5288>, 0x5555558574ec <exec_byte_code+5279>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x55555585784c <exec_byte_code+6143>, 0x555555857962 <exec_byte_code+6421>, 0x5555558579bf <exec_byte_code+6514>, 0x555555857a1f <exec_byte_code+6610>, 0x555555857a81 <exec_byte_code+6708>, 0x55555585686a <exec_byte_code+2077>, 0x5555558568e5 <exec_byte_code+2200>, 0x555555857afa <exec_byte_code+6829>, 0x5555558567a7 <exec_byte_code+1882>, 0x55555585694d <exec_byte_code+2304>, 0x555555857b62 <exec_byte_code+6933>, 0x555555857bca <exec_byte_code+7037>, 0x555555857c12 <exec_byte_code+7109>, 0x555555857c7a <exec_byte_code+7213>, 0x555555857ce0 <exec_byte_code+7315>, 0x555555857dc6 <exec_byte_code+7545>, 0x555555857e0e <exec_byte_code+7617>, 0x555555857e76 <exec_byte_code+7721>, 0x555555857efb <exec_byte_code+7854>, 0x555555857f43 <exec_byte_code+7926>, 0x555555857f8b <exec_byte_code+7998>, 0x555555857ff3 <exec_byte_code+8102>, 0x55555585805b <exec_byte_code+8206>, 0x5555558580c3 <exec_byte_code+8310>, 0x555555858148 <exec_byte_code+8443>, 0x555555858197 <exec_byte_code+8522>, 0x5555558581e6 <exec_byte_code+8601>, 0x5555558582ad <exec_byte_code+8800>, 0x5555558583a6 <exec_byte_code+9049>, 0x55555585849f <exec_byte_code+9298>, 0x55555585850c <exec_byte_code+9407>, 0x555555858579 <exec_byte_code+9516>, 0x5555558585e6 <exec_byte_code+9625>, 0x555555858653 <exec_byte_code+9734>, 0x5555558586c0 <exec_byte_code+9843>, 0x55555585870f <exec_byte_code+9922>, 0x555555858809 <exec_byte_code+10172>, 0x555555858858 <exec_byte_code+10251>, 0x5555558588a7 <exec_byte_code+10330>, 0x5555558588f6 <exec_byte_code+10409>, 0x5555558589fc <exec_byte_code+10671>, 0x55555585736c <exec_byte_code+4895>, 0x555555858a57 <exec_byte_code+10762>, 0x555555858a9f <exec_byte_code+10834>, 0x555555858b61 <exec_byte_code+11028>, 0x555555858bca <exec_byte_code+11133>, 0x555555858c25 <exec_byte_code+11224>, 0x555555858c6d <exec_byte_code+11296>, 0x555555858cb0 <exec_byte_code+11363>, 0x555555858cf3 <exec_byte_code+11430>, 0x555555858d3e <exec_byte_code+11505>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555858d96 <exec_byte_code+11593>, 0x555555858dd9 <exec_byte_code+11660>, 0x555555858e1c <exec_byte_code+11727>, 0x555555858e5f <exec_byte_code+11794>, 0x555555858ea2 <exec_byte_code+11861>, 0x555555858ee5 <exec_byte_code+11928>, 0x55555585736c <exec_byte_code+4895>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555858f2d <exec_byte_code+12000>, 0x555555858f7f <exec_byte_code+12082>, 0x555555858fc7 <exec_byte_code+12154>, 0x55555585900f <exec_byte_code+12226>, 0x555555859077 <exec_byte_code+12330>, 0x5555558590df <exec_byte_code+12434>, 0x555555859127 <exec_byte_code+12506>, 0x5555558591e4 <exec_byte_code+12695>, 0x55555585924c <exec_byte_code+12799>, 0x5555558592b4 <exec_byte_code+12903>, 0x55555585931c <exec_byte_code+13007>, 0x55555585935f <exec_byte_code+13074>, 0x555555859bc0 <exec_byte_code+15219>, 0x5555558572b2 <exec_byte_code+4709>, 0x555555856e5c <exec_byte_code+3599>, 0x555555856715 <exec_byte_code+1736>, 0x555555856f0d <exec_byte_code+3776>, 0x555555856f91 <exec_byte_code+3908>, 0x555555857012 <exec_byte_code+4037>, 0x555555857266 <exec_byte_code+4633>, 0x55555585727b <exec_byte_code+4654>, 0x555555856baa <exec_byte_code+2909>, 0x555555857335 <exec_byte_code+4840>, 0x5555558573a3 <exec_byte_code+4950>, 0x555555857434 <exec_byte_code+5095>, 0x55555585747d <exec_byte_code+5168>, 0x55555585765e <exec_byte_code+5649>, 0x5555558576db <exec_byte_code+5774>, 0x555555857760 <exec_byte_code+5907>, 0x5555558577c6 <exec_byte_code+6009>, 0x555555856e0e <exec_byte_code+3521>, 0x5555558593a7 <exec_byte_code+13146>, 0x55555585942c <exec_byte_code+13279>, 0x555555859474 <exec_byte_code+13351>, 0x5555558594bc <exec_byte_code+13423>, 0x555555859504 <exec_byte_code+13495>, 0x55555585954c <exec_byte_code+13567>, 0x5555558595b4 <exec_byte_code+13671>, 0x55555585961c <exec_byte_code+13775>, 0x555555859684 <exec_byte_code+13879>, 0x5555558596ec <exec_byte_code+13983>, 0x555555859835 <exec_byte_code+14312>, 0x55555585989d <exec_byte_code+14416>, 0x555555859905 <exec_byte_code+14520>, 0x55555585994d <exec_byte_code+14592>, 0x5555558599b5 <exec_byte_code+14696>, 0x555555859a1d <exec_byte_code+14800>, 0x555555859a65 <exec_byte_code+14872>, 0x555555859aad <exec_byte_code+14944>, 0x555555858945 <exec_byte_code+10488>, 0x555555858994 <exec_byte_code+10567>, 0x555555859afc <exec_byte_code+15023>, 0x555555859b5e <exec_byte_code+15121>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555857093 <exec_byte_code+4166>, 0x5555558570b0 <exec_byte_code+4195>, 0x55555585711f <exec_byte_code+4306>, 0x55555585718e <exec_byte_code+4417>, 0x5555558571fa <exec_byte_code+4525>, 0x555555857d4e <exec_byte_code+7425>, 0x555555858235 <exec_byte_code+8680>, 0x555555858ae9 <exec_byte_code+10908>, 0x555555859d57 <exec_byte_code+15626>, 0x555555859dcc <exec_byte_code+15743>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859e62 <exec_byte_code+15893>, 0x555555859ee9 <exec_byte_code+16028>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x55555585a037 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 10
        bytestr_length = 56
        vectorp = 0x7ffff277c810
        quitcounter = 1 '\001'
        stack_items = 9
        sa_avail = 16256
        sa_count = 12
        alloc = 0x7fffffffbf80
        stack_base = 0x7fffffffbf80
        top = 0x7fffffffbf98
        stack_lim = 0x7fffffffbfc8
        bytestr_data = 0x7fffffffbfc8 "\300\001!\301\302\211\303#\211\205\067"
        pc = 0x7fffffffbfd0 "\211\205\067"
        count = 12
        result = XIL(0xc557d2534)
#8  0x00005555557fde53 in fetch_and_exec_byte_code (fun=XIL(0x7ffff277c7b5), syms_left=make_fixnum(256), nargs=1, args=0x7fffffffc4a8) at ../../master/src/eval.c:3036
#9  0x00005555557fe2d9 in funcall_lambda (fun=XIL(0x7ffff277c7b5), nargs=1, arg_vector=0x7fffffffc4a8) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffc420)
        syms_left = make_fixnum(256)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 12
        i = 93824994985955
        optional = false
        rest = false
#10 0x00005555557fd6ac in Ffuncall (nargs=2, args=0x7fffffffc4a0) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff277c7b5)
        original_fun = XIL(0xbd60)
        funcar = XIL(0x7fffffffc470)
        numargs = 1
        val = XIL(0x555555e63080)
        count = 11
#11 0x00005555557fce76 in call1 (fn=XIL(0xbd60), arg1=XIL(0x5555571d7ced)) at ../../master/src/eval.c:2774
#12 0x000055555564d859 in replace_buffer_in_windows (buffer=XIL(0x5555571d7ced)) at ../../master/src/window.c:3429
#13 0x0000555555758e6d in Fkill_buffer (buffer_or_name=XIL(0x5555571d7ced)) at ../../master/src/buffer.c:1830
        buffer = XIL(0x5555571d7ced)
        b = 0x5555571d7ce8
        tem = XIL(0x555555753673)
        m = 0x7fffffffc5f0
#14 0x00005555557fdba0 in funcall_subr (subr=0x555555dd9ce0 <Skill_buffer>, numargs=1, args=0x7fffffffc710) at ../../master/src/eval.c:2987
        internal_argbuf = {XIL(0x7fffffffc650), XIL(0x1000000000), XIL(0x555555dd9ce0), XIL(0x7fffffffc658), XIL(0x5555557f47e3), make_fixnum(17538470058), XIL(0x555555dd9ce5), XIL(0x7fffffffc670)}
        internal_args = 0x7fffffffc710
#15 0x00005555557fd668 in Ffuncall (nargs=2, args=0x7fffffffc708) at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd9ce5)
        original_fun = XIL(0x2aaa9c7147c0)
        funcar = XIL(0x7fffffffc6d0)
        numargs = 1
        val = XIL(0x7fffffffc6f0)
        count = 10
#16 0x0000555555856d2b in exec_byte_code (bytestr=XIL(0x7ffff25c7454), vector=XIL(0x5555571fc36d), maxdepth=make_fixnum(2), args_template=make_fixnum(0), nargs=0, args=0x7fffffffcbc0) at ../../master/src/bytecode.c:632
        op = 1
        type = (CATCHER_ALL | unknown: 0x5588e760)
        targets = {0x555555859bc0 <exec_byte_code+15219>, 0x555555859be5 <exec_byte_code+15256>, 0x555555859be7 <exec_byte_code+15258>, 0x555555859be9 <exec_byte_code+15260>, 0x555555859beb <exec_byte_code+15262>, 0x555555859beb <exec_byte_code+15262>, 0x555555859c50 <exec_byte_code+15363>, 0x555555859cc4 <exec_byte_code+15479>, 0x5555558565eb <exec_byte_code+1438>, 0x5555558565ed <exec_byte_code+1440>, 0x5555558565ef <exec_byte_code+1442>, 0x5555558565f1 <exec_byte_code+1444>, 0x5555558565f3 <exec_byte_code+1446>, 0x5555558565f3 <exec_byte_code+1446>, 0x5555558565f9 <exec_byte_code+1452>, 0x5555558565ba <exec_byte_code+1389>, 0x555555856a11 <exec_byte_code+2500>, 0x555555856a13 <exec_byte_code+2502>, 0x555555856a15 <exec_byte_code+2504>, 0x555555856a17 <exec_byte_code+2506>, 0x555555856a19 <exec_byte_code+2508>, 0x555555856a19 <exec_byte_code+2508>, 0x555555856a4e <exec_byte_code+2561>, 0x555555856a1f <exec_byte_code+2514>, 0x555555856c43 <exec_byte_code+3062>, 0x555555856c45 <exec_byte_code+3064>, 0x555555856c47 <exec_byte_code+3066>, 0x555555856c49 <exec_byte_code+3068>, 0x555555856c4b <exec_byte_code+3070>, 0x555555856c4b <exec_byte_code+3070>, 0x555555856bfd <exec_byte_code+2992>, 0x555555856c14 <exec_byte_code+3015>, 0x555555856cf8 <exec_byte_code+3243>, 0x555555856cfa <exec_byte_code+3245>, 0x555555856cfc <exec_byte_code+3247>, 0x555555856cfe <exec_byte_code+3249>, 0x555555856d00 <exec_byte_code+3251>, 0x555555856d00 <exec_byte_code+3251>, 0x555555856cb2 <exec_byte_code+3173>, 0x555555856cc9 <exec_byte_code+3196>, 0x555555856daa <exec_byte_code+3421>, 0x555555856dac <exec_byte_code+3423>, 0x555555856dae <exec_byte_code+3425>, 0x555555856db0 <exec_byte_code+3427>, 0x555555856db2 <exec_byte_code+3429>, 0x555555856db2 <exec_byte_code+3429>, 0x555555856d64 <exec_byte_code+3351>, 0x555555856d7b <exec_byte_code+3374>, 0x555555857612 <exec_byte_code+5573>, 0x5555558574f5 <exec_byte_code+5288>, 0x5555558574ec <exec_byte_code+5279>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x55555585784c <exec_byte_code+6143>, 0x555555857962 <exec_byte_code+6421>, 0x5555558579bf <exec_byte_code+6514>, 0x555555857a1f <exec_byte_code+6610>, 0x555555857a81 <exec_byte_code+6708>, 0x55555585686a <exec_byte_code+2077>, 0x5555558568e5 <exec_byte_code+2200>, 0x555555857afa <exec_byte_code+6829>, 0x5555558567a7 <exec_byte_code+1882>, 0x55555585694d <exec_byte_code+2304>, 0x555555857b62 <exec_byte_code+6933>, 0x555555857bca <exec_byte_code+7037>, 0x555555857c12 <exec_byte_code+7109>, 0x555555857c7a <exec_byte_code+7213>, 0x555555857ce0 <exec_byte_code+7315>, 0x555555857dc6 <exec_byte_code+7545>, 0x555555857e0e <exec_byte_code+7617>, 0x555555857e76 <exec_byte_code+7721>, 0x555555857efb <exec_byte_code+7854>, 0x555555857f43 <exec_byte_code+7926>, 0x555555857f8b <exec_byte_code+7998>, 0x555555857ff3 <exec_byte_code+8102>, 0x55555585805b <exec_byte_code+8206>, 0x5555558580c3 <exec_byte_code+8310>, 0x555555858148 <exec_byte_code+8443>, 0x555555858197 <exec_byte_code+8522>, 0x5555558581e6 <exec_byte_code+8601>, 0x5555558582ad <exec_byte_code+8800>, 0x5555558583a6 <exec_byte_code+9049>, 0x55555585849f <exec_byte_code+9298>, 0x55555585850c <exec_byte_code+9407>, 0x555555858579 <exec_byte_code+9516>, 0x5555558585e6 <exec_byte_code+9625>, 0x555555858653 <exec_byte_code+9734>, 0x5555558586c0 <exec_byte_code+9843>, 0x55555585870f <exec_byte_code+9922>, 0x555555858809 <exec_byte_code+10172>, 0x555555858858 <exec_byte_code+10251>, 0x5555558588a7 <exec_byte_code+10330>, 0x5555558588f6 <exec_byte_code+10409>, 0x5555558589fc <exec_byte_code+10671>, 0x55555585736c <exec_byte_code+4895>, 0x555555858a57 <exec_byte_code+10762>, 0x555555858a9f <exec_byte_code+10834>, 0x555555858b61 <exec_byte_code+11028>, 0x555555858bca <exec_byte_code+11133>, 0x555555858c25 <exec_byte_code+11224>, 0x555555858c6d <exec_byte_code+11296>, 0x555555858cb0 <exec_byte_code+11363>, 0x555555858cf3 <exec_byte_code+11430>, 0x555555858d3e <exec_byte_code+11505>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555858d96 <exec_byte_code+11593>, 0x555555858dd9 <exec_byte_code+11660>, 0x555555858e1c <exec_byte_code+11727>, 0x555555858e5f <exec_byte_code+11794>, 0x555555858ea2 <exec_byte_code+11861>, 0x555555858ee5 <exec_byte_code+11928>, 0x55555585736c <exec_byte_code+4895>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555858f2d <exec_byte_code+12000>, 0x555555858f7f <exec_byte_code+12082>, 0x555555858fc7 <exec_byte_code+12154>, 0x55555585900f <exec_byte_code+12226>, 0x555555859077 <exec_byte_code+12330>, 0x5555558590df <exec_byte_code+12434>, 0x555555859127 <exec_byte_code+12506>, 0x5555558591e4 <exec_byte_code+12695>, 0x55555585924c <exec_byte_code+12799>, 0x5555558592b4 <exec_byte_code+12903>, 0x55555585931c <exec_byte_code+13007>, 0x55555585935f <exec_byte_code+13074>, 0x555555859bc0 <exec_byte_code+15219>, 0x5555558572b2 <exec_byte_code+4709>, 0x555555856e5c <exec_byte_code+3599>, 0x555555856715 <exec_byte_code+1736>, 0x555555856f0d <exec_byte_code+3776>, 0x555555856f91 <exec_byte_code+3908>, 0x555555857012 <exec_byte_code+4037>, 0x555555857266 <exec_byte_code+4633>, 0x55555585727b <exec_byte_code+4654>, 0x555555856baa <exec_byte_code+2909>, 0x555555857335 <exec_byte_code+4840>, 0x5555558573a3 <exec_byte_code+4950>, 0x555555857434 <exec_byte_code+5095>, 0x55555585747d <exec_byte_code+5168>, 0x55555585765e <exec_byte_code+5649>, 0x5555558576db <exec_byte_code+5774>, 0x555555857760 <exec_byte_code+5907>, 0x5555558577c6 <exec_byte_code+6009>, 0x555555856e0e <exec_byte_code+3521>, 0x5555558593a7 <exec_byte_code+13146>, 0x55555585942c <exec_byte_code+13279>, 0x555555859474 <exec_byte_code+13351>, 0x5555558594bc <exec_byte_code+13423>, 0x555555859504 <exec_byte_code+13495>, 0x55555585954c <exec_byte_code+13567>, 0x5555558595b4 <exec_byte_code+13671>, 0x55555585961c <exec_byte_code+13775>, 0x555555859684 <exec_byte_code+13879>, 0x5555558596ec <exec_byte_code+13983>, 0x555555859835 <exec_byte_code+14312>, 0x55555585989d <exec_byte_code+14416>, 0x555555859905 <exec_byte_code+14520>, 0x55555585994d <exec_byte_code+14592>, 0x5555558599b5 <exec_byte_code+14696>, 0x555555859a1d <exec_byte_code+14800>, 0x555555859a65 <exec_byte_code+14872>, 0x555555859aad <exec_byte_code+14944>, 0x555555858945 <exec_byte_code+10488>, 0x555555858994 <exec_byte_code+10567>, 0x555555859afc <exec_byte_code+15023>, 0x555555859b5e <exec_byte_code+15121>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555857093 <exec_byte_code+4166>, 0x5555558570b0 <exec_byte_code+4195>, 0x55555585711f <exec_byte_code+4306>, 0x55555585718e <exec_byte_code+4417>, 0x5555558571fa <exec_byte_code+4525>, 0x555555857d4e <exec_byte_code+7425>, 0x555555858235 <exec_byte_code+8680>, 0x555555858ae9 <exec_byte_code+10908>, 0x555555859d57 <exec_byte_code+15626>, 0x555555859dcc <exec_byte_code+15743>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859e62 <exec_byte_code+15893>, 0x555555859ee9 <exec_byte_code+16028>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x55555585a037 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 3
        bytestr_length = 10
        vectorp = 0x5555571fc370
        quitcounter = 1 '\001'
        stack_items = 3
        sa_avail = 16350
        sa_count = 10
        alloc = 0x7fffffffc700
        stack_base = 0x7fffffffc700
        top = 0x7fffffffc708
        stack_lim = 0x7fffffffc718
        bytestr_data = 0x7fffffffc718 "\301\300!\205\t"
        pc = 0x7fffffffc721 "\207\377\377\377\177"
        count = 10
        result = XIL(0x9)
#17 0x00005555557fde53 in fetch_and_exec_byte_code (fun=XIL(0x5555571d80fd), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffcbc0) at ../../master/src/eval.c:3036
#18 0x00005555557fe2d9 in funcall_lambda (fun=XIL(0x5555571d80fd), nargs=0, arg_vector=0x7fffffffcbc0) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffcb40)
        syms_left = make_fixnum(0)
        next = XIL(0x1)
        lexenv = XIL(0x1800000000)
        count = 10
        i = 93824994985955
        optional = false
        rest = false
#19 0x00005555557fd6ac in Ffuncall (nargs=1, args=0x7fffffffcbb8) at ../../master/src/eval.c:2916
        fun = XIL(0x5555571d80fd)
        original_fun = XIL(0x5555571d80fd)
        funcar = XIL(0x7fffffffcb70)
        numargs = 0
        val = XIL(0x555555e63080)
        count = 9
#20 0x000055555585604a in bcall0 (f=XIL(0x5555571d80fd)) at ../../master/src/bytecode.c:340
#21 0x00005555557ffae0 in do_one_unbind (this_binding=0x7fffffffcc30, unwinding=true, bindflag=SET_INTERNAL_UNBIND) at ../../master/src/eval.c:3575
#22 0x00005555557fff0c in unbind_to (count=8, value=XIL(0)) at ../../master/src/eval.c:3713
        this_binding = {
          kind = SPECPDL_UNWIND,
          unwind = {
            kind = SPECPDL_UNWIND,
            func = 0x55555585602d <bcall0>,
            arg = XIL(0x5555571d80fd),
            eval_depth = 4
          },
          unwind_array = {
            kind = SPECPDL_UNWIND,
            nelts = 93824995385389,
            array = 0x5555571d80fd
          },
          unwind_ptr = {
            kind = SPECPDL_UNWIND,
            func = 0x55555585602d <bcall0>,
            arg = 0x5555571d80fd
          },
          unwind_int = {
            kind = SPECPDL_UNWIND,
            func = 0x55555585602d <bcall0>,
            arg = 1461551357
          },
          unwind_intmax = {
            kind = SPECPDL_UNWIND,
            func = 0x55555585602d <bcall0>,
            arg = 93825022132477
          },
          unwind_excursion = {
            kind = SPECPDL_UNWIND,
            marker = XIL(0x55555585602d),
            window = XIL(0x5555571d80fd)
          },
          unwind_void = {
            kind = SPECPDL_UNWIND,
            func = 0x55555585602d <bcall0>
          },
          let = {
            kind = SPECPDL_UNWIND,
            symbol = XIL(0x55555585602d),
            old_value = XIL(0x5555571d80fd),
            where = XIL(0x4),
            saved_value = XIL(0)
          },
          bt = {
            kind = SPECPDL_UNWIND,
            debug_on_exit = false,
            function = XIL(0x55555585602d),
            args = 0x5555571d80fd,
            nargs = 4
          }
        }
        quitf = XIL(0)
#23 0x0000555555856ddc in exec_byte_code (bytestr=XIL(0x7ffff2908874), vector=XIL(0x7ffff2908525), maxdepth=make_fixnum(23), args_template=make_fixnum(257), nargs=1, args=0x7fffffffd3e0) at ../../master/src/bytecode.c:652
        op = 2
        type = (unknown: 0xffffd230)
        targets = {0x555555859bc0 <exec_byte_code+15219>, 0x555555859be5 <exec_byte_code+15256>, 0x555555859be7 <exec_byte_code+15258>, 0x555555859be9 <exec_byte_code+15260>, 0x555555859beb <exec_byte_code+15262>, 0x555555859beb <exec_byte_code+15262>, 0x555555859c50 <exec_byte_code+15363>, 0x555555859cc4 <exec_byte_code+15479>, 0x5555558565eb <exec_byte_code+1438>, 0x5555558565ed <exec_byte_code+1440>, 0x5555558565ef <exec_byte_code+1442>, 0x5555558565f1 <exec_byte_code+1444>, 0x5555558565f3 <exec_byte_code+1446>, 0x5555558565f3 <exec_byte_code+1446>, 0x5555558565f9 <exec_byte_code+1452>, 0x5555558565ba <exec_byte_code+1389>, 0x555555856a11 <exec_byte_code+2500>, 0x555555856a13 <exec_byte_code+2502>, 0x555555856a15 <exec_byte_code+2504>, 0x555555856a17 <exec_byte_code+2506>, 0x555555856a19 <exec_byte_code+2508>, 0x555555856a19 <exec_byte_code+2508>, 0x555555856a4e <exec_byte_code+2561>, 0x555555856a1f <exec_byte_code+2514>, 0x555555856c43 <exec_byte_code+3062>, 0x555555856c45 <exec_byte_code+3064>, 0x555555856c47 <exec_byte_code+3066>, 0x555555856c49 <exec_byte_code+3068>, 0x555555856c4b <exec_byte_code+3070>, 0x555555856c4b <exec_byte_code+3070>, 0x555555856bfd <exec_byte_code+2992>, 0x555555856c14 <exec_byte_code+3015>, 0x555555856cf8 <exec_byte_code+3243>, 0x555555856cfa <exec_byte_code+3245>, 0x555555856cfc <exec_byte_code+3247>, 0x555555856cfe <exec_byte_code+3249>, 0x555555856d00 <exec_byte_code+3251>, 0x555555856d00 <exec_byte_code+3251>, 0x555555856cb2 <exec_byte_code+3173>, 0x555555856cc9 <exec_byte_code+3196>, 0x555555856daa <exec_byte_code+3421>, 0x555555856dac <exec_byte_code+3423>, 0x555555856dae <exec_byte_code+3425>, 0x555555856db0 <exec_byte_code+3427>, 0x555555856db2 <exec_byte_code+3429>, 0x555555856db2 <exec_byte_code+3429>, 0x555555856d64 <exec_byte_code+3351>, 0x555555856d7b <exec_byte_code+3374>, 0x555555857612 <exec_byte_code+5573>, 0x5555558574f5 <exec_byte_code+5288>, 0x5555558574ec <exec_byte_code+5279>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x55555585784c <exec_byte_code+6143>, 0x555555857962 <exec_byte_code+6421>, 0x5555558579bf <exec_byte_code+6514>, 0x555555857a1f <exec_byte_code+6610>, 0x555555857a81 <exec_byte_code+6708>, 0x55555585686a <exec_byte_code+2077>, 0x5555558568e5 <exec_byte_code+2200>, 0x555555857afa <exec_byte_code+6829>, 0x5555558567a7 <exec_byte_code+1882>, 0x55555585694d <exec_byte_code+2304>, 0x555555857b62 <exec_byte_code+6933>, 0x555555857bca <exec_byte_code+7037>, 0x555555857c12 <exec_byte_code+7109>, 0x555555857c7a <exec_byte_code+7213>, 0x555555857ce0 <exec_byte_code+7315>, 0x555555857dc6 <exec_byte_code+7545>, 0x555555857e0e <exec_byte_code+7617>, 0x555555857e76 <exec_byte_code+7721>, 0x555555857efb <exec_byte_code+7854>, 0x555555857f43 <exec_byte_code+7926>, 0x555555857f8b <exec_byte_code+7998>, 0x555555857ff3 <exec_byte_code+8102>, 0x55555585805b <exec_byte_code+8206>, 0x5555558580c3 <exec_byte_code+8310>, 0x555555858148 <exec_byte_code+8443>, 0x555555858197 <exec_byte_code+8522>, 0x5555558581e6 <exec_byte_code+8601>, 0x5555558582ad <exec_byte_code+8800>, 0x5555558583a6 <exec_byte_code+9049>, 0x55555585849f <exec_byte_code+9298>, 0x55555585850c <exec_byte_code+9407>, 0x555555858579 <exec_byte_code+9516>, 0x5555558585e6 <exec_byte_code+9625>, 0x555555858653 <exec_byte_code+9734>, 0x5555558586c0 <exec_byte_code+9843>, 0x55555585870f <exec_byte_code+9922>, 0x555555858809 <exec_byte_code+10172>, 0x555555858858 <exec_byte_code+10251>, 0x5555558588a7 <exec_byte_code+10330>, 0x5555558588f6 <exec_byte_code+10409>, 0x5555558589fc <exec_byte_code+10671>, 0x55555585736c <exec_byte_code+4895>, 0x555555858a57 <exec_byte_code+10762>, 0x555555858a9f <exec_byte_code+10834>, 0x555555858b61 <exec_byte_code+11028>, 0x555555858bca <exec_byte_code+11133>, 0x555555858c25 <exec_byte_code+11224>, 0x555555858c6d <exec_byte_code+11296>, 0x555555858cb0 <exec_byte_code+11363>, 0x555555858cf3 <exec_byte_code+11430>, 0x555555858d3e <exec_byte_code+11505>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555858d96 <exec_byte_code+11593>, 0x555555858dd9 <exec_byte_code+11660>, 0x555555858e1c <exec_byte_code+11727>, 0x555555858e5f <exec_byte_code+11794>, 0x555555858ea2 <exec_byte_code+11861>, 0x555555858ee5 <exec_byte_code+11928>, 0x55555585736c <exec_byte_code+4895>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555858f2d <exec_byte_code+12000>, 0x555555858f7f <exec_byte_code+12082>, 0x555555858fc7 <exec_byte_code+12154>, 0x55555585900f <exec_byte_code+12226>, 0x555555859077 <exec_byte_code+12330>, 0x5555558590df <exec_byte_code+12434>, 0x555555859127 <exec_byte_code+12506>, 0x5555558591e4 <exec_byte_code+12695>, 0x55555585924c <exec_byte_code+12799>, 0x5555558592b4 <exec_byte_code+12903>, 0x55555585931c <exec_byte_code+13007>, 0x55555585935f <exec_byte_code+13074>, 0x555555859bc0 <exec_byte_code+15219>, 0x5555558572b2 <exec_byte_code+4709>, 0x555555856e5c <exec_byte_code+3599>, 0x555555856715 <exec_byte_code+1736>, 0x555555856f0d <exec_byte_code+3776>, 0x555555856f91 <exec_byte_code+3908>, 0x555555857012 <exec_byte_code+4037>, 0x555555857266 <exec_byte_code+4633>, 0x55555585727b <exec_byte_code+4654>, 0x555555856baa <exec_byte_code+2909>, 0x555555857335 <exec_byte_code+4840>, 0x5555558573a3 <exec_byte_code+4950>, 0x555555857434 <exec_byte_code+5095>, 0x55555585747d <exec_byte_code+5168>, 0x55555585765e <exec_byte_code+5649>, 0x5555558576db <exec_byte_code+5774>, 0x555555857760 <exec_byte_code+5907>, 0x5555558577c6 <exec_byte_code+6009>, 0x555555856e0e <exec_byte_code+3521>, 0x5555558593a7 <exec_byte_code+13146>, 0x55555585942c <exec_byte_code+13279>, 0x555555859474 <exec_byte_code+13351>, 0x5555558594bc <exec_byte_code+13423>, 0x555555859504 <exec_byte_code+13495>, 0x55555585954c <exec_byte_code+13567>, 0x5555558595b4 <exec_byte_code+13671>, 0x55555585961c <exec_byte_code+13775>, 0x555555859684 <exec_byte_code+13879>, 0x5555558596ec <exec_byte_code+13983>, 0x555555859835 <exec_byte_code+14312>, 0x55555585989d <exec_byte_code+14416>, 0x555555859905 <exec_byte_code+14520>, 0x55555585994d <exec_byte_code+14592>, 0x5555558599b5 <exec_byte_code+14696>, 0x555555859a1d <exec_byte_code+14800>, 0x555555859a65 <exec_byte_code+14872>, 0x555555859aad <exec_byte_code+14944>, 0x555555858945 <exec_byte_code+10488>, 0x555555858994 <exec_byte_code+10567>, 0x555555859afc <exec_byte_code+15023>, 0x555555859b5e <exec_byte_code+15121>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555857093 <exec_byte_code+4166>, 0x5555558570b0 <exec_byte_code+4195>, 0x55555585711f <exec_byte_code+4306>, 0x55555585718e <exec_byte_code+4417>, 0x5555558571fa <exec_byte_code+4525>, 0x555555857d4e <exec_byte_code+7425>, 0x555555858235 <exec_byte_code+8680>, 0x555555858ae9 <exec_byte_code+10908>, 0x555555859d57 <exec_byte_code+15626>, 0x555555859dcc <exec_byte_code+15743>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859e62 <exec_byte_code+15893>, 0x555555859ee9 <exec_byte_code+16028>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x55555585a037 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 51
        bytestr_length = 494
        vectorp = 0x7ffff2908528
        quitcounter = 59 ';'
        stack_items = 24
        sa_avail = 15698
        sa_count = 7
        alloc = 0x7fffffffcc80
        stack_base = 0x7fffffffcc80
        top = 0x7fffffffccb0
        stack_lim = 0x7fffffffcd40
        bytestr_data = 0x7fffffffcd40 "\211??\205\355\001\b\302p\001\031\303\304\302\"r\211q\210\305\306\002\"\216\004c\210eb\210`dW\203\345\001`lj\211\211g\310U\203\234\001\311\061:"
        pc = 0x7fffffffcf28 "\262\001)\266\203\207"
        count = 7
        result = XIL(0)
#24 0x00005555557fde53 in fetch_and_exec_byte_code (fun=XIL(0x7ffff29084f5), syms_left=make_fixnum(257), nargs=1, args=0x7fffffffd3d8) at ../../master/src/eval.c:3036
#25 0x00005555557fe2d9 in funcall_lambda (fun=XIL(0x7ffff29084f5), nargs=1, arg_vector=0x7fffffffd3d8) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffd350)
        syms_left = make_fixnum(257)
        next = XIL(0x555555e63080)
        lexenv = XIL(0x1800000000)
        count = 7
        i = 93824994985955
        optional = false
        rest = false
#26 0x00005555557fd6ac in Ffuncall (nargs=2, args=0x7fffffffd3d0) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff29084f5)
        original_fun = XIL(0xcff0)
        funcar = XIL(0x555555e63080)
        numargs = 1
        val = XIL(0x5af0)
        count = 6
#27 0x00005555557fce76 in call1 (fn=XIL(0xcff0), arg1=XIL(0x555556232294)) at ../../master/src/eval.c:2774
#28 0x0000555555831074 in print_error_message (data=XIL(0x55555863cb33), stream=XIL(0x30), context=0x7ffff2c64148 "", caller=XIL(0)) at ../../master/src/print.c:944
        error_conditions = XIL(0x7ffff2c2da33)
        errname = XIL(0xb820)
        errmsg = XIL(0x55555571d654)
        file_error = XIL(0x7fffffffd4c0)
        tail = XIL(0x30)
#29 0x0000555555720a23 in Fcommand_error_default_function (data=XIL(0x55555863cb33), context=XIL(0x7ffff25734c4), signal=XIL(0)) at ../../master/src/keyboard.c:1032
        sf = 0x55555702c630
#30 0x00005555557fdbfa in funcall_subr (subr=0x555555dd86a0 <Scommand_error_default_function>, numargs=3, args=0x7fffffffd628) at ../../master/src/eval.c:2992
        internal_argbuf = {XIL(0x7fffffffd570), XIL(0x1000000000), XIL(0x555555dd86a0), XIL(0x7fffffffd578), XIL(0x5555557f47e3), make_fixnum(17538470058), XIL(0x555555dd86a5), XIL(0x7fffffffd590)}
        internal_args = 0x7fffffffd628
#31 0x00005555557fd668 in Ffuncall (nargs=4, args=0x7fffffffd620) at ../../master/src/eval.c:2914
        fun = XIL(0x555555dd86a5)
        original_fun = XIL(0x2aaa9ccc8548)
        funcar = XIL(0x7fffffffd5f0)
        numargs = 3
        val = XIL(0x7fffffffd610)
        count = 5
#32 0x00005555557fc78c in Fapply (nargs=2, args=0x7fffffffd7e8) at ../../master/src/eval.c:2544
        i = 4
        funcall_nargs = 4
        funcall_args = 0x7fffffffd620
        spread_arg = XIL(0)
        fun = XIL(0x555555dd86a5)
        sa_avail = 16352
        sa_count = 5
        numargs = 3
        retval = XIL(0)
#33 0x00005555557fda91 in funcall_subr (subr=0x555555de04a0 <Sapply>, numargs=2, args=0x7fffffffd7e8) at ../../master/src/eval.c:2967
#34 0x00005555557fd668 in Ffuncall (nargs=3, args=0x7fffffffd7e0) at ../../master/src/eval.c:2914
        fun = XIL(0x555555de04a5)
        original_fun = XIL(0x2d60)
        funcar = XIL(0x7fffffffd7a0)
        numargs = 2
        val = XIL(0x7fffffffdcc8)
        count = 4
#35 0x0000555555856d2b in exec_byte_code (bytestr=XIL(0x7ffff258f0e4), vector=XIL(0x7ffff2c1d11d), maxdepth=make_fixnum(5), args_template=make_fixnum(128), nargs=3, args=0x7fffffffdcc8) at ../../master/src/bytecode.c:632
        op = 2
        type = (unknown: 0xffffdb10)
        targets = {0x555555859bc0 <exec_byte_code+15219>, 0x555555859be5 <exec_byte_code+15256>, 0x555555859be7 <exec_byte_code+15258>, 0x555555859be9 <exec_byte_code+15260>, 0x555555859beb <exec_byte_code+15262>, 0x555555859beb <exec_byte_code+15262>, 0x555555859c50 <exec_byte_code+15363>, 0x555555859cc4 <exec_byte_code+15479>, 0x5555558565eb <exec_byte_code+1438>, 0x5555558565ed <exec_byte_code+1440>, 0x5555558565ef <exec_byte_code+1442>, 0x5555558565f1 <exec_byte_code+1444>, 0x5555558565f3 <exec_byte_code+1446>, 0x5555558565f3 <exec_byte_code+1446>, 0x5555558565f9 <exec_byte_code+1452>, 0x5555558565ba <exec_byte_code+1389>, 0x555555856a11 <exec_byte_code+2500>, 0x555555856a13 <exec_byte_code+2502>, 0x555555856a15 <exec_byte_code+2504>, 0x555555856a17 <exec_byte_code+2506>, 0x555555856a19 <exec_byte_code+2508>, 0x555555856a19 <exec_byte_code+2508>, 0x555555856a4e <exec_byte_code+2561>, 0x555555856a1f <exec_byte_code+2514>, 0x555555856c43 <exec_byte_code+3062>, 0x555555856c45 <exec_byte_code+3064>, 0x555555856c47 <exec_byte_code+3066>, 0x555555856c49 <exec_byte_code+3068>, 0x555555856c4b <exec_byte_code+3070>, 0x555555856c4b <exec_byte_code+3070>, 0x555555856bfd <exec_byte_code+2992>, 0x555555856c14 <exec_byte_code+3015>, 0x555555856cf8 <exec_byte_code+3243>, 0x555555856cfa <exec_byte_code+3245>, 0x555555856cfc <exec_byte_code+3247>, 0x555555856cfe <exec_byte_code+3249>, 0x555555856d00 <exec_byte_code+3251>, 0x555555856d00 <exec_byte_code+3251>, 0x555555856cb2 <exec_byte_code+3173>, 0x555555856cc9 <exec_byte_code+3196>, 0x555555856daa <exec_byte_code+3421>, 0x555555856dac <exec_byte_code+3423>, 0x555555856dae <exec_byte_code+3425>, 0x555555856db0 <exec_byte_code+3427>, 0x555555856db2 <exec_byte_code+3429>, 0x555555856db2 <exec_byte_code+3429>, 0x555555856d64 <exec_byte_code+3351>, 0x555555856d7b <exec_byte_code+3374>, 0x555555857612 <exec_byte_code+5573>, 0x5555558574f5 <exec_byte_code+5288>, 0x5555558574ec <exec_byte_code+5279>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x55555585784c <exec_byte_code+6143>, 0x555555857962 <exec_byte_code+6421>, 0x5555558579bf <exec_byte_code+6514>, 0x555555857a1f <exec_byte_code+6610>, 0x555555857a81 <exec_byte_code+6708>, 0x55555585686a <exec_byte_code+2077>, 0x5555558568e5 <exec_byte_code+2200>, 0x555555857afa <exec_byte_code+6829>, 0x5555558567a7 <exec_byte_code+1882>, 0x55555585694d <exec_byte_code+2304>, 0x555555857b62 <exec_byte_code+6933>, 0x555555857bca <exec_byte_code+7037>, 0x555555857c12 <exec_byte_code+7109>, 0x555555857c7a <exec_byte_code+7213>, 0x555555857ce0 <exec_byte_code+7315>, 0x555555857dc6 <exec_byte_code+7545>, 0x555555857e0e <exec_byte_code+7617>, 0x555555857e76 <exec_byte_code+7721>, 0x555555857efb <exec_byte_code+7854>, 0x555555857f43 <exec_byte_code+7926>, 0x555555857f8b <exec_byte_code+7998>, 0x555555857ff3 <exec_byte_code+8102>, 0x55555585805b <exec_byte_code+8206>, 0x5555558580c3 <exec_byte_code+8310>, 0x555555858148 <exec_byte_code+8443>, 0x555555858197 <exec_byte_code+8522>, 0x5555558581e6 <exec_byte_code+8601>, 0x5555558582ad <exec_byte_code+8800>, 0x5555558583a6 <exec_byte_code+9049>, 0x55555585849f <exec_byte_code+9298>, 0x55555585850c <exec_byte_code+9407>, 0x555555858579 <exec_byte_code+9516>, 0x5555558585e6 <exec_byte_code+9625>, 0x555555858653 <exec_byte_code+9734>, 0x5555558586c0 <exec_byte_code+9843>, 0x55555585870f <exec_byte_code+9922>, 0x555555858809 <exec_byte_code+10172>, 0x555555858858 <exec_byte_code+10251>, 0x5555558588a7 <exec_byte_code+10330>, 0x5555558588f6 <exec_byte_code+10409>, 0x5555558589fc <exec_byte_code+10671>, 0x55555585736c <exec_byte_code+4895>, 0x555555858a57 <exec_byte_code+10762>, 0x555555858a9f <exec_byte_code+10834>, 0x555555858b61 <exec_byte_code+11028>, 0x555555858bca <exec_byte_code+11133>, 0x555555858c25 <exec_byte_code+11224>, 0x555555858c6d <exec_byte_code+11296>, 0x555555858cb0 <exec_byte_code+11363>, 0x555555858cf3 <exec_byte_code+11430>, 0x555555858d3e <exec_byte_code+11505>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555858d96 <exec_byte_code+11593>, 0x555555858dd9 <exec_byte_code+11660>, 0x555555858e1c <exec_byte_code+11727>, 0x555555858e5f <exec_byte_code+11794>, 0x555555858ea2 <exec_byte_code+11861>, 0x555555858ee5 <exec_byte_code+11928>, 0x55555585736c <exec_byte_code+4895>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555858f2d <exec_byte_code+12000>, 0x555555858f7f <exec_byte_code+12082>, 0x555555858fc7 <exec_byte_code+12154>, 0x55555585900f <exec_byte_code+12226>, 0x555555859077 <exec_byte_code+12330>, 0x5555558590df <exec_byte_code+12434>, 0x555555859127 <exec_byte_code+12506>, 0x5555558591e4 <exec_byte_code+12695>, 0x55555585924c <exec_byte_code+12799>, 0x5555558592b4 <exec_byte_code+12903>, 0x55555585931c <exec_byte_code+13007>, 0x55555585935f <exec_byte_code+13074>, 0x555555859bc0 <exec_byte_code+15219>, 0x5555558572b2 <exec_byte_code+4709>, 0x555555856e5c <exec_byte_code+3599>, 0x555555856715 <exec_byte_code+1736>, 0x555555856f0d <exec_byte_code+3776>, 0x555555856f91 <exec_byte_code+3908>, 0x555555857012 <exec_byte_code+4037>, 0x555555857266 <exec_byte_code+4633>, 0x55555585727b <exec_byte_code+4654>, 0x555555856baa <exec_byte_code+2909>, 0x555555857335 <exec_byte_code+4840>, 0x5555558573a3 <exec_byte_code+4950>, 0x555555857434 <exec_byte_code+5095>, 0x55555585747d <exec_byte_code+5168>, 0x55555585765e <exec_byte_code+5649>, 0x5555558576db <exec_byte_code+5774>, 0x555555857760 <exec_byte_code+5907>, 0x5555558577c6 <exec_byte_code+6009>, 0x555555856e0e <exec_byte_code+3521>, 0x5555558593a7 <exec_byte_code+13146>, 0x55555585942c <exec_byte_code+13279>, 0x555555859474 <exec_byte_code+13351>, 0x5555558594bc <exec_byte_code+13423>, 0x555555859504 <exec_byte_code+13495>, 0x55555585954c <exec_byte_code+13567>, 0x5555558595b4 <exec_byte_code+13671>, 0x55555585961c <exec_byte_code+13775>, 0x555555859684 <exec_byte_code+13879>, 0x5555558596ec <exec_byte_code+13983>, 0x555555859835 <exec_byte_code+14312>, 0x55555585989d <exec_byte_code+14416>, 0x555555859905 <exec_byte_code+14520>, 0x55555585994d <exec_byte_code+14592>, 0x5555558599b5 <exec_byte_code+14696>, 0x555555859a1d <exec_byte_code+14800>, 0x555555859a65 <exec_byte_code+14872>, 0x555555859aad <exec_byte_code+14944>, 0x555555858945 <exec_byte_code+10488>, 0x555555858994 <exec_byte_code+10567>, 0x555555859afc <exec_byte_code+15023>, 0x555555859b5e <exec_byte_code+15121>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555857093 <exec_byte_code+4166>, 0x5555558570b0 <exec_byte_code+4195>, 0x55555585711f <exec_byte_code+4306>, 0x55555585718e <exec_byte_code+4417>, 0x5555558571fa <exec_byte_code+4525>, 0x555555857d4e <exec_byte_code+7425>, 0x555555858235 <exec_byte_code+8680>, 0x555555858ae9 <exec_byte_code+10908>, 0x555555859d57 <exec_byte_code+15626>, 0x555555859dcc <exec_byte_code+15743>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859e62 <exec_byte_code+15893>, 0x555555859ee9 <exec_byte_code+16028>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x555555859bc0 <exec_byte_code+15219>, 0x55555585a037 <exec_byte_code+16362> <repeats 64 times>}
        const_length = 4
        bytestr_length = 10
        vectorp = 0x7ffff2c1d120
        quitcounter = 1 '\001'
        stack_items = 6
        sa_avail = 16326
        sa_count = 4
        alloc = 0x7fffffffd7d0
        stack_base = 0x7fffffffd7d0
        top = 0x7fffffffd7e0
        stack_lim = 0x7fffffffd800
        bytestr_data = 0x7fffffffd800 "\300\302\002\"\300\301\003\"\210\207"
        pc = 0x7fffffffd804 "\300\301\003\"\210\207"
        count = 4
        result = make_fixnum(23456248746154)
#36 0x00005555557fde53 in fetch_and_exec_byte_code (fun=XIL(0x7ffff2c1d0ed), syms_left=make_fixnum(128), nargs=3, args=0x7fffffffdcc8) at ../../master/src/eval.c:3036
#37 0x00005555557fe2d9 in funcall_lambda (fun=XIL(0x7ffff2c1d0ed), nargs=3, arg_vector=0x7fffffffdcc8) at ../../master/src/eval.c:3117
        val = XIL(0x7fffffffdc30)
        syms_left = make_fixnum(128)
        next = make_fixnum(2)
        lexenv = XIL(0x1800000003)
        count = 4
        i = 93824994985955
        optional = false
        rest = false
#38 0x00005555557fd6ac in Ffuncall (nargs=4, args=0x7fffffffdcc0) at ../../master/src/eval.c:2916
        fun = XIL(0x7ffff2c1d0ed)
        original_fun = XIL(0x7ffff2c1d0ed)
        funcar = XIL(0x7fffffffdc70)
        numargs = 3
        val = XIL(0x7fffffffdc90)
        count = 3
#39 0x00005555557fcf00 in call3 (fn=XIL(0x7ffff2c1d0ed), arg1=XIL(0x55555863cb33), arg2=XIL(0x7ffff25734c4), arg3=XIL(0)) at ../../master/src/eval.c:2788
#40 0x000055555572083e in cmd_error_internal (data=XIL(0x55555863cb33), context=0x7fffffffdd70 "") at ../../master/src/keyboard.c:987
#41 0x000055555572070c in cmd_error (data=XIL(0x55555863cb33)) at ../../master/src/keyboard.c:956
        old_level = XIL(0)
        old_length = XIL(0)
        macroerror = "\000\000\000\000\000\000\000\000\360\350\365UUU\000\000\260\335\377\377\001", '\000' <repeats 11 times>, "\060\256_\001\000\000\000\000m\230\177UUU\000\000Ph"
#42 0x00005555557f941c in internal_condition_case (bfun=0x555555720f96 <command_loop_1>, handlers=XIL(0x90), hfun=0x5555557205b9 <cmd_error>) at ../../master/src/eval.c:1435
        val = XIL(0x55555863cb33)
        c = 0x555555f5e8f0
#43 0x0000555555720b86 in command_loop_2 (ignore=XIL(0)) at ../../master/src/keyboard.c:1094
        val = XIL(0)
#44 0x00005555557f8834 in internal_catch (tag=XIL(0xd9e0), func=0x555555720b59 <command_loop_2>, arg=XIL(0)) at ../../master/src/eval.c:1189
        val = XIL(0xd9e0)
        c = 0x555555f47770
#45 0x0000555555720b25 in command_loop () at ../../master/src/keyboard.c:1073
#46 0x00005555557200a2 in recursive_edit_1 () at ../../master/src/keyboard.c:720
        count = 1
        val = XIL(0x7fffffffdf00)
#47 0x0000555555720299 in Frecursive_edit () at ../../master/src/keyboard.c:789
        count = 0
        buffer = XIL(0)
#48 0x000055555571c17e in main (argc=2, argv=0x7fffffffe168) at ../../master/src/emacs.c:2050
        stack_bottom_variable = 0x7ffff617e053
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false

Lisp Backtrace:
"window-list-1" (0xffffbfa0)
"replace-buffer-in-windows" (0xffffc4a8)
"kill-buffer" (0xffffc710)
0x571d80f8 PVEC_COMPILED
"substitute-command-keys" (0xffffd3d8)
"command-error-default-function" (0xffffd628)
"apply" (0xffffd7e8)
0xf2c1d0e8 PVEC_COMPILED

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 15:58                                                                                                                                                       ` Eli Zaretskii
@ 2021-04-08 16:05                                                                                                                                                         ` Michael Welsh Duggan
  2021-04-08 16:28                                                                                                                                                           ` Eli Zaretskii
  2021-04-08 17:11                                                                                                                                                         ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 16:05 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@md5i.com>
>> Date: Thu, 08 Apr 2021 11:21:10 -0400
>> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> 
>> Okay, close, but not quite.  What seems to be happening is this:
>> list_windows() is called while Vwindow_list is nil, and the if branch is
>> taken.  Something causes list_windows() to exit without reaching the end
>> of the if block.  This leaves Vwindow_list partially created.  The next
>> time list_windows() is called it returns the partially created list.
>> 
>> To determine this I put a breakpoint at the beginning of the if block
>> that sets a gdb convenience variable called $in_list_windows to one and
>> continues.  I put a breakpoint at the end of that block that sets it to
>> zero and continues.  I put a third condition breakpoint at the entrance
>> to list_windows() that only triggers if $in_list_windows is one.  This
>> triggered with the included backtrace.
>
> I guess you mean window_list instead of list_windows?

Yes, sorry.

>> Once again, the state triggered when, due to the VPN state changing, a
>> background gnus demon hung trying to fetch mail.  The trigger was me
>> hitting C-g twice rapidly in succession to regain interactivity.
>> 
>> Can anyone recommend a means to check if this my theory is true?  Does
>> list_windows() need to be protected against quit?
>
> Set a breakpoint in 'quit' and disable it.  Set another breakpoint at
> entry to 'window_list' that enables the breakpoint in 'quit', then
> another breakpoint at exit which disables the breakpoint in 'quit'.
> Then wait for the breakpoint in 'quit' to break during your recipe.
>
> Perhaps also do the same with a breakpoint in Fthrow.

Good idea!  I'm going to try that.

>
>> #26 0x000055555583108e in print_error_message
>> (data=XIL(0x55555732d343), stream=XIL(0x30), context=0x7ffff2c64148
>> "", caller=XIL(0)) at ../../master/src/print.c:944
>>         error_conditions = XIL(0x7ffff2c2da13)
>>         errname = XIL(0xb820)
>>         errmsg = make_fixnum(23456248526235)
>>         file_error = XIL(0x7fffffffd4c0)
>>         tail = XIL(0x30)
>
> What error message does this attempt to print?

(gdb) p errname
$8 = XIL(0xb820)
(gdb) xtype
Lisp_Symbol
(gdb) xpr
Lisp_Symbol
$9 = (struct Lisp_Symbol *) 0x555555e6e8a0 <lispsym+47136>
"quit"
(gdb) p errmsg
$10 = XIL(0x55555571d654)
(gdb) xpr
Lisp_String
$11 = (struct Lisp_String *) 0x55555571d650 <builtin_lisp_symbol+44>
0
(gdb) p error_conditions
$14 = XIL(0x7ffff2c2da33)
(gdb) xpr
Lisp_Cons
$15 = (struct Lisp_Cons *) 0x7ffff2c2da30
{
  u = {
    s = {
      car = XIL(0xb820),
      u = {
        cdr = XIL(0),
        chain = 0x0
      }
    },
    gcaligned = 0x20
  }
}
(gdb) xlist
$16 = 0xb820
Lisp_Symbol
$17 = (struct Lisp_Symbol *) 0x555555e6e8a0 <lispsym+47136>
"quit"
---
nil


-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 16:01                                                                                                                                                         ` Michael Welsh Duggan
@ 2021-04-08 16:14                                                                                                                                                           ` martin rudalics
  2021-04-08 16:35                                                                                                                                                           ` Eli Zaretskii
  1 sibling, 0 replies; 160+ messages in thread
From: martin rudalics @ 2021-04-08 16:14 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

 > Before that, I include the backtrace with your latest patch.  And here's
 > the interesting bit:
 >
 > (gdb) p Vwindow_list
 > $2 = XIL(0x55555863cae3)
[...]
 > (gdb) p Vwindow_list_2
 > $7 = XIL(0)

The last one should be the clue, indeed.  If it were the expected six
windows list we couldn't say much, but nil means it got reset somewhere
and never resurrected by window_list.

 > Right before this I hit a breakpoint that that I had set up that, once
 > again, implied that in this call of window_list() happened subsequent to
 > a call to window_list() that didn't complete, somehow.
 >
 > Before running with block_input(), unblock_input(), I'm going to modify
 > the sources to set a physical variable to one on entrance to the if
 > block and set it back to zero at the exit.  At least then I can be sure
 > that an unintended termination of this function is really happening and
 > that it is not a debugger artifact.

Good.  Otherwise we're back at zero.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 12:59                                                                                                                                                             ` Eli Zaretskii
@ 2021-04-08 16:20                                                                                                                                                               ` Gregory Heytings
  0 siblings, 0 replies; 160+ messages in thread
From: Gregory Heytings @ 2021-04-08 16:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd, schwab, 47244, mwd


>>>>> Bisection requires to know the last commit where the bug didn't 
>>>>> exist.
>>>>
>>>> Not the *last* commit, that what bisection is for to find out.  It 
>>>> just requires *any* commit where the bug didn't exist.
>>>
>>> Right, but that's unknown as well here.
>>
>> Usually the first step in bisecting is to find some distant commit 
>> where the bug did not exist.
>
> Sure, but given the time it takes to reproduce the problem, that could 
> take much longer than what Martin is doing now.  And if you go far 
> enough into the past, Emacs will stop building successfully, so you are 
> stuck there.
>

IIUC the problems happens once a day or so.  I'd try to see if it still 
happens with HEAD~2500, HEAD~5000, HEAD~7500, HEAD~10000.  All of them 
build successfully, and doing this doesn't cost anything.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 16:05                                                                                                                                                         ` Michael Welsh Duggan
@ 2021-04-08 16:28                                                                                                                                                           ` Eli Zaretskii
  2021-04-08 16:37                                                                                                                                                             ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-08 16:28 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>         "schwab@linux-m68k.org"
>  <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Thu, 08 Apr 2021 12:05:57 -0400
> 
> >> #26 0x000055555583108e in print_error_message
> >> (data=XIL(0x55555732d343), stream=XIL(0x30), context=0x7ffff2c64148
> >> "", caller=XIL(0)) at ../../master/src/print.c:944
> >>         error_conditions = XIL(0x7ffff2c2da13)
> >>         errname = XIL(0xb820)
> >>         errmsg = make_fixnum(23456248526235)
> >>         file_error = XIL(0x7fffffffd4c0)
> >>         tail = XIL(0x30)
> >
> > What error message does this attempt to print?
> 
> (gdb) p errname
> $8 = XIL(0xb820)
> (gdb) xtype
> Lisp_Symbol
> (gdb) xpr
> Lisp_Symbol
> $9 = (struct Lisp_Symbol *) 0x555555e6e8a0 <lispsym+47136>
> "quit"
> (gdb) p errmsg
> $10 = XIL(0x55555571d654)
> (gdb) xpr
> Lisp_String
> $11 = (struct Lisp_String *) 0x55555571d650 <builtin_lisp_symbol+44>
> 0
> (gdb) p error_conditions
> $14 = XIL(0x7ffff2c2da33)
> (gdb) xpr
> Lisp_Cons
> $15 = (struct Lisp_Cons *) 0x7ffff2c2da30
> {
>   u = {
>     s = {
>       car = XIL(0xb820),
>       u = {
>         cdr = XIL(0),
>         chain = 0x0
>       }
>     },
>     gcaligned = 0x20
>   }
> }
> (gdb) xlist
> $16 = 0xb820
> Lisp_Symbol
> $17 = (struct Lisp_Symbol *) 0x555555e6e8a0 <lispsym+47136>
> "quit"
> ---
> nil

So is this the result of your typing C-g?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 16:01                                                                                                                                                         ` Michael Welsh Duggan
  2021-04-08 16:14                                                                                                                                                           ` martin rudalics
@ 2021-04-08 16:35                                                                                                                                                           ` Eli Zaretskii
  2021-04-08 16:42                                                                                                                                                             ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-08 16:35 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Date: Thu, 08 Apr 2021 12:01:23 -0400
> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> 
> Lisp Backtrace:
> "window-list-1" (0xffffbfa0)
> "replace-buffer-in-windows" (0xffffc4a8)
> "kill-buffer" (0xffffc710)
> 0x571d80f8 PVEC_COMPILED
> "substitute-command-keys" (0xffffd3d8)
> "command-error-default-function" (0xffffd628)
> "apply" (0xffffd7e8)
> 0xf2c1d0e8 PVEC_COMPILED

This seems to indicate that kill-buffer is called by
substitute-command-keys, in which case the buffer in question is a
temporary buffer.  Can you verify that by looking at the buffer's name
in frame #13:

> #13 0x0000555555758e6d in Fkill_buffer (buffer_or_name=XIL(0x5555571d7ced)) at ../../master/src/buffer.c:1830
>         buffer = XIL(0x5555571d7ced)
>         b = 0x5555571d7ce8
>         tem = XIL(0x555555753673)
>         m = 0x7fffffffc5f0

And if I'm right, it sounds like we are looking at a different
scenario here?  The previous calls to kill-buffer were from Gnus,
right?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 16:28                                                                                                                                                           ` Eli Zaretskii
@ 2021-04-08 16:37                                                                                                                                                             ` Michael Welsh Duggan
  2021-04-08 16:49                                                                                                                                                               ` Eli Zaretskii
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 16:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>>         "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Thu, 08 Apr 2021 12:05:57 -0400
>> 
>> >> #26 0x000055555583108e in print_error_message
>> >> (data=XIL(0x55555732d343), stream=XIL(0x30), context=0x7ffff2c64148
>> >> "", caller=XIL(0)) at ../../master/src/print.c:944
>> >>         error_conditions = XIL(0x7ffff2c2da13)
>> >>         errname = XIL(0xb820)
>> >>         errmsg = make_fixnum(23456248526235)
>> >>         file_error = XIL(0x7fffffffd4c0)
>> >>         tail = XIL(0x30)
>> >
>> > What error message does this attempt to print?
>> 
>> (gdb) p errname
>> $8 = XIL(0xb820)
>> (gdb) xtype
>> Lisp_Symbol
>> (gdb) xpr
>> Lisp_Symbol
>> $9 = (struct Lisp_Symbol *) 0x555555e6e8a0 <lispsym+47136>
>> "quit"
>> (gdb) p errmsg
>> $10 = XIL(0x55555571d654)
>> (gdb) xpr
>> Lisp_String
>> $11 = (struct Lisp_String *) 0x55555571d650 <builtin_lisp_symbol+44>
>> 0
>> (gdb) p error_conditions
>> $14 = XIL(0x7ffff2c2da33)
>> (gdb) xpr
>> Lisp_Cons
>> $15 = (struct Lisp_Cons *) 0x7ffff2c2da30
>> {
>>   u = {
>>     s = {
>>       car = XIL(0xb820),
>>       u = {
>>         cdr = XIL(0),
>>         chain = 0x0
>>       }
>>     },
>>     gcaligned = 0x20
>>   }
>> }
>> (gdb) xlist
>> $16 = 0xb820
>> Lisp_Symbol
>> $17 = (struct Lisp_Symbol *) 0x555555e6e8a0 <lispsym+47136>
>> "quit"
>> ---
>> nil
>
> So is this the result of your typing C-g?

Yes.  In the scenario I have presented, this is where Emacs is
unresponsive (busy cursor), presumably trying to interact with a network
connection that has gone away to the VPN being switched on or off, and I
type C-g twice rapidly in succession to regain interactivity, after
which I would normally then attempt to manually reset the gnus
connections.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 16:35                                                                                                                                                           ` Eli Zaretskii
@ 2021-04-08 16:42                                                                                                                                                             ` Michael Welsh Duggan
  0 siblings, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 16:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Date: Thu, 08 Apr 2021 12:01:23 -0400
>> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>>  "schwab@linux-m68k.org" <schwab@linux-m68k.org>,
>>  "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> 
>> Lisp Backtrace:
>> "window-list-1" (0xffffbfa0)
>> "replace-buffer-in-windows" (0xffffc4a8)
>> "kill-buffer" (0xffffc710)
>> 0x571d80f8 PVEC_COMPILED
>> "substitute-command-keys" (0xffffd3d8)
>> "command-error-default-function" (0xffffd628)
>> "apply" (0xffffd7e8)
>> 0xf2c1d0e8 PVEC_COMPILED
>
> This seems to indicate that kill-buffer is called by
> substitute-command-keys, in which case the buffer in question is a
> temporary buffer.  Can you verify that by looking at the buffer's name
> in frame #13:
>
>> #13 0x0000555555758e6d in Fkill_buffer
>> (buffer_or_name=XIL(0x5555571d7ced)) at
>> ../../master/src/buffer.c:1830
>>         buffer = XIL(0x5555571d7ced)
>>         b = 0x5555571d7ce8
>>         tem = XIL(0x555555753673)
>>         m = 0x7fffffffc5f0

I'm afraid I cancelled that gdb session in favor of a new one recently,
sorry.  I'll report on that at the next trigger.

> And if I'm right, it sounds like we are looking at a different
> scenario here?  The previous calls to kill-buffer were from Gnus,
> right?

The scenario is the same, but recent changes my Martin have moved the
failure closer to the trigger condition.  Before I typed C-g C-g,
switched to the server buffer, changed some connections, and then things
died when the server buffer was killed.  We have managed to determine
that this is due to Vwindow_list being inconsistent with reality, and
Martin's changes have caused us to fail closer to the actual cause of
failure.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 16:37                                                                                                                                                             ` Michael Welsh Duggan
@ 2021-04-08 16:49                                                                                                                                                               ` Eli Zaretskii
  2021-04-08 17:15                                                                                                                                                                 ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-08 16:49 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>         "schwab@linux-m68k.org"
>  <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Thu, 08 Apr 2021 12:37:41 -0400
> 
> >> (gdb) xlist
> >> $16 = 0xb820
> >> Lisp_Symbol
> >> $17 = (struct Lisp_Symbol *) 0x555555e6e8a0 <lispsym+47136>
> >> "quit"
> >> ---
> >> nil
> >
> > So is this the result of your typing C-g?
> 
> Yes.  In the scenario I have presented, this is where Emacs is
> unresponsive (busy cursor), presumably trying to interact with a network
> connection that has gone away to the VPN being switched on or off, and I
> type C-g twice rapidly in succession to regain interactivity, after
> which I would normally then attempt to manually reset the gnus
> connections.

But then the buffer being killed is not the one you reported
originally, is it?  You said the buffer that was killed was *Server*,
and here we see that a temporary buffer is being killed.  Am I
confused?





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 15:58                                                                                                                                                       ` Eli Zaretskii
  2021-04-08 16:05                                                                                                                                                         ` Michael Welsh Duggan
@ 2021-04-08 17:11                                                                                                                                                         ` Michael Welsh Duggan
  2021-04-08 17:46                                                                                                                                                           ` Eli Zaretskii
  2021-04-08 18:52                                                                                                                                                           ` martin rudalics
  1 sibling, 2 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 17:11 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> Lisp Backtrace:
>> "window-list-1" (0xffffbfa0)
>> "replace-buffer-in-windows" (0xffffc4a8)
>> "kill-buffer" (0xffffc710)
>> 0x571d80f8 PVEC_COMPILED
>> "substitute-command-keys" (0xffffd3d8)
>> "command-error-default-function" (0xffffd628)
>> "apply" (0xffffd7e8)
>> 0xf2c1d0e8 PVEC_COMPILED
>
> This seems to indicate that kill-buffer is called by
> substitute-command-keys, in which case the buffer in question is a
> temporary buffer.  Can you verify that by looking at the buffer's name
> in frame #13:
>
>> #13 0x0000555555758e6d in Fkill_buffer
>> (buffer_or_name=XIL(0x5555571d7ced)) at
>> ../../master/src/buffer.c:1830
>>         buffer = XIL(0x5555571d7ced)
>>         b = 0x5555571d7ce8
>>         tem = XIL(0x555555753673)
>>         m = 0x7fffffffc5f0

As expected, it is " *temp*".  This time I've kept the session around.

>> Once again, the state triggered when, due to the VPN state changing, a
>> background gnus demon hung trying to fetch mail.  The trigger was me
>> hitting C-g twice rapidly in succession to regain interactivity.
>> 
>> Can anyone recommend a means to check if this my theory is true?  Does
>> list_windows() need to be protected against quit?
>
> Set a breakpoint in 'quit' and disable it.  Set another breakpoint at
> entry to 'window_list' that enables the breakpoint in 'quit', then
> another breakpoint at exit which disables the breakpoint in 'quit'.
> Then wait for the breakpoint in 'quit' to break during your recipe.
>
> Perhaps also do the same with a breakpoint in Fthrow.

I hit the breakpoint in quit.  It looks like Fnconc uses FOR_EACH_TAIL,
which uses FOR_EACH_TAIL_INTENAL, which calls maybe_quit.  The question
in my mind now is whether block/unblock_input belongs in window_list or
in Fnconc.

Thread 4.1 "emacs" hit Breakpoint 8, quit () at ../../master/src/eval.c:1660
1660      return signal_or_quit (Qquit, Qnil, true);
(gdb) bt
#0  quit () at ../../master/src/eval.c:1660
#1  0x00005555557f9a27 in process_quit_flag () at ../../master/src/eval.c:1607
#2  0x00005555557f9a6a in maybe_quit () at ../../master/src/eval.c:1627
#3  0x000055555580eb65 in Fnconc (nargs=2, args=0x7fffffffb910)
    at ../../master/src/fns.c:2783
#4  0x000055555580ea3b in nconc2
    (s1=XIL(0x5555573e73a3), s2=XIL(0x5555573e73c3))
    at ../../master/src/fns.c:2759
#5  0x000055555564b2db in window_list () at ../../master/src/window.c:2578
#6  0x00005555555eb138 in prepare_menu_bars ()
    at ../../master/src/xdisp.c:12717
#7  0x00005555555f2a3c in redisplay_internal ()
    at ../../master/src/xdisp.c:15668
#8  0x00005555555f48f2 in redisplay_preserve_echo_area (from_where=8)
    at ../../master/src/xdisp.c:16385
#9  0x00005555557393fa in detect_input_pending_run_timers (do_display=true)
    at ../../master/src/keyboard.c:10308
#10 0x0000555555869789 in wait_reading_process_output
    (time_limit=0, nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0), wait_proc=0x0, just_wait_proc=0) at ../../master/src/process.c:5657
#11 0x0000555555728ed2 in kbd_buffer_get_event
    (kbp=0x7fffffffd428, used_mouse_menu=0x7fffffffda6f, end_time=0x0)
    at ../../master/src/keyboard.c:3869
#12 0x0000555555723ba7 in read_event_from_main_queue
    (end_time=0x0, local_getcjmp=0x7fffffffd800, used_mouse_menu=0x7fffffffda6f) at ../../master/src/keyboard.c:2159
#13 0x0000555555723f25 in read_decoded_event_from_main_queue
    (end_time=0x0, local_getcjmp=0x7fffffffd800, prev_event=XIL(0), used_mouse_menu=0x7fffffffda6f) at ../../master/src/keyboard.c:2223
#14 0x0000555555725ee8 in read_char
    (commandflag=1, map=XIL(0x55555730fcb3), prev_event=XIL(0), used_mouse_menu=0x7fffffffda6f, end_time=0x0) at ../../master/src/keyboard.c:2833
#15 0x00005555557375dc in read_key_sequence
    (keybuf=0x7fffffffdc70, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false)
    at ../../master/src/keyboard.c:9491
#16 0x0000555555721412 in command_loop_1 () at ../../master/src/keyboard.c:1353
#17 0x00005555557f9424 in internal_condition_case
    (bfun=0x555555720f96 <command_loop_1>, handlers=XIL(0x90), hfun=0x5555557205b9 <cmd_error>) at ../../master/src/eval.c:1439
#18 0x0000555555720b86 in command_loop_2 (ignore=XIL(0))
    at ../../master/src/keyboard.c:1094
#19 0x00005555557f8834 in internal_catch
    (tag=XIL(0xd9e0), func=0x555555720b59 <command_loop_2>, arg=XIL(0))
    at ../../master/src/eval.c:1189
#20 0x0000555555720b25 in command_loop () at ../../master/src/keyboard.c:1073
#21 0x00005555557200a2 in recursive_edit_1 ()
    at ../../master/src/keyboard.c:720
#22 0x0000555555720299 in Frecursive_edit () at ../../master/src/keyboard.c:789
#23 0x000055555571c17e in main (argc=2, argv=0x7fffffffe168)
    at ../../master/src/emacs.c:2050

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)


-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 16:49                                                                                                                                                               ` Eli Zaretskii
@ 2021-04-08 17:15                                                                                                                                                                 ` Michael Welsh Duggan
  0 siblings, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 17:15 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: "mwd@md5i.com" <mwd@md5i.com>,
>>         "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Thu, 08 Apr 2021 12:37:41 -0400
>> 
>> >> (gdb) xlist
>> >> $16 = 0xb820
>> >> Lisp_Symbol
>> >> $17 = (struct Lisp_Symbol *) 0x555555e6e8a0 <lispsym+47136>
>> >> "quit"
>> >> ---
>> >> nil
>> >
>> > So is this the result of your typing C-g?
>> 
>> Yes.  In the scenario I have presented, this is where Emacs is
>> unresponsive (busy cursor), presumably trying to interact with a network
>> connection that has gone away to the VPN being switched on or off, and I
>> type C-g twice rapidly in succession to regain interactivity, after
>> which I would normally then attempt to manually reset the gnus
>> connections.
>
> But then the buffer being killed is not the one you reported
> originally, is it?  You said the buffer that was killed was *Server*,
> and here we see that a temporary buffer is being killed.  Am I
> confused?

You're not confused, but the situation is confusing.  There are two
kill-buffer calls that are happening.  The Vwindow_list was getting
corrupted during the first, but that corruption did not cause a
segfault, likely to that buffer (temp buffer) not being in a window.
That corruption caused a segfault in the second.  Martin's changes have
caused an assertion to happen in the first instead.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 17:11                                                                                                                                                         ` Michael Welsh Duggan
@ 2021-04-08 17:46                                                                                                                                                           ` Eli Zaretskii
  2021-04-08 17:51                                                                                                                                                             ` Michael Welsh Duggan
  2021-04-08 18:52                                                                                                                                                           ` martin rudalics
  1 sibling, 1 reply; 160+ messages in thread
From: Eli Zaretskii @ 2021-04-08 17:46 UTC (permalink / raw)
  To: Michael Welsh Duggan; +Cc: mwd, schwab, 47244

> From: Michael Welsh Duggan <mwd@cert.org>
> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>         "schwab@linux-m68k.org"
>  <schwab@linux-m68k.org>,
>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
> Date: Thu, 08 Apr 2021 13:11:34 -0400
> 
> I hit the breakpoint in quit.  It looks like Fnconc uses FOR_EACH_TAIL,
> which uses FOR_EACH_TAIL_INTENAL, which calls maybe_quit.  The question
> in my mind now is whether block/unblock_input belongs in window_list or
> in Fnconc.

IMO, the right solution is not block_input but unwind_protect.





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 17:46                                                                                                                                                           ` Eli Zaretskii
@ 2021-04-08 17:51                                                                                                                                                             ` Michael Welsh Duggan
  0 siblings, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-08 17:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: mwd@md5i.com, schwab@linux-m68k.org, 47244@debbugs.gnu.org

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Michael Welsh Duggan <mwd@cert.org>
>> Cc: Michael Welsh Duggan <mwd@md5i.com>,
>>         "schwab@linux-m68k.org"
>>  <schwab@linux-m68k.org>,
>>         "47244@debbugs.gnu.org" <47244@debbugs.gnu.org>
>> Date: Thu, 08 Apr 2021 13:11:34 -0400
>> 
>> I hit the breakpoint in quit.  It looks like Fnconc uses FOR_EACH_TAIL,
>> which uses FOR_EACH_TAIL_INTENAL, which calls maybe_quit.  The question
>> in my mind now is whether block/unblock_input belongs in window_list or
>> in Fnconc.
>
> IMO, the right solution is not block_input but unwind_protect.

Mayhap.  I look forward to a patch to try out.  (I'm not certain how it
should be used, myself.)

FWIW, it might be worth looking through all uses of FOR_EACH_TAIL to
find places that it is used in loops that do destructive updates, like
Fdelete, as it seems icky for C-g to leave one of these operations
partially completed.

-- 
Michael Welsh Duggan
(mwd@cert.org)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 17:11                                                                                                                                                         ` Michael Welsh Duggan
  2021-04-08 17:46                                                                                                                                                           ` Eli Zaretskii
@ 2021-04-08 18:52                                                                                                                                                           ` martin rudalics
  2021-04-09 20:59                                                                                                                                                             ` Michael Welsh Duggan
  1 sibling, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-08 18:52 UTC (permalink / raw)
  To: Michael Welsh Duggan, Eli Zaretskii
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 428 bytes --]

 > I hit the breakpoint in quit.  It looks like Fnconc uses FOR_EACH_TAIL,
 > which uses FOR_EACH_TAIL_INTENAL, which calls maybe_quit.

Not just around the corner but near.  Well done.

 > The question
 > in my mind now is whether block/unblock_input belongs in window_list or
 > in Fnconc.

In window_list and we then should bind inhibit_quit IIUC.  Fnconc must be
able to deal with circular lists.  I attach a patch.

martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 11741 bytes --]

diff --git a/src/buffer.c b/src/buffer.c
index 8e33162989..70b37e61a2 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1951,6 +1951,9 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
      This gets rid of them for certain.  */
   reset_buffer_local_variables (b, 1);
 
+  if (!b->base_buffer)
+    eassert (b->window_count == 0);
+
   bset_name (b, Qnil);
 
   block_input ();
@@ -1991,6 +1994,8 @@ DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 0, 1, "bKill buffer: ",
 
   run_buffer_list_update_hook (b);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qt;
 }
 \f
@@ -2151,6 +2156,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.  */
diff --git a/src/nsfns.m b/src/nsfns.m
index 5c4cc915e7..82136b0639 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -1447,7 +1447,7 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side.
 
   /* Make sure windows on this frame appear in calls to next-window
      and similar functions.  */
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 
   return unbind_to (count, frame);
 }
diff --git a/src/w32fns.c b/src/w32fns.c
index 9db367bfaf..f2d5e34c3e 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -6148,7 +6148,7 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
 
   /* Make sure windows on this frame appear in calls to next-window
      and similar functions.  */
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 
   return unbind_to (count, frame);
 }
diff --git a/src/window.c b/src/window.c
index eb16e2a433..c858ddb4ff 100644
--- a/src/window.c
+++ b/src/window.c
@@ -86,6 +86,7 @@
    Functions creating or deleting windows should invalidate this cache
    by setting it to nil.  */
 Lisp_Object Vwindow_list;
+Lisp_Object Vwindow_list_2;
 
 /* True mean window_change_record has to record all live frames.  */
 static bool window_change_record_frames;
@@ -307,7 +308,11 @@ wset_buffer (struct window *w, Lisp_Object val)
   if (BUFFERP (val))
     /* Make sure that we do not assign the buffer
        to an internal window.  */
-    eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    {
+      eassert (BUFFER_LIVE_P (XBUFFER (val)));
+      eassert (MARKERP (w->start) && MARKERP (w->pointm));
+    }
+
   w->contents = val;
   adjust_window_count (w, 1);
 }
@@ -315,6 +320,7 @@ wset_buffer (struct window *w, Lisp_Object val)
 static void
 wset_old_buffer (struct window *w, Lisp_Object val)
 {
+  eassert (BUFFER_LIVE_P (XBUFFER (val)));
   w->old_buffer = val;
 }
 
@@ -594,6 +600,8 @@ select_window_1 (Lisp_Object window, bool inhibit_point_swap)
 
   selected_window = window;
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   /* Go to the point recorded in the window.
      This is important when the buffer is in more
      than one window.  It also matters when
@@ -2556,8 +2564,10 @@ window_list (void)
   if (!CONSP (Vwindow_list))
     {
       Lisp_Object tail, frame;
+      ptrdiff_t count = SPECPDL_INDEX ();
 
       Vwindow_list = Qnil;
+      specbind (Qinhibit_quit, Qt);
       FOR_EACH_FRAME (tail, frame)
 	{
 	  Lisp_Object arglist = Qnil;
@@ -2569,7 +2579,12 @@ window_list (void)
 	  arglist = Fnreverse (arglist);
 	  Vwindow_list = nconc2 (Vwindow_list, arglist);
 	}
+
+      Vwindow_list_2 = Fcopy_sequence (Vwindow_list);
+      unbind_to (count, Qnil);
     }
+  else
+    eassert (!NILP (Fequal (Vwindow_list, Vwindow_list_2)));
 
   return Vwindow_list;
 }
@@ -2950,6 +2965,8 @@ DEFUN ("window-list-1", Fwindow_list_1, Swindow_list_1, 0, 3, 0,
   CHECK_ALL_WINDOWS                 /* Arg is ignored */
 };
 
+static int replace_buffer_in_windows_safely_count;
+
 static Lisp_Object
 window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 	     Lisp_Object frames)
@@ -3048,6 +3065,8 @@ window_loop (enum window_loop type, Lisp_Object obj, bool mini,
 		if (EQ (window, selected_window)
 		    && XBUFFER (w->contents) == current_buffer)
 		  Fset_buffer (w->contents);
+
+		replace_buffer_in_windows_safely_count += 1;
 	      }
 	    break;
 
@@ -3277,7 +3296,7 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
   free_window_matrices (r);
 
   fset_redisplay (f);
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 
   if (!WINDOW_LEAF_P (w))
     {
@@ -3411,6 +3430,8 @@ DEFUN ("delete-other-windows-internal", Fdelete_other_windows_internal,
 replace_buffer_in_windows (Lisp_Object buffer)
 {
   call1 (Qreplace_buffer_in_windows, buffer);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* If BUFFER is shown in a window, safely replace it with some other
@@ -3419,7 +3440,28 @@ replace_buffer_in_windows (Lisp_Object buffer)
 void
 replace_buffer_in_windows_safely (Lisp_Object buffer)
 {
-  if (buffer_window_count (XBUFFER (buffer)))
+  if (!NILP (Fstring_equal (XBUFFER (buffer)->name_,
+			    build_string ("*Server*"))))
+    {
+      int count = buffer_window_count (XBUFFER (buffer));
+
+      replace_buffer_in_windows_safely_count = 0;
+
+
+      if (buffer_window_count (XBUFFER (buffer)))
+	{
+	  Lisp_Object tail, frame;
+
+	  /* A single call to window_loop won't do the job because it only
+	     considers frames on the current keyboard.  So loop manually over
+	     frames, and handle each one.  */
+	  FOR_EACH_FRAME (tail, frame)
+	    window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
+	}
+
+      eassert (count == replace_buffer_in_windows_safely_count);
+    }
+  else if (buffer_window_count (XBUFFER (buffer)))
     {
       Lisp_Object tail, frame;
 
@@ -3960,6 +4002,8 @@ run_window_change_functions (void)
   /* Record changes for all frames (if asked for), selected window and
      frame.  */
   unbind_to (count, Qnil);
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
@@ -4054,6 +4098,9 @@ set_window_buffer (Lisp_Object window, Lisp_Object buffer,
   if (!samebuf && !MINI_WINDOW_P (w) && !WINDOW_PSEUDO_P (w))
     FRAME_WINDOW_CHANGE (XFRAME (w->frame)) = true;
 
+  if (WINDOWP (selected_window))
+    eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   unbind_to (count, Qnil);
 }
 
@@ -4296,7 +4343,7 @@ make_window (void)
   w->scroll_bar_height = -1;
   w->column_number_displayed = -1;
   /* Reset window_list.  */
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
   /* Return window.  */
   XSETWINDOW (window, w);
   return window;
@@ -5086,7 +5133,7 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
 	}
 
       fset_redisplay (f);
-      Vwindow_list = Qnil;
+      Vwindow_list = Vwindow_list_2 = Qnil;
 
       wset_next (w, Qnil);  /* Don't delete w->next too.  */
       free_window_matrices (w);
@@ -5174,6 +5221,8 @@ DEFUN ("delete-window-internal", Fdelete_window_internal, Sdelete_window_interna
       error ("Deletion failed");
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return Qnil;
 }
 \f
@@ -7233,6 +7282,9 @@ DEFUN ("set-window-configuration", Fset_window_configuration,
   minibuf_selected_window = data->minibuf_selected_window;
 
   SAFE_FREE ();
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return FRAME_LIVE_P (f) ? Qt : Qnil;
 }
 
@@ -7279,7 +7331,7 @@ delete_all_child_windows (Lisp_Object window)
       wset_buffer (w, Qnil);
     }
 
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 }
 \f
 static ptrdiff_t
@@ -8128,8 +8180,9 @@ init_window_once (void)
   selected_window = Qnil;
   staticpro (&selected_window);
 
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
   staticpro (&Vwindow_list);
+  staticpro (&Vwindow_list_2);
 
   minibuf_selected_window = Qnil;
   staticpro (&minibuf_selected_window);
@@ -8148,6 +8201,7 @@ init_window_once (void)
   PDUMPER_RESET_LV (minibuf_window, Qnil);
   PDUMPER_RESET_LV (selected_window, Qnil);
   PDUMPER_RESET_LV (Vwindow_list, Qnil);
+  PDUMPER_RESET_LV (Vwindow_list_2, Qnil);
   PDUMPER_RESET_LV (minibuf_selected_window, Qnil);
 
   /* Hack: if mode_line_in_non_selected_windows is true (which it may
@@ -8178,7 +8232,7 @@ init_window_once (void)
 void
 init_window (void)
 {
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 }
 
 void
diff --git a/src/window.h b/src/window.h
index b6f88e8f55..74d3cbb7be 100644
--- a/src/window.h
+++ b/src/window.h
@@ -1171,6 +1171,7 @@ #define CHECK_LIVE_WINDOW(WINDOW)				\
 
 /* These used to be in lisp.h.  */
 extern Lisp_Object Vwindow_list;
+extern Lisp_Object Vwindow_list_2;
 
 extern Lisp_Object window_list (void);
 extern Lisp_Object window_parameter (struct window *, Lisp_Object parameter);
diff --git a/src/xdisp.c b/src/xdisp.c
index cc0a689ba3..ea64e5037a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12980,6 +12980,8 @@ restore_selected_window (Lisp_Object window)
       /* Abort if we cannot find a live frame.  */
       emacs_abort ();
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Restore WINDOW, if live, as its frame's selected window.  */
@@ -12997,6 +12999,8 @@ restore_frame_selected_window (Lisp_Object window)
       if (EQ (frame, selected_frame))
 	selected_window = window;
     }
+
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 }
 
 /* Update the tab-bar item list for frame F.  This has to be done
@@ -13074,6 +13078,8 @@ update_tab_bar (struct frame *f, bool save_match_data)
 	  XSETFRAME (frame, f);
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
+
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
 #endif
 
 	  /* Build desired tab-bar items from keymaps.  */
@@ -14010,6 +14016,8 @@ update_tool_bar (struct frame *f, bool save_match_data)
 	  selected_frame = frame;
 	  selected_window = FRAME_SELECTED_WINDOW (f);
 
+	  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
 	  /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
 	    = tool_bar_items (Fcopy_sequence (f->tool_bar_items),
@@ -17246,6 +17254,8 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp)
       set_buffer_internal (XBUFFER (w->contents));
     }
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   return startp;
 }
 
@@ -25450,6 +25460,8 @@ display_mode_lines (struct window *w)
 
   unbind_to (count, Qnil);
 
+  eassert (BUFFER_LIVE_P (XBUFFER (XWINDOW (selected_window)->contents)));
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;
diff --git a/src/xfns.c b/src/xfns.c
index d90644819b..fbe9014555 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -4225,7 +4225,7 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
 
   /* Make sure windows on this frame appear in calls to next-window
      and similar functions.  */
-  Vwindow_list = Qnil;
+  Vwindow_list = Vwindow_list_2 = Qnil;
 
  return unbind_to (count, frame);
 }

^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-08 18:52                                                                                                                                                           ` martin rudalics
@ 2021-04-09 20:59                                                                                                                                                             ` Michael Welsh Duggan
  2021-04-10  7:15                                                                                                                                                               ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-09 20:59 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org, Michael Welsh Duggan

martin rudalics <rudalics@gmx.at> writes:

>> I hit the breakpoint in quit.  It looks like Fnconc uses FOR_EACH_TAIL,
>> which uses FOR_EACH_TAIL_INTENAL, which calls maybe_quit.
>
> Not just around the corner but near.  Well done.
>
>> The question
>> in my mind now is whether block/unblock_input belongs in window_list or
>> in Fnconc.
>
> In window_list and we then should bind inhibit_quit IIUC.  Fnconc must be
> able to deal with circular lists.  I attach a patch.

I've tried to recreate a problem with this patch and have successfully
failed.  I'll continue using it for a few days, and I will let you know
if I see any problems, but I think that protecting window_list() from
quit fixes the problem(s) I reported.

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-09 20:59                                                                                                                                                             ` Michael Welsh Duggan
@ 2021-04-10  7:15                                                                                                                                                               ` martin rudalics
  2021-04-10 14:53                                                                                                                                                                 ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-10  7:15 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

[-- Attachment #1: Type: text/plain, Size: 617 bytes --]

 > I've tried to recreate a problem with this patch and have successfully
 > failed.  I'll continue using it for a few days, and I will let you know
 > if I see any problems, but I think that protecting window_list() from
 > quit fixes the problem(s) I reported.

Your impatience revealed this bug and your patience located it.  I now
attach a clean patch which also protects the occurrence in window_list_1
although that one doesn't appear so vulnerable - likely because quitting
always eats the maybe_quit from window_list first.  If you don't see any
problems with it within a week or so, I'll install it.

martin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: selected_window_contents.diff --]
[-- Type: text/x-patch; name="selected_window_contents.diff", Size: 1110 bytes --]

diff --git a/src/window.c b/src/window.c
index eb16e2a433..aa60624d63 100644
--- a/src/window.c
+++ b/src/window.c
@@ -2556,8 +2556,10 @@ window_list (void)
   if (!CONSP (Vwindow_list))
     {
       Lisp_Object tail, frame;
+      ptrdiff_t count = SPECPDL_INDEX ();

       Vwindow_list = Qnil;
+      specbind (Qinhibit_quit, Qt);
       FOR_EACH_FRAME (tail, frame)
 	{
 	  Lisp_Object arglist = Qnil;
@@ -2569,6 +2571,8 @@ window_list (void)
 	  arglist = Fnreverse (arglist);
 	  Vwindow_list = nconc2 (Vwindow_list, arglist);
 	}
+
+      unbind_to (count, Qnil);
     }

   return Vwindow_list;
@@ -2865,11 +2869,16 @@ window_list_1 (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames)
   rest = Fmemq (window, list);
   if (!NILP (rest) && !EQ (rest, list))
     {
+      ptrdiff_t count = SPECPDL_INDEX ();
+
+      specbind (Qinhibit_quit, Qt);
       for (tail = list; !EQ (XCDR (tail), rest); tail = XCDR (tail))
 	;
       XSETCDR (tail, Qnil);
       list = nconc2 (rest, list);
+      unbind_to (count, Qnil);
     }
+
   return list;
 }


^ permalink raw reply related	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-10  7:15                                                                                                                                                               ` martin rudalics
@ 2021-04-10 14:53                                                                                                                                                                 ` Michael Welsh Duggan
  2021-04-10 18:57                                                                                                                                                                   ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-10 14:53 UTC (permalink / raw)
  To: martin rudalics
  Cc: Michael Welsh Duggan, schwab@linux-m68k.org,
	47244@debbugs.gnu.org, Michael Welsh Duggan

martin rudalics <rudalics@gmx.at> writes:

>> I've tried to recreate a problem with this patch and have successfully
>> failed.  I'll continue using it for a few days, and I will let you know
>> if I see any problems, but I think that protecting window_list() from
>> quit fixes the problem(s) I reported.
>
> Your impatience revealed this bug and your patience located it.  I now
> attach a clean patch which also protects the occurrence in window_list_1
> although that one doesn't appear so vulnerable - likely because quitting
> always eats the maybe_quit from window_list first.  If you don't see any
> problems with it within a week or so, I'll install it.

Sure.  But I will say that I think protecting the nconc in window_list_1
is not as important, as it, by itself, does not modify any global
state.  In point of fact, it only modifies a local variable.  It may be
that window_loop or replace_buffer_in_windows_safely should be so
protected instead, but I can't say that with any degree of certainty.

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-10 14:53                                                                                                                                                                 ` Michael Welsh Duggan
@ 2021-04-10 18:57                                                                                                                                                                   ` martin rudalics
  2021-04-17  8:01                                                                                                                                                                     ` martin rudalics
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-10 18:57 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

 > Sure.  But I will say that I think protecting the nconc in window_list_1
 > is not as important, as it, by itself, does not modify any global
 > state.  In point of fact, it only modifies a local variable.  It may be
 > that window_loop or replace_buffer_in_windows_safely should be so
 > protected instead, but I can't say that with any degree of certainty.

window_list_1 is the object replace_buffer_in_windows(_safely) use to
find all windows displaying the buffer to kill and if only one of these
windows is missing in the list we get our initial problem back.  Just
that, as I mentioned earlier, the quit flag will probably have been
already processed by the preceding window_list call.

martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-10 18:57                                                                                                                                                                   ` martin rudalics
@ 2021-04-17  8:01                                                                                                                                                                     ` martin rudalics
  2021-04-20 14:03                                                                                                                                                                       ` Michael Welsh Duggan
  0 siblings, 1 reply; 160+ messages in thread
From: martin rudalics @ 2021-04-17  8:01 UTC (permalink / raw)
  To: Michael Welsh Duggan
  Cc: schwab@linux-m68k.org, 47244@debbugs.gnu.org,
	Michael Welsh Duggan

I've pushed a slightly more stringent fix to master now.  If you notice
any irregularities, tell me ASAP.  If you don't, please close this bug.

Thanks, martin





^ permalink raw reply	[flat|nested] 160+ messages in thread

* bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
  2021-04-17  8:01                                                                                                                                                                     ` martin rudalics
@ 2021-04-20 14:03                                                                                                                                                                       ` Michael Welsh Duggan
  0 siblings, 0 replies; 160+ messages in thread
From: Michael Welsh Duggan @ 2021-04-20 14:03 UTC (permalink / raw)
  To: 47244-done

I haven't been able to retrigger this bug using master for several
days, and it is my belief that the underlying problem has been correctly
diagnosed and solved.

-- 
Michael Welsh Duggan
(md5i@md5i.com)





^ permalink raw reply	[flat|nested] 160+ messages in thread

end of thread, other threads:[~2021-04-20 14:03 UTC | newest]

Thread overview: 160+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-18 15:39 bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs Michael Welsh Duggan
2021-03-18 15:42 ` Michael Welsh Duggan
2021-03-18 15:49   ` Michael Welsh Duggan
2021-03-18 16:02     ` Andreas Schwab
2021-03-18 16:02   ` Eli Zaretskii
2021-03-18 16:27     ` Michael Welsh Duggan
2021-03-18 16:45       ` Eli Zaretskii
2021-03-18 16:54         ` Michael Welsh Duggan
2021-03-18 18:41           ` Eli Zaretskii
2021-03-18 18:54             ` Michael Welsh Duggan
2021-03-18 19:16               ` Eli Zaretskii
2021-03-18 19:24                 ` Michael Welsh Duggan
2021-03-18 19:51                   ` Eli Zaretskii
2021-03-18 20:13                     ` Andreas Schwab
2021-03-18 20:27                       ` Eli Zaretskii
2021-03-19  1:50                         ` Michael Welsh Duggan
2021-03-19  6:47                           ` Eli Zaretskii
2021-03-19 13:37                             ` Michael Welsh Duggan
2021-03-19 13:41                               ` Michael Welsh Duggan
2021-03-19 13:51                                 ` Eli Zaretskii
2021-03-19 13:49                               ` Eli Zaretskii
2021-03-19 14:18                                 ` Michael Welsh Duggan
2021-03-19 14:21                                   ` Michael Welsh Duggan
2021-03-19 15:00                                     ` Eli Zaretskii
2021-03-19 15:14                                       ` Michael Welsh Duggan
2021-03-23 14:18                                       ` Michael Welsh Duggan
2021-03-23 15:02                                         ` Eli Zaretskii
2021-03-23 15:08                                           ` Michael Welsh Duggan
2021-03-23 16:42                                             ` Eli Zaretskii
2021-03-23 15:23                                         ` martin rudalics
2021-03-23 15:53                                           ` Michael Welsh Duggan
2021-03-23 16:45                                             ` Eli Zaretskii
2021-03-24  6:53                                             ` martin rudalics
2021-03-24 14:14                                               ` Michael Welsh Duggan
2021-03-24 16:09                                                 ` martin rudalics
2021-03-25  2:19                                                   ` Michael Welsh Duggan
2021-03-25  6:25                                                     ` Eli Zaretskii
2021-03-29 14:06                                                       ` Michael Welsh Duggan
2021-03-29 14:28                                                         ` Eli Zaretskii
2021-03-29 14:39                                                           ` Michael Welsh Duggan
2021-03-29 15:02                                                             ` Eli Zaretskii
2021-03-29 15:07                                                               ` Eli Zaretskii
2021-03-29 15:21                                                                 ` Michael Welsh Duggan
2021-03-29 15:26                                                                   ` Michael Welsh Duggan
2021-03-29 15:27                                                                   ` Eli Zaretskii
2021-03-29 15:33                                                                     ` Michael Welsh Duggan
2021-03-29 15:34                                                                       ` Michael Welsh Duggan
2021-03-29 15:41                                                                       ` Eli Zaretskii
2021-03-29 16:23                                                                         ` Michael Welsh Duggan
2021-03-29 15:21                                                                 ` Eli Zaretskii
2021-03-29 16:05                                                                   ` martin rudalics
2021-03-29 16:26                                                                     ` Michael Welsh Duggan
2021-03-29 17:33                                                                       ` martin rudalics
2021-03-29 19:12                                                                         ` Michael Welsh Duggan
2021-03-30  7:30                                                                           ` martin rudalics
2021-03-30 13:39                                                                             ` Michael Welsh Duggan
2021-03-30 14:36                                                                               ` martin rudalics
2021-03-30 14:51                                                                                 ` Michael Welsh Duggan
2021-03-30 15:05                                                                                   ` martin rudalics
2021-03-30 14:13                                                                             ` Michael Welsh Duggan
2021-03-30 14:36                                                                               ` martin rudalics
2021-03-30 14:48                                                                                 ` Eli Zaretskii
2021-03-30 15:05                                                                                   ` martin rudalics
2021-03-30 15:13                                                                                     ` Eli Zaretskii
2021-03-30 16:52                                                                                       ` martin rudalics
2021-03-30 17:05                                                                                         ` Eli Zaretskii
2021-03-31  6:41                                                                                           ` martin rudalics
2021-03-31  7:09                                                                                             ` Eli Zaretskii
2021-03-30 15:03                                                                                 ` Michael Welsh Duggan
2021-03-30 16:52                                                                                   ` martin rudalics
2021-03-31 13:23                                                                                 ` Michael Welsh Duggan
2021-03-31 13:53                                                                                   ` Michael Welsh Duggan
2021-03-31 14:01                                                                                     ` Eli Zaretskii
2021-03-31 14:32                                                                                       ` martin rudalics
2021-03-31 14:48                                                                                         ` Michael Welsh Duggan
2021-03-31 15:49                                                                                           ` martin rudalics
2021-03-31 17:01                                                                                             ` Michael Welsh Duggan
2021-03-31 18:41                                                                                               ` martin rudalics
2021-03-31 19:14                                                                                                 ` Michael Welsh Duggan
2021-03-31 19:18                                                                                                   ` Michael Welsh Duggan
2021-04-01  7:14                                                                                                     ` martin rudalics
2021-04-01  7:45                                                                                                       ` Eli Zaretskii
2021-04-01 13:20                                                                                                         ` Michael Welsh Duggan
2021-04-01 13:22                                                                                                           ` Eli Zaretskii
2021-04-01 13:54                                                                                             ` Michael Welsh Duggan
2021-04-01 14:56                                                                                               ` martin rudalics
2021-04-01 18:30                                                                                                 ` Michael Welsh Duggan
2021-04-01 19:31                                                                                                   ` Michael Welsh Duggan
2021-04-02  6:48                                                                                                   ` martin rudalics
2021-04-05 18:15                                                                                                     ` Michael Welsh Duggan
2021-04-05 18:45                                                                                                       ` martin rudalics
2021-04-05 19:57                                                                                                         ` Michael Welsh Duggan
2021-04-05 20:39                                                                                                           ` martin rudalics
2021-04-05 20:56                                                                                                             ` Michael Welsh Duggan
2021-04-06  8:10                                                                                                               ` martin rudalics
2021-04-06 14:40                                                                                                                 ` Michael Welsh Duggan
2021-04-06 16:12                                                                                                                   ` martin rudalics
2021-04-06 16:48                                                                                                                     ` Michael Welsh Duggan
2021-04-06 17:00                                                                                                                       ` martin rudalics
2021-04-06 17:24                                                                                                                         ` Michael Welsh Duggan
2021-04-07  2:22                                                                                                                           ` Michael Welsh Duggan
2021-04-07  7:52                                                                                                                             ` Andreas Schwab
2021-04-07  9:00                                                                                                                             ` martin rudalics
2021-04-07 12:42                                                                                                                               ` Michael Welsh Duggan
2021-04-07 13:35                                                                                                                                 ` martin rudalics
2021-04-07 15:29                                                                                                                                   ` Michael Welsh Duggan
2021-04-07 16:16                                                                                                                                     ` martin rudalics
2021-04-07 17:37                                                                                                                                       ` Michael Welsh Duggan
2021-04-07 17:55                                                                                                                                         ` Michael Welsh Duggan
2021-04-07 18:31                                                                                                                                         ` Michael Welsh Duggan
2021-04-07 19:25                                                                                                                                           ` Michael Welsh Duggan
2021-04-07 20:25                                                                                                                                             ` martin rudalics
2021-04-07 20:32                                                                                                                                               ` Michael Welsh Duggan
2021-04-08  6:59                                                                                                                                                 ` martin rudalics
2021-04-08 10:47                                                                                                                                                   ` Gregory Heytings
2021-04-08 11:39                                                                                                                                                     ` Eli Zaretskii
2021-04-08 12:06                                                                                                                                                       ` Andreas Schwab
2021-04-08 12:29                                                                                                                                                         ` Eli Zaretskii
2021-04-08 12:43                                                                                                                                                           ` Gregory Heytings
2021-04-08 12:59                                                                                                                                                             ` Eli Zaretskii
2021-04-08 16:20                                                                                                                                                               ` Gregory Heytings
2021-04-08 12:03                                                                                                                                                     ` martin rudalics
2021-04-08 12:24                                                                                                                                                       ` Gregory Heytings
2021-04-08 13:39                                                                                                                                                         ` Michael Welsh Duggan
2021-04-08 14:35                                                                                                                                                   ` Michael Welsh Duggan
2021-04-08 15:08                                                                                                                                                     ` Eli Zaretskii
2021-04-08 15:24                                                                                                                                                       ` Andreas Schwab
2021-04-08 15:21                                                                                                                                                     ` Michael Welsh Duggan
2021-04-08 15:33                                                                                                                                                       ` Michael Welsh Duggan
2021-04-08 15:48                                                                                                                                                       ` martin rudalics
2021-04-08 16:01                                                                                                                                                         ` Michael Welsh Duggan
2021-04-08 16:14                                                                                                                                                           ` martin rudalics
2021-04-08 16:35                                                                                                                                                           ` Eli Zaretskii
2021-04-08 16:42                                                                                                                                                             ` Michael Welsh Duggan
2021-04-08 15:58                                                                                                                                                       ` Eli Zaretskii
2021-04-08 16:05                                                                                                                                                         ` Michael Welsh Duggan
2021-04-08 16:28                                                                                                                                                           ` Eli Zaretskii
2021-04-08 16:37                                                                                                                                                             ` Michael Welsh Duggan
2021-04-08 16:49                                                                                                                                                               ` Eli Zaretskii
2021-04-08 17:15                                                                                                                                                                 ` Michael Welsh Duggan
2021-04-08 17:11                                                                                                                                                         ` Michael Welsh Duggan
2021-04-08 17:46                                                                                                                                                           ` Eli Zaretskii
2021-04-08 17:51                                                                                                                                                             ` Michael Welsh Duggan
2021-04-08 18:52                                                                                                                                                           ` martin rudalics
2021-04-09 20:59                                                                                                                                                             ` Michael Welsh Duggan
2021-04-10  7:15                                                                                                                                                               ` martin rudalics
2021-04-10 14:53                                                                                                                                                                 ` Michael Welsh Duggan
2021-04-10 18:57                                                                                                                                                                   ` martin rudalics
2021-04-17  8:01                                                                                                                                                                     ` martin rudalics
2021-04-20 14:03                                                                                                                                                                       ` Michael Welsh Duggan
2021-04-07 19:40                                                                                                                                           ` Eli Zaretskii
2021-04-07 18:48                                                                                                                                         ` martin rudalics
2021-04-07 18:53                                                                                                                                           ` Michael Welsh Duggan
2021-04-07 20:25                                                                                                                                             ` martin rudalics
2021-04-07  9:00                                                                                                                           ` martin rudalics
2021-03-19  8:15                         ` martin rudalics
2021-03-19  8:19                           ` Eli Zaretskii
2021-03-19  9:18                             ` martin rudalics
2021-03-19  9:37                               ` martin rudalics
2021-03-19 11:55                               ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).