GNU bug report logs - #47244
28.0.50; SIGSEGV in long-runnning Emacs

Previous Next

Package: emacs;

Reported by: Michael Welsh Duggan <md5i <at> md5i.com>

Date: Thu, 18 Mar 2021 15:40:01 UTC

Severity: normal

Found in version 28.0.50

Done: Michael Welsh Duggan <mwd <at> md5i.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Michael Welsh Duggan <mwd <at> cert.org>
To: martin rudalics <rudalics <at> gmx.at>
Cc: Michael Welsh Duggan <mwd <at> md5i.com>, "47244 <at> debbugs.gnu.org" <47244 <at> debbugs.gnu.org>, "schwab <at> linux-m68k.org" <schwab <at> linux-m68k.org>
Subject: bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
Date: Tue, 06 Apr 2021 12:48:04 -0400
martin rudalics <rudalics <at> 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 <at> cert.org)




This bug report was last modified 4 years and 28 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.