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

From: martin rudalics <[email-masked]>
Date: Mon, 29 Mar 2021 19:33:27 +0200

> 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