Subject: bug#31312: Segmentation fault with doom-emacs, NeoTree and Zoom

From: martin rudalics <[email-masked]>
Date: Tue, 01 May 2018 16:33:07 +0200

> Reproduced with emacs-26, seems there is a window without a buffer.
 >
 > ../../src/buffer.h:914: Emacs fatal error: assertion failed: BUFFERP (a)
 >
 > Thread 1 "emacs" hit Breakpoint 1, terminate_due_to_signal (sig=6, backtrace_limit=2147483647)
 >      at ../../src/emacs.c:364
 > 364	  signal (sig, SIG_DFL);
 > (gdb) bt
 > #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at ../../src/emacs.c:364
 > #1  0x0000000000614655 in die (msg=0x74ecf9 "BUFFERP (a)", file=0x74ece6 "../../src/buffer.h",
 >      line=914) at ../../src/alloc.c:7423
 > #2  0x000000000057a1a8 in XBUFFER (a=XIL(0)) at ../../src/buffer.h:914
 > #3  0x0000000000464716 in reconsider_clip_changes (w=0x60537f0) at ../../src/xdisp.c:13727
 > #4  0x000000000046514d in redisplay_internal () at ../../src/xdisp.c:13939
 > #5  0x0000000000463c16 in redisplay () at ../../src/xdisp.c:13518
 > #6  0x00000000005851ae in read_char (commandflag=1, map=XIL(0x5cf7503), prev_event=XIL(0),
 >      used_mouse_menu=0x7fffffffe41f, end_time=0x0) at ../../src/keyboard.c:2480
 > #7  0x00000000005957c5 in read_key_sequence (keybuf=0x7fffffffe570, bufsize=30, prompt=XIL(0),
 >      dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true,
 >      prevent_redisplay=false) at ../../src/keyboard.c:9147
 > #8  0x0000000000581d55 in command_loop_1 () at ../../src/keyboard.c:1368
 > #9  0x0000000000638529 in internal_condition_case (bfun=0x581909 <command_loop_1>,
 >      handlers=XIL(0x5250), hfun=0x580f4c <cmd_error>) at ../../src/eval.c:1332
 > #10 0x0000000000581524 in command_loop_2 (ignore=XIL(0)) at ../../src/keyboard.c:1110
 > #11 0x0000000000637a32 in internal_catch (tag=XIL(0xc6f0), func=0x5814f7 <command_loop_2>, arg=XIL(0))
 >      at ../../src/eval.c:1097
 > #12 0x00000000005814c2 in command_loop () at ../../src/keyboard.c:1089
 > #13 0x0000000000580a36 in recursive_edit_1 () at ../../src/keyboard.c:695
 > #14 0x0000000000580c2b in Frecursive_edit () at ../../src/keyboard.c:766
 > #15 0x000000000057e7c6 in main (argc=1, argv=0x7fffffffea38) at ../../src/emacs.c:1713
 > (gdb) frame 3

Is w in reconsider_clip_changes the same as XWINDOW (selected_window)
when it fails?  If so, could you instrument select_window_1 (or use a
watchpoint) to check whether selected_window = window ever assigns a
window with XWINDOW (window)->contents equal Qnil?

Thanks, martin