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


Message #299 received at 47244 <at> debbugs.gnu.org (full text, mbox):

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: Re: bug#47244: 28.0.50; SIGSEGV in long-runnning Emacs
Date: Mon, 05 Apr 2021 16:56:23 -0400
martin rudalics <rudalics <at> 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 <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.