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

From: Michael Welsh Duggan <[email-masked]>
Date: Mon, 29 Mar 2021 15:12:50 -0400

martin rudalics <[email-masked]> 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
([email-masked])