Subject: bug#30320: 26.0.91; Crash when using lsp-ui-doc-mode

From: Jake Goulding <[email-masked]>
Date: Thu, 1 Feb 2018 14:54:30 -0500

Now that I have debugging symbols, here is the complete backtrace:

    frame #0: 0x00007fff5c930e3e libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x00007fff5ca6f150 libsystem_pthread.dylib`pthread_kill + 333
    frame #2: 0x00007fff5c83f8fe libsystem_c.dylib`raise + 26
    frame #3: 0x00000001001a4dc6 Emacs`terminate_due_to_signal(sig=6,
backtrace_limit=40) at emacs.c:394
    frame #4: 0x00000001001e1783 Emacs`emacs_abort at sysdep.c:2426
    frame #5: 0x0000000100402e68 Emacs`ns_term_shutdown(sig=6) at
nsterm.m:5332
    frame #6: 0x00000001001a50b4 Emacs`shut_down_emacs(sig=6, stuff=0) at
emacs.c:2118
    frame #7: 0x00000001001a4d62 Emacs`terminate_due_to_signal(sig=6,
backtrace_limit=40) at emacs.c:377
    frame #8: 0x00000001001e1783 Emacs`emacs_abort at sysdep.c:2426
    frame #9: 0x0000000100173380 Emacs`cmcheckmagic(tty=0x000000010180d000)
at cm.c:118
    frame #10: 0x0000000100181c02
Emacs`tty_write_glyphs(f=0x000000010402ffb8, string=0x000000010228c6e0,
len=1) at term.c:793
  * frame #11: 0x000000010018445b Emacs`write_glyphs(f=0x000000010402ffb8,
string=0x000000010228c6b0, len=1) at terminal.c:165
    frame #12: 0x000000010001ab99
Emacs`update_frame_line(f=0x000000010402ffb8, vpos=52,
updating_menu_p=false) at dispnew.c:5036
    frame #13: 0x000000010000667e
Emacs`update_frame_1(f=0x000000010402ffb8, force_p=true,
inhibit_id_p=false, set_cursor_p=true, updating_menu_p=false) at
dispnew.c:4516
    frame #14: 0x0000000100005fd6 Emacs`update_frame(f=0x000000010402ffb8,
force_p=true, inhibit_hairy_id_p=false) at dispnew.c:3124
    frame #15: 0x0000000100064456 Emacs`redisplay_internal at xdisp.c:14444
    frame #16: 0x0000000100065a69 Emacs`redisplay at xdisp.c:13503
    frame #17: 0x00000001001b05d0 Emacs`read_char(commandflag=1,
map=4355478675, prev_event=0, used_mouse_menu=0x00007ffeefbfa587,
end_time=0x0000000000000000) at keyboard.c:2480
    frame #18: 0x00000001001ab75b
Emacs`read_key_sequence(keybuf=0x00007ffeefbfa8a0, bufsize=30, prompt=0,
dont_downcase_last=false, can_return_switch_frame=true,
fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9147
    frame #19: 0x00000001001aa0ab Emacs`command_loop_1 at keyboard.c:1368
    frame #20: 0x00000001002d4d6f
Emacs`internal_condition_case(bfun=(Emacs`command_loop_1 at
keyboard.c:1259), handlers=18672, hfun=(Emacs`cmd_error at keyboard.c:938))
at eval.c:1332
    frame #21: 0x00000001001c3fec Emacs`command_loop_2(ignore=0) at
keyboard.c:1110
    frame #22: 0x00000001002d4018 Emacs`internal_catch(tag=19344,
func=(Emacs`command_loop_2 at keyboard.c:1106), arg=0) at eval.c:1097
    frame #23: 0x00000001001a8db0 Emacs`command_loop at keyboard.c:1081
    frame #24: 0x00000001001a8c90 Emacs`recursive_edit_1 at keyboard.c:695
    frame #25: 0x0000000100213d2d Emacs`read_minibuf(map=4362498003,
initial=0, prompt=4332737972, expflag=false, histvar=149436936, histpos=2,
defalt=0, allow_props=false, inherit_input_method=false) at minibuf.c:685
    frame #26: 0x0000000100212848
Emacs`Fread_from_minibuffer(prompt=4332737972, initial_contents=0,
keymap=4362498003, read=0, hist=149436936, default_value=0,
inherit_input_method=0) at minibuf.c:992
    frame #27: 0x00000001002e58a9
Emacs`funcall_subr(subr=0x00000001004d87c8, numargs=7,
args=0x00007ffeefbfb1c0) at eval.c:2861
    frame #28: 0x00000001002e40bd Emacs`Ffuncall(nargs=8,
args=0x00007ffeefbfb1b8) at eval.c:2766
    frame #29: 0x000000010037a3fb Emacs`exec_byte_code(bytestr=4300820540,
vector=4300820573, maxdepth=74, args_template=8202, nargs=8,
args=0x00007ffeefbfbd68) at bytecode.c:629
    frame #30: 0x00000001002e5cd5 Emacs`funcall_lambda(fun=4300820493,
nargs=8, arg_vector=0x00007ffeefbfbd28) at eval.c:2967
    frame #31: 0x00000001002e4105 Emacs`Ffuncall(nargs=9,
args=0x00007ffeefbfbd20) at eval.c:2768
    frame #32: 0x0000000100214759 Emacs`Fcompleting_read(prompt=4332737972,
collection=4300851469, predicate=13968, require_match=45936,
initial_input=0, hist=149436936, def=0, inherit_input_method=0) at
minibuf.c:1696
    frame #33: 0x00000001002e591c
Emacs`funcall_subr(subr=0x00000001004d8a08, numargs=6,
args=0x00007ffeefbfbf10) at eval.c:2866
    frame #34: 0x00000001002e40bd Emacs`Ffuncall(nargs=7,
args=0x00007ffeefbfbf08) at eval.c:2766
    frame #35: 0x000000010037a3fb Emacs`exec_byte_code(bytestr=4300850636,
vector=4300850669, maxdepth=42, args_template=2, nargs=0,
args=0x00007ffeefbfca38) at bytecode.c:629
    frame #36: 0x00000001002e5cd5 Emacs`funcall_lambda(fun=4300850589,
nargs=0, arg_vector=0x00007ffeefbfca38) at eval.c:2967
    frame #37: 0x00000001002e4105 Emacs`Ffuncall(nargs=1,
args=0x00007ffeefbfca30) at eval.c:2768
    frame #38: 0x000000010037a3fb Emacs`exec_byte_code(bytestr=4300853548,
vector=4300853597, maxdepth=14, args_template=0, nargs=0,
args=0x0000000000000000) at bytecode.c:629
    frame #39: 0x0000000100374e2c Emacs`Fbyte_code(bytestr=4300853548,
vector=4300853597, maxdepth=14) at bytecode.c:321
    frame #40: 0x00000001002cbead Emacs`eval_sub(form=4300853515) at
eval.c:2237
    frame #41: 0x00000001002d635d Emacs`Feval(form=4300853515, lexical=0)
at eval.c:2051
    frame #42: 0x00000001002c268a
Emacs`Fcall_interactively(function=132615656, record_flag=0,
keys=4463572133) at callint.c:357
    frame #43: 0x00000001002e576b
Emacs`funcall_subr(subr=0x00000001008e1e28, numargs=3,
args=0x00007ffeefbfe160) at eval.c:2846
    frame #44: 0x00000001002e40bd Emacs`Ffuncall(nargs=4,
args=0x00007ffeefbfe158) at eval.c:2766
    frame #45: 0x000000010037a3fb Emacs`exec_byte_code(bytestr=4300853692,
vector=4300853725, maxdepth=54, args_template=4102, nargs=1,
args=0x00007ffeefbfecd8) at bytecode.c:629
    frame #46: 0x00000001002e5cd5 Emacs`funcall_lambda(fun=4300853645,
nargs=1, arg_vector=0x00007ffeefbfecd0) at eval.c:2967
    frame #47: 0x00000001002e4105 Emacs`Ffuncall(nargs=2,
args=0x00007ffeefbfecc8) at eval.c:2768
    frame #48: 0x00000001002e4e94 Emacs`call1(fn=13920, arg1=132615656) at
eval.c:2617
    frame #49: 0x00000001001aa5b6 Emacs`command_loop_1 at keyboard.c:1482
    frame #50: 0x00000001002d4d6f
Emacs`internal_condition_case(bfun=(Emacs`command_loop_1 at
keyboard.c:1259), handlers=18672, hfun=(Emacs`cmd_error at keyboard.c:938))
at eval.c:1332
    frame #51: 0x00000001001c3fec Emacs`command_loop_2(ignore=0) at
keyboard.c:1110
    frame #52: 0x00000001002d4018 Emacs`internal_catch(tag=47520,
func=(Emacs`command_loop_2 at keyboard.c:1106), arg=0) at eval.c:1097
    frame #53: 0x00000001001a8e28 Emacs`command_loop at keyboard.c:1089
    frame #54: 0x00000001001a8c90 Emacs`recursive_edit_1 at keyboard.c:695
    frame #55: 0x00000001001a905a Emacs`Frecursive_edit at keyboard.c:766
    frame #56: 0x00000001001a6c2e Emacs`main(argc=3,
argv=0x00007ffeefbff578) at emacs.c:1713
    frame #57: 0x00007fff5c7e1115 libdyld.dylib`start + 1
    frame #58: 0x00007fff5c7e1115 libdyld.dylib`start + 1

On Thu, Feb 1, 2018 at 2:52 PM, Jake Goulding <[email-masked]>
wrote:

> It looks like `curY (tty) >= FrameRows (tty) - 1`:
>
>
> (lldb)
> frame #9: 0x0000000100173380 Emacs`cmcheckmagic(tty=0x000000010180d000)
> at cm.c:118
>    115   if (curX (tty) == FrameCols (tty))
>    116     {
>    117       if (!MagicWrap (tty) || curY (tty) >= FrameRows (tty) - 1)
> -> 118 emacs_abort ();
>    119       if (tty->termscript)
>    120 putc_unlocked ('\r', tty->termscript);
>    121       putc_unlocked ('\r', tty->output);
> (lldb) p (tty)->Wcm->cm_magicwrap
> (bool_bf) $0 = true
> (lldb) p (tty)->Wcm->cm_curY
> (int) $1 = 2
> (lldb) p (tty)->Wcm->cm_rows
> (int) $2 = 3
>
>
> > was the original cause also in "emacs -nw", or was it in a GUI
> frame?
>
> It was not in a GUI, but it was an `emacsclient -t` invocation.
>