Skip to content

Fix spelling mistakes in README.md #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 21, 2014
Merged

Fix spelling mistakes in README.md #8

merged 1 commit into from
Feb 21, 2014

Conversation

mmcdole
Copy link

@mmcdole mmcdole commented Feb 21, 2014

Just fix a few spelling issues I saw while reading through the readme.

tarruda added a commit that referenced this pull request Feb 21, 2014
Fix spelling mistakes in README.md
@tarruda tarruda merged commit fcc982b into neovim:master Feb 21, 2014
@tarruda
Copy link
Member

tarruda commented Feb 21, 2014

Ty

cepko33 pushed a commit to cepko33/neovim that referenced this pull request Feb 27, 2014
Fix spelling mistakes in README.md
@buf1024 buf1024 mentioned this pull request Jul 18, 2015
justinmk added a commit to justinmk/neovim that referenced this pull request May 15, 2016
References neovim#3958

Test provokes ASAN failure:

=================================================================
==12124==ERROR: AddressSanitizer: heap-use-after-free on address 0x625000070928 at pc 0x000003abe56f bp 0x7fff3d320b10 sp 0x7fff3d320b08
READ of size 8 at 0x625000070928 thread T0
    #0 0x3abe56e in terminal_receive /home/travis/build/neovim/neovim/src/nvim/terminal.c:541:21
    #1 0xeaf1c3 in on_job_output /home/travis/build/neovim/neovim/src/nvim/eval.c:21664:5
    #2 0xeadbe4 in on_job_stdout /home/travis/build/neovim/neovim/src/nvim/eval.c:21639:3
    #3 0x119d6d2 in read_event /home/travis/build/neovim/neovim/src/nvim/event/rstream.c:178:5
    #4 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    #5 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    #6 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#7 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#8 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#9 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#10 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226
    neovim#11 0x46b268 in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x46b268)

0x625000070928 is located 40 bytes inside of 8328-byte region [0x625000070900,0x625000072988)
freed by thread T0 here:
    #0 0x4f1f72 in __interceptor_free (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f1f72)
    #1 0x2073ea5 in xfree /home/travis/build/neovim/neovim/src/nvim/memory.c:105:3
    #2 0x3ad386d in terminal_destroy /home/travis/build/neovim/neovim/src/nvim/terminal.c:507:5
    #3 0xea9b49 in term_close /home/travis/build/neovim/neovim/src/nvim/eval.c:21711:3
    #4 0x3abdd6b in terminal_close /home/travis/build/neovim/neovim/src/nvim/terminal.c:321:7
    #5 0x6d9355 in close_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:393:5
    #6 0x717505 in empty_curbuf /home/travis/build/neovim/neovim/src/nvim/buffer.c:842:5
    neovim#7 0x6f9dc5 in do_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:988:14
    neovim#8 0x70e054 in do_bufdel /home/travis/build/neovim/neovim/src/nvim/buffer.c:732:11
    neovim#9 0x14b99da in ex_bunload /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:4373:17
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x2520d32 in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4488:18
    neovim#13 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#14 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#15 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#16 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#17 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

previously allocated by thread T0 here:
    #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
    #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
    #2 0x3ab0bb8 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:215:18
    #3 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#9 0x2520d32 in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4488:18
    neovim#10 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#11 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#12 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#13 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#14 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

SUMMARY: AddressSanitizer: heap-use-after-free /home/travis/build/neovim/neovim/src/nvim/terminal.c:541 terminal_receive
Shadow bytes around the buggy address:
  0x0c4a800060d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a800060e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a800060f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80006100: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80006110: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c4a80006120: fd fd fd fd fd[fd]fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006130: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006140: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006150: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006160: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006170: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==12124==ABORTING

=================================================================
==12138==ERROR: LeakSanitizer: detected memory leaks

Indirect leak of 8328 byte(s) in 1 object(s) allocated from:
    #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
    #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
    #2 0x3ab0bb8 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:215:18
    #3 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#9 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#10 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#13 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#14 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#15 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#16 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#17 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#18 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#19 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#20 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#21 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#22 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#23 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#24 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#25 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#26 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#27 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#28 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

Indirect leak of 8000 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x20730b5 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:59:15
    #2 0x2073b01 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:93:15
    #3 0x3ab496c in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:257:19
    #4 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #5 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #6 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#7 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#8 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#9 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#10 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#11 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#12 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#13 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#14 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#15 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#16 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#17 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#18 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#19 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#20 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#21 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#22 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#23 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#24 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#25 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#26 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#27 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#28 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#29 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

Indirect leak of 4800 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c881 in realloc_buffer (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c881)
    #4 0x3e2c834 in vterm_screen_enable_altscreen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c834)
    #5 0x3ab2709 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:228:3
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 4800 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c881 in realloc_buffer (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c881)
    #4 0x3e2c76f in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c76f)
    #5 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
    #6 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
    neovim#7 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#8 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#9 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#10 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#13 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#14 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#15 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#16 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#17 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#18 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#19 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#20 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#21 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#22 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#23 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#24 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#25 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#26 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#27 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#28 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#29 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26

Indirect leak of 2000 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c79e in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c79e)
    #4 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
    #5 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 1640 byte(s) in 1 object(s) allocated from:
    #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
    #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
    #2 0xea12a6 in common_job_init /home/travis/build/neovim/neovim/src/nvim/eval.c:21486:27
    #3 0xe55aae in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16343:27
    #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#9 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#10 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#13 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#14 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#15 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#16 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#17 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#18 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#19 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#20 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#21 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#22 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#23 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#24 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#25 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#26 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#27 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#28 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

Indirect leak of 384 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f18b in vterm_state_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f18b)
    #4 0x3e2f047 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f047)
    #5 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 128 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c6e3 in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c6e3)
    #4 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
    #5 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 112 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e3665d in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e3665d)
    #3 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
    #4 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e366dc in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e366dc)
    #4 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
    #5 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e3670d in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e3670d)
    #4 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
    #5 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f084 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f084)
    #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x20730b5 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:59:15
    #2 0x2073b01 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:93:15
    #3 0x117eb39 in queue_new /home/travis/build/neovim/neovim/src/nvim/event/queue.c:97:15
    #4 0x117fe77 in queue_new_child /home/travis/build/neovim/neovim/src/nvim/event/queue.c:92:10
    #5 0xea2077 in common_job_init /home/travis/build/neovim/neovim/src/nvim/eval.c:21492:18
    #6 0xe55aae in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16343:27
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f0d5 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f0d5)
    #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

Indirect leak of 7 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f0b2 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f0b2)
    #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

SUMMARY: AddressSanitizer: 30443 byte(s) leaked in 15 allocation(s).
justinmk added a commit to justinmk/neovim that referenced this pull request May 15, 2016
References neovim#3958

Test provokes ASAN failure:

=================================================================
==12124==ERROR: AddressSanitizer: heap-use-after-free on address 0x625000070928 at pc 0x000003abe56f bp 0x7fff3d320b10 sp 0x7fff3d320b08
READ of size 8 at 0x625000070928 thread T0
    #0 0x3abe56e in terminal_receive /home/travis/build/neovim/neovim/src/nvim/terminal.c:541:21
    #1 0xeaf1c3 in on_job_output /home/travis/build/neovim/neovim/src/nvim/eval.c:21664:5
    #2 0xeadbe4 in on_job_stdout /home/travis/build/neovim/neovim/src/nvim/eval.c:21639:3
    #3 0x119d6d2 in read_event /home/travis/build/neovim/neovim/src/nvim/event/rstream.c:178:5
    #4 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    #5 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    #6 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#7 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#8 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#9 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#10 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226
    neovim#11 0x46b268 in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x46b268)

0x625000070928 is located 40 bytes inside of 8328-byte region [0x625000070900,0x625000072988)
freed by thread T0 here:
    #0 0x4f1f72 in __interceptor_free (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f1f72)
    #1 0x2073ea5 in xfree /home/travis/build/neovim/neovim/src/nvim/memory.c:105:3
    #2 0x3ad386d in terminal_destroy /home/travis/build/neovim/neovim/src/nvim/terminal.c:507:5
    #3 0xea9b49 in term_close /home/travis/build/neovim/neovim/src/nvim/eval.c:21711:3
    #4 0x3abdd6b in terminal_close /home/travis/build/neovim/neovim/src/nvim/terminal.c:321:7
    #5 0x6d9355 in close_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:393:5
    #6 0x717505 in empty_curbuf /home/travis/build/neovim/neovim/src/nvim/buffer.c:842:5
    neovim#7 0x6f9dc5 in do_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:988:14
    neovim#8 0x70e054 in do_bufdel /home/travis/build/neovim/neovim/src/nvim/buffer.c:732:11
    neovim#9 0x14b99da in ex_bunload /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:4373:17
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x2520d32 in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4488:18
    neovim#13 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#14 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#15 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#16 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#17 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

previously allocated by thread T0 here:
    #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
    #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
    #2 0x3ab0bb8 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:215:18
    #3 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#9 0x2520d32 in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4488:18
    neovim#10 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#11 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#12 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#13 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#14 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

SUMMARY: AddressSanitizer: heap-use-after-free /home/travis/build/neovim/neovim/src/nvim/terminal.c:541 terminal_receive
Shadow bytes around the buggy address:
  0x0c4a800060d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a800060e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a800060f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80006100: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80006110: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c4a80006120: fd fd fd fd fd[fd]fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006130: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006140: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006150: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006160: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006170: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==12124==ABORTING

=================================================================
==12138==ERROR: LeakSanitizer: detected memory leaks

Indirect leak of 8328 byte(s) in 1 object(s) allocated from:
    #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
    #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
    #2 0x3ab0bb8 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:215:18
    #3 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#9 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#10 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#13 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#14 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#15 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#16 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#17 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#18 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#19 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#20 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#21 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#22 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#23 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#24 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#25 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#26 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#27 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#28 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

Indirect leak of 8000 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x20730b5 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:59:15
    #2 0x2073b01 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:93:15
    #3 0x3ab496c in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:257:19
    #4 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #5 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #6 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#7 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#8 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#9 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#10 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#11 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#12 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#13 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#14 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#15 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#16 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#17 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#18 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#19 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#20 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#21 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#22 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#23 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#24 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#25 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#26 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#27 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#28 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#29 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

Indirect leak of 4800 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c881 in realloc_buffer (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c881)
    #4 0x3e2c834 in vterm_screen_enable_altscreen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c834)
    #5 0x3ab2709 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:228:3
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 4800 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c881 in realloc_buffer (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c881)
    #4 0x3e2c76f in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c76f)
    #5 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
    #6 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
    neovim#7 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#8 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#9 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#10 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#13 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#14 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#15 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#16 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#17 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#18 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#19 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#20 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#21 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#22 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#23 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#24 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#25 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#26 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#27 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#28 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#29 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26

Indirect leak of 2000 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c79e in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c79e)
    #4 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
    #5 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 1640 byte(s) in 1 object(s) allocated from:
    #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
    #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
    #2 0xea12a6 in common_job_init /home/travis/build/neovim/neovim/src/nvim/eval.c:21486:27
    #3 0xe55aae in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16343:27
    #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#9 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#10 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#13 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#14 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#15 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#16 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#17 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#18 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#19 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#20 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#21 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#22 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#23 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#24 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#25 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#26 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#27 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#28 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

Indirect leak of 384 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f18b in vterm_state_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f18b)
    #4 0x3e2f047 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f047)
    #5 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 128 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c6e3 in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c6e3)
    #4 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
    #5 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 112 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e3665d in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e3665d)
    #3 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
    #4 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e366dc in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e366dc)
    #4 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
    #5 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e3670d in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e3670d)
    #4 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
    #5 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f084 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f084)
    #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x20730b5 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:59:15
    #2 0x2073b01 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:93:15
    #3 0x117eb39 in queue_new /home/travis/build/neovim/neovim/src/nvim/event/queue.c:97:15
    #4 0x117fe77 in queue_new_child /home/travis/build/neovim/neovim/src/nvim/event/queue.c:92:10
    #5 0xea2077 in common_job_init /home/travis/build/neovim/neovim/src/nvim/eval.c:21492:18
    #6 0xe55aae in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16343:27
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f0d5 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f0d5)
    #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

Indirect leak of 7 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f0b2 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f0b2)
    #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

SUMMARY: AddressSanitizer: 30443 byte(s) leaked in 15 allocation(s).
justinmk added a commit to justinmk/neovim that referenced this pull request May 16, 2016
References neovim#3958

Test provokes ASAN failure:

=================================================================
==12124==ERROR: AddressSanitizer: heap-use-after-free on address 0x625000070928 at pc 0x000003abe56f bp 0x7fff3d320b10 sp 0x7fff3d320b08
READ of size 8 at 0x625000070928 thread T0
    #0 0x3abe56e in terminal_receive /home/travis/build/neovim/neovim/src/nvim/terminal.c:541:21
    #1 0xeaf1c3 in on_job_output /home/travis/build/neovim/neovim/src/nvim/eval.c:21664:5
    #2 0xeadbe4 in on_job_stdout /home/travis/build/neovim/neovim/src/nvim/eval.c:21639:3
    #3 0x119d6d2 in read_event /home/travis/build/neovim/neovim/src/nvim/event/rstream.c:178:5
    #4 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    #5 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    #6 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#7 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#8 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#9 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#10 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226
    neovim#11 0x46b268 in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x46b268)

0x625000070928 is located 40 bytes inside of 8328-byte region [0x625000070900,0x625000072988)
freed by thread T0 here:
    #0 0x4f1f72 in __interceptor_free (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f1f72)
    #1 0x2073ea5 in xfree /home/travis/build/neovim/neovim/src/nvim/memory.c:105:3
    #2 0x3ad386d in terminal_destroy /home/travis/build/neovim/neovim/src/nvim/terminal.c:507:5
    #3 0xea9b49 in term_close /home/travis/build/neovim/neovim/src/nvim/eval.c:21711:3
    #4 0x3abdd6b in terminal_close /home/travis/build/neovim/neovim/src/nvim/terminal.c:321:7
    #5 0x6d9355 in close_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:393:5
    #6 0x717505 in empty_curbuf /home/travis/build/neovim/neovim/src/nvim/buffer.c:842:5
    neovim#7 0x6f9dc5 in do_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:988:14
    neovim#8 0x70e054 in do_bufdel /home/travis/build/neovim/neovim/src/nvim/buffer.c:732:11
    neovim#9 0x14b99da in ex_bunload /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:4373:17
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x2520d32 in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4488:18
    neovim#13 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#14 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#15 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#16 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#17 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

previously allocated by thread T0 here:
    #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
    #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
    #2 0x3ab0bb8 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:215:18
    #3 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#9 0x2520d32 in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4488:18
    neovim#10 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#11 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#12 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#13 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#14 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

SUMMARY: AddressSanitizer: heap-use-after-free /home/travis/build/neovim/neovim/src/nvim/terminal.c:541 terminal_receive
Shadow bytes around the buggy address:
  0x0c4a800060d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a800060e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a800060f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80006100: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4a80006110: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c4a80006120: fd fd fd fd fd[fd]fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006130: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006140: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006150: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006160: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4a80006170: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==12124==ABORTING

=================================================================
==12138==ERROR: LeakSanitizer: detected memory leaks

Indirect leak of 8328 byte(s) in 1 object(s) allocated from:
    #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
    #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
    #2 0x3ab0bb8 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:215:18
    #3 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#9 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#10 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#13 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#14 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#15 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#16 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#17 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#18 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#19 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#20 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#21 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#22 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#23 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#24 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#25 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#26 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#27 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#28 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

Indirect leak of 8000 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x20730b5 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:59:15
    #2 0x2073b01 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:93:15
    #3 0x3ab496c in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:257:19
    #4 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #5 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #6 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#7 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#8 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#9 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#10 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#11 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#12 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#13 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#14 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#15 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#16 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#17 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#18 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#19 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#20 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#21 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#22 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#23 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#24 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#25 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#26 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#27 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#28 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#29 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

Indirect leak of 4800 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c881 in realloc_buffer (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c881)
    #4 0x3e2c834 in vterm_screen_enable_altscreen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c834)
    #5 0x3ab2709 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:228:3
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 4800 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c881 in realloc_buffer (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c881)
    #4 0x3e2c76f in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c76f)
    #5 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
    #6 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
    neovim#7 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#8 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#9 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#10 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#13 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#14 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#15 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#16 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#17 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#18 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#19 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#20 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#21 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#22 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#23 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#24 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#25 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#26 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#27 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#28 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#29 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26

Indirect leak of 2000 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c79e in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c79e)
    #4 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
    #5 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 1640 byte(s) in 1 object(s) allocated from:
    #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
    #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
    #2 0xea12a6 in common_job_init /home/travis/build/neovim/neovim/src/nvim/eval.c:21486:27
    #3 0xe55aae in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16343:27
    #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#9 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#10 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#13 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#14 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#15 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#16 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#17 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#18 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#19 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#20 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#21 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#22 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#23 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#24 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#25 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#26 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#27 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
    neovim#28 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

Indirect leak of 384 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f18b in vterm_state_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f18b)
    #4 0x3e2f047 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f047)
    #5 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 128 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2c6e3 in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c6e3)
    #4 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
    #5 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 112 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e3665d in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e3665d)
    #3 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
    #4 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e366dc in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e366dc)
    #4 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
    #5 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e3670d in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e3670d)
    #4 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
    #5 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
    #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f084 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f084)
    #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x20730b5 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:59:15
    #2 0x2073b01 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:93:15
    #3 0x117eb39 in queue_new /home/travis/build/neovim/neovim/src/nvim/event/queue.c:97:15
    #4 0x117fe77 in queue_new_child /home/travis/build/neovim/neovim/src/nvim/event/queue.c:92:10
    #5 0xea2077 in common_job_init /home/travis/build/neovim/neovim/src/nvim/eval.c:21492:18
    #6 0xe55aae in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16343:27
    neovim#7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

Indirect leak of 12 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f0d5 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f0d5)
    #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

Indirect leak of 7 byte(s) in 1 object(s) allocated from:
    #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
    #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
    #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
    #3 0x3e2f0b2 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f0b2)
    #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
    #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
    #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
    neovim#7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
    neovim#8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
    neovim#9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
    neovim#13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
    neovim#16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
    neovim#17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
    neovim#18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
    neovim#19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    neovim#20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
    neovim#21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
    neovim#22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
    neovim#23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
    neovim#24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
    neovim#25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
    neovim#26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
    neovim#27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
    neovim#28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
    neovim#29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

SUMMARY: AddressSanitizer: 30443 byte(s) leaked in 15 allocation(s).
justinmk added a commit to justinmk/neovim that referenced this pull request May 16, 2016
References #3958

Test provokes ASAN failure:

```
    =================================================================
    ==12124==ERROR: AddressSanitizer: heap-use-after-free on address 0x625000070928 at pc 0x000003abe56f bp 0x7fff3d320b10 sp 0x7fff3d320b08
    READ of size 8 at 0x625000070928 thread T0
        #0 0x3abe56e in terminal_receive /home/travis/build/neovim/neovim/src/nvim/terminal.c:541:21
        #1 0xeaf1c3 in on_job_output /home/travis/build/neovim/neovim/src/nvim/eval.c:21664:5
        #2 0xeadbe4 in on_job_stdout /home/travis/build/neovim/neovim/src/nvim/eval.c:21639:3
        #3 0x119d6d2 in read_event /home/travis/build/neovim/neovim/src/nvim/event/rstream.c:178:5
        #4 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #5 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #6 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #7 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #8 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #9 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
        #10 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226
        #11 0x46b268 in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x46b268)

    0x625000070928 is located 40 bytes inside of 8328-byte region [0x625000070900,0x625000072988)
    freed by thread T0 here:
        #0 0x4f1f72 in __interceptor_free (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f1f72)
        #1 0x2073ea5 in xfree /home/travis/build/neovim/neovim/src/nvim/memory.c:105:3
        #2 0x3ad386d in terminal_destroy /home/travis/build/neovim/neovim/src/nvim/terminal.c:507:5
        #3 0xea9b49 in term_close /home/travis/build/neovim/neovim/src/nvim/eval.c:21711:3
        #4 0x3abdd6b in terminal_close /home/travis/build/neovim/neovim/src/nvim/terminal.c:321:7
        #5 0x6d9355 in close_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:393:5
        #6 0x717505 in empty_curbuf /home/travis/build/neovim/neovim/src/nvim/buffer.c:842:5
        #7 0x6f9dc5 in do_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:988:14
        #8 0x70e054 in do_bufdel /home/travis/build/neovim/neovim/src/nvim/buffer.c:732:11
        #9 0x14b99da in ex_bunload /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:4373:17
        #10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #12 0x2520d32 in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4488:18
        #13 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #14 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #15 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #16 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
        #17 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

    previously allocated by thread T0 here:
        #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
        #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
        #2 0x3ab0bb8 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:215:18
        #3 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #9 0x2520d32 in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4488:18
        #10 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #11 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #12 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #13 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
        #14 0x2b30c093876c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

    SUMMARY: AddressSanitizer: heap-use-after-free /home/travis/build/neovim/neovim/src/nvim/terminal.c:541 terminal_receive
    Shadow bytes around the buggy address:
      0x0c4a800060d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c4a800060e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c4a800060f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c4a80006100: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c4a80006110: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
    =>0x0c4a80006120: fd fd fd fd fd[fd]fd fd fd fd fd fd fd fd fd fd
      0x0c4a80006130: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
      0x0c4a80006140: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
      0x0c4a80006150: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
      0x0c4a80006160: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
      0x0c4a80006170: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
    Shadow byte legend (one shadow byte represents 8 application bytes):
      Addressable:           00
      Partially addressable: 01 02 03 04 05 06 07
      Heap left redzone:       fa
      Heap right redzone:      fb
      Freed heap region:       fd
      Stack left redzone:      f1
      Stack mid redzone:       f2
      Stack right redzone:     f3
      Stack partial redzone:   f4
      Stack after return:      f5
      Stack use after scope:   f8
      Global redzone:          f9
      Global init order:       f6
      Poisoned by user:        f7
      Container overflow:      fc
      Array cookie:            ac
      Intra object redzone:    bb
      ASan internal:           fe
      Left alloca redzone:     ca
      Right alloca redzone:    cb
    ==12124==ABORTING

    =================================================================
    ==12138==ERROR: LeakSanitizer: detected memory leaks

    Indirect leak of 8328 byte(s) in 1 object(s) allocated from:
        #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
        #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
        #2 0x3ab0bb8 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:215:18
        #3 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #9 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #10 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #13 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #14 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #15 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #16 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #17 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #18 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #19 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #20 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #21 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #22 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #23 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #24 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #25 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #26 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #27 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
        #28 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

    Indirect leak of 8000 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x20730b5 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:59:15
        #2 0x2073b01 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:93:15
        #3 0x3ab496c in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:257:19
        #4 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #5 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #6 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #7 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #8 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #9 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #10 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #11 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #12 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #13 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #14 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #15 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #16 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #17 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #18 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #19 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #20 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #21 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #22 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #23 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #24 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #25 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #26 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #27 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #28 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
        #29 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

    Indirect leak of 4800 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e2c881 in realloc_buffer (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c881)
        #4 0x3e2c834 in vterm_screen_enable_altscreen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c834)
        #5 0x3ab2709 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:228:3
        #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

    Indirect leak of 4800 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e2c881 in realloc_buffer (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c881)
        #4 0x3e2c76f in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c76f)
        #5 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
        #6 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
        #7 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #8 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #9 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #10 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #13 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #14 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #15 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #16 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #17 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #18 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #19 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #20 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #21 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #22 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #23 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #24 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #25 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #26 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #27 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #28 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #29 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26

    Indirect leak of 2000 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e2c79e in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c79e)
        #4 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
        #5 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
        #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

    Indirect leak of 1640 byte(s) in 1 object(s) allocated from:
        #0 0x4f23cb in calloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f23cb)
        #1 0x2074608 in xcalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:119:15
        #2 0xea12a6 in common_job_init /home/travis/build/neovim/neovim/src/nvim/eval.c:21486:27
        #3 0xe55aae in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16343:27
        #4 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #5 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #6 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #7 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #8 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #9 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #10 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #11 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #12 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #13 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #14 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #15 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #16 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #17 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #18 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #19 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #20 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #21 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #22 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #23 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #24 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #25 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #26 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #27 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3
        #28 0x2ba0dea5f76c in __libc_start_main /build/eglibc-rrybNj/eglibc-2.15/csu/libc-start.c:226

    Indirect leak of 384 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e2f18b in vterm_state_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f18b)
        #4 0x3e2f047 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f047)
        #5 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
        #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

    Indirect leak of 128 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e2c6e3 in screen_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c6e3)
        #4 0x3e2c677 in vterm_obtain_screen (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2c677)
        #5 0x3ab229f in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:227:13
        #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

    Indirect leak of 112 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e3665d in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e3665d)
        #3 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
        #4 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
        #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

    Indirect leak of 64 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e366dc in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e366dc)
        #4 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
        #5 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
        #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

    Indirect leak of 64 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e3670d in vterm_new_with_allocator (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e3670d)
        #4 0x3e36623 in vterm_new (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36623)
        #5 0x3ab199a in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:222:12
        #6 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

    Indirect leak of 64 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e2f084 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f084)
        #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
        #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

    Indirect leak of 40 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x20730b5 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:59:15
        #2 0x2073b01 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:93:15
        #3 0x117eb39 in queue_new /home/travis/build/neovim/neovim/src/nvim/event/queue.c:97:15
        #4 0x117fe77 in queue_new_child /home/travis/build/neovim/neovim/src/nvim/event/queue.c:92:10
        #5 0xea2077 in common_job_init /home/travis/build/neovim/neovim/src/nvim/eval.c:21492:18
        #6 0xe55aae in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16343:27
        #7 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #8 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #9 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #10 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #11 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #12 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #13 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #14 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #15 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #16 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #17 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #18 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #19 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #20 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #21 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #22 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #23 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #24 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #25 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #26 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #27 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #28 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #29 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3

    Indirect leak of 12 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e2f0d5 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f0d5)
        #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
        #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

    Indirect leak of 7 byte(s) in 1 object(s) allocated from:
        #0 0x4f2252 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f2252)
        #1 0x3e37648 in default_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e37648)
        #2 0x3e36752 in vterm_allocator_malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e36752)
        #3 0x3e2f0b2 in vterm_obtain_state (/home/travis/build/neovim/neovim/build/bin/nvim+0x3e2f0b2)
        #4 0x3ab2031 in terminal_open /home/travis/build/neovim/neovim/src/nvim/terminal.c:225:23
        #5 0xe59e77 in f_termopen /home/travis/build/neovim/neovim/src/nvim/eval.c:16380:20
        #6 0xb76afa in call_func /home/travis/build/neovim/neovim/src/nvim/eval.c:7256:21
        #7 0xbae096 in get_func_tv /home/travis/build/neovim/neovim/src/nvim/eval.c:7105:11
        #8 0xb9e700 in ex_call /home/travis/build/neovim/neovim/src/nvim/eval.c:2761:9
        #9 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #10 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #11 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #12 0x1527f8d in ex_terminal /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:9515:3
        #13 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #14 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #15 0x138a55d in do_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2611:3
        #16 0x1380347 in cmd_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2323:12
        #17 0x1380853 in ex_source /home/travis/build/neovim/neovim/src/nvim/ex_cmds2.c:2301:3
        #18 0x141c2e0 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2191:15
        #19 0x13ce683 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
        #20 0x13dd51c in do_cmdline_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:274:10
        #21 0x68414a in vim_command /home/travis/build/neovim/neovim/src/nvim/api/vim.c:43:3
        #22 0x599ed9 in handle_vim_command /home/travis/build/neovim/neovim/build/src/nvim/auto/msgpack_dispatch.c:2128:3
        #23 0x23488a5 in on_request_event /home/travis/build/neovim/neovim/src/nvim/msgpack_rpc/channel.c:481:19
        #24 0x118ff42 in queue_process_events /home/travis/build/neovim/neovim/src/nvim/event/queue.c:142:7
        #25 0x25cb680 in nv_event /home/travis/build/neovim/neovim/src/nvim/normal.c:7876:3
        #26 0x249e003 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:12
        #27 0x3822fb3 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:55:26
        #28 0x23e3a34 in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:464:3
        #29 0x1cfcd37 in main /home/travis/build/neovim/neovim/src/nvim/main.c:538:3

    SUMMARY: AddressSanitizer: 30443 byte(s) leaked in 15 allocation(s).
```
justinmk added a commit to justinmk/neovim that referenced this pull request Sep 23, 2016
Because terminfo_stop() already ran, there is not much reason to wait
for the loop to teardown.

Helped-by: Björn Linse <bjorn.linse@gmail.com>
Helped-by: oni-link <knil.ino@gmail.com>

Closes neovim#4778
References neovim#3541
---
Bug report:

> After pressing `ZZ` I can find two threads freezing, occupying 100% CPU:
    |-systemd-+
              |-nvim,11567 /home/lz/code/1.rs +set title
              |   `-{nvim},11574

> 11567 has two threads:
    (gdb) info threads
      Id   Target Id         Frame
    * 1    Thread 0x7f7622907780 (LWP 11567) "nvim" 0x00007f76222e66bd in pthread_join () from /usr/lib/libpthread.so.0
      2    Thread 0x7f761f5ff700 (LWP 11574) "nvim" 0x00007ffcec9e9c59 in clock_gettime ()

    (gdb) thread apply all  bt

    Thread 2 (Thread 0x7f761f5ff700 (LWP 11574)):
    #0  0x00007ffcec9e9c59 in clock_gettime ()
    #1  0x00007f76210b9356 in clock_gettime () from /usr/lib/libc.so.6
    #2  0x00007f7622513e3c in ?? () from /usr/lib/libuv.so.1
    #3  0x00007f7622505e94 in uv_run () from /usr/lib/libuv.so.1
    #4  0x00000000004822ed in loop_close (loop=loop@entry=0x7f761f5fe870) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/loop.c:87
    #5  0x00000000005a7ec0 in tui_main (bridge=0x7f761f6ac000, ui=0x7f761f69ace0) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/tui/tui.c:234
    #6  0x00000000005a9b47 in ui_thread_run (data=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui_bridge.c:87
    neovim#7  0x00007f7622510d07 in ?? () from /usr/lib/libuv.so.1
    neovim#8  0x00007f76222e5474 in start_thread () from /usr/lib/libpthread.so.0
    neovim#9  0x00007f76210ac69d in clone () from /usr/lib/libc.so.6

    Thread 1 (Thread 0x7f7622907780 (LWP 11567)):
    #0  0x00007f76222e66bd in pthread_join () from /usr/lib/libpthread.so.0
    #1  0x00007f7622510dae in uv_thread_join () from /usr/lib/libuv.so.1
    #2  0x00000000005aac9e in ui_bridge_stop (b=0x7f761f6ac000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui_bridge.c:104
    #3  0x00000000005a90e4 in ui_builtin_stop () at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui.c:91
    #4  0x000000000052be09 in mch_exit (r=r@entry=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os_unix.c:143
    #5  0x00000000004db1cc in getout (exitval=exitval@entry=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/main.c:623
    #6  0x00000000004fa43c in preserve_exit () at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/misc1.c:2652
    neovim#7  0x000000000052b77a in deadly_signal (signum=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/signal.c:120
    neovim#8  0x000000000052b7cf in on_signal (handle=<optimized out>, signum=<optimized out>, data=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/signal.c:145
    neovim#9  0x0000000000484178 in signal_event (argv=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/signal.c:44
    neovim#10 0x0000000000483b7f in queue_process_events (queue=0x7f7620417360) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/queue.c:142
    neovim#11 0x0000000000482208 in loop_poll_events (loop=0x84dec0 <loop>, ms=ms@entry=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/loop.c:56
    neovim#12 0x000000000052a364 in input_poll (ms=ms@entry=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:325
    neovim#13 0x000000000052a3e2 in inbuf_poll (ms=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:347
    neovim#14 0x000000000052a839 in os_inchar (buf=buf@entry=0x0, maxlen=maxlen@entry=0, ms=ms@entry=-1, tb_change_cnt=tb_change_cnt@entry=0) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:107
    neovim#15 0x0000000000592eeb in state_enter (s=s@entry=0x7ffcec9d3560) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/state.c:46
    neovim#16 0x0000000000508533 in normal_enter (cmdwin=cmdwin@entry=false, noexmode=noexmode@entry=false) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/normal.c:464
    neovim#17 0x00000000004dc17e in main (argc=<optimized out>, argv=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/main.c:538
justinmk added a commit to justinmk/neovim that referenced this pull request Sep 24, 2016
Because terminfo_stop() already ran, there is not much reason to wait
for the loop to teardown.

Helped-by: Björn Linse <bjorn.linse@gmail.com>
Helped-by: oni-link <knil.ino@gmail.com>

Closes neovim#4778
References neovim#3541
---
Bug report:

> After pressing `ZZ` I can find two threads freezing, occupying 100% CPU:
    |-systemd-+
              |-nvim,11567 /home/lz/code/1.rs +set title
              |   `-{nvim},11574

> 11567 has two threads:
    (gdb) info threads
      Id   Target Id         Frame
    * 1    Thread 0x7f7622907780 (LWP 11567) "nvim" 0x00007f76222e66bd in pthread_join () from /usr/lib/libpthread.so.0
      2    Thread 0x7f761f5ff700 (LWP 11574) "nvim" 0x00007ffcec9e9c59 in clock_gettime ()

    (gdb) thread apply all  bt

    Thread 2 (Thread 0x7f761f5ff700 (LWP 11574)):
    #0  0x00007ffcec9e9c59 in clock_gettime ()
    #1  0x00007f76210b9356 in clock_gettime () from /usr/lib/libc.so.6
    #2  0x00007f7622513e3c in ?? () from /usr/lib/libuv.so.1
    #3  0x00007f7622505e94 in uv_run () from /usr/lib/libuv.so.1
    #4  0x00000000004822ed in loop_close (loop=loop@entry=0x7f761f5fe870) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/loop.c:87
    #5  0x00000000005a7ec0 in tui_main (bridge=0x7f761f6ac000, ui=0x7f761f69ace0) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/tui/tui.c:234
    #6  0x00000000005a9b47 in ui_thread_run (data=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui_bridge.c:87
    neovim#7  0x00007f7622510d07 in ?? () from /usr/lib/libuv.so.1
    neovim#8  0x00007f76222e5474 in start_thread () from /usr/lib/libpthread.so.0
    neovim#9  0x00007f76210ac69d in clone () from /usr/lib/libc.so.6

    Thread 1 (Thread 0x7f7622907780 (LWP 11567)):
    #0  0x00007f76222e66bd in pthread_join () from /usr/lib/libpthread.so.0
    #1  0x00007f7622510dae in uv_thread_join () from /usr/lib/libuv.so.1
    #2  0x00000000005aac9e in ui_bridge_stop (b=0x7f761f6ac000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui_bridge.c:104
    #3  0x00000000005a90e4 in ui_builtin_stop () at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui.c:91
    #4  0x000000000052be09 in mch_exit (r=r@entry=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os_unix.c:143
    #5  0x00000000004db1cc in getout (exitval=exitval@entry=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/main.c:623
    #6  0x00000000004fa43c in preserve_exit () at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/misc1.c:2652
    neovim#7  0x000000000052b77a in deadly_signal (signum=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/signal.c:120
    neovim#8  0x000000000052b7cf in on_signal (handle=<optimized out>, signum=<optimized out>, data=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/signal.c:145
    neovim#9  0x0000000000484178 in signal_event (argv=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/signal.c:44
    neovim#10 0x0000000000483b7f in queue_process_events (queue=0x7f7620417360) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/queue.c:142
    neovim#11 0x0000000000482208 in loop_poll_events (loop=0x84dec0 <loop>, ms=ms@entry=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/loop.c:56
    neovim#12 0x000000000052a364 in input_poll (ms=ms@entry=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:325
    neovim#13 0x000000000052a3e2 in inbuf_poll (ms=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:347
    neovim#14 0x000000000052a839 in os_inchar (buf=buf@entry=0x0, maxlen=maxlen@entry=0, ms=ms@entry=-1, tb_change_cnt=tb_change_cnt@entry=0) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:107
    neovim#15 0x0000000000592eeb in state_enter (s=s@entry=0x7ffcec9d3560) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/state.c:46
    neovim#16 0x0000000000508533 in normal_enter (cmdwin=cmdwin@entry=false, noexmode=noexmode@entry=false) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/normal.c:464
    neovim#17 0x00000000004dc17e in main (argc=<optimized out>, argv=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/main.c:538
justinmk added a commit that referenced this pull request Sep 24, 2016
Because terminfo_stop() already ran, there is not much reason to wait
for the loop to teardown.

Helped-by: Björn Linse <bjorn.linse@gmail.com>
Helped-by: oni-link <knil.ino@gmail.com>

Closes #4778
References #3541
---
Bug report:

> After pressing `ZZ` I can find two threads freezing, occupying 100% CPU:
    |-systemd-+
              |-nvim,11567 /home/lz/code/1.rs +set title
              |   `-{nvim},11574

> 11567 has two threads:
    (gdb) info threads
      Id   Target Id         Frame
    * 1    Thread 0x7f7622907780 (LWP 11567) "nvim" 0x00007f76222e66bd in pthread_join () from /usr/lib/libpthread.so.0
      2    Thread 0x7f761f5ff700 (LWP 11574) "nvim" 0x00007ffcec9e9c59 in clock_gettime ()

    (gdb) thread apply all  bt

    Thread 2 (Thread 0x7f761f5ff700 (LWP 11574)):
    #0  0x00007ffcec9e9c59 in clock_gettime ()
    #1  0x00007f76210b9356 in clock_gettime () from /usr/lib/libc.so.6
    #2  0x00007f7622513e3c in ?? () from /usr/lib/libuv.so.1
    #3  0x00007f7622505e94 in uv_run () from /usr/lib/libuv.so.1
    #4  0x00000000004822ed in loop_close (loop=loop@entry=0x7f761f5fe870) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/loop.c:87
    #5  0x00000000005a7ec0 in tui_main (bridge=0x7f761f6ac000, ui=0x7f761f69ace0) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/tui/tui.c:234
    #6  0x00000000005a9b47 in ui_thread_run (data=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui_bridge.c:87
    #7  0x00007f7622510d07 in ?? () from /usr/lib/libuv.so.1
    #8  0x00007f76222e5474 in start_thread () from /usr/lib/libpthread.so.0
    #9  0x00007f76210ac69d in clone () from /usr/lib/libc.so.6

    Thread 1 (Thread 0x7f7622907780 (LWP 11567)):
    #0  0x00007f76222e66bd in pthread_join () from /usr/lib/libpthread.so.0
    #1  0x00007f7622510dae in uv_thread_join () from /usr/lib/libuv.so.1
    #2  0x00000000005aac9e in ui_bridge_stop (b=0x7f761f6ac000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui_bridge.c:104
    #3  0x00000000005a90e4 in ui_builtin_stop () at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/ui.c:91
    #4  0x000000000052be09 in mch_exit (r=r@entry=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os_unix.c:143
    #5  0x00000000004db1cc in getout (exitval=exitval@entry=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/main.c:623
    #6  0x00000000004fa43c in preserve_exit () at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/misc1.c:2652
    #7  0x000000000052b77a in deadly_signal (signum=1) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/signal.c:120
    #8  0x000000000052b7cf in on_signal (handle=<optimized out>, signum=<optimized out>, data=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/signal.c:145
    #9  0x0000000000484178 in signal_event (argv=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/signal.c:44
    #10 0x0000000000483b7f in queue_process_events (queue=0x7f7620417360) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/queue.c:142
    #11 0x0000000000482208 in loop_poll_events (loop=0x84dec0 <loop>, ms=ms@entry=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/event/loop.c:56
    #12 0x000000000052a364 in input_poll (ms=ms@entry=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:325
    #13 0x000000000052a3e2 in inbuf_poll (ms=4000) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:347
    #14 0x000000000052a839 in os_inchar (buf=buf@entry=0x0, maxlen=maxlen@entry=0, ms=ms@entry=-1, tb_change_cnt=tb_change_cnt@entry=0) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/os/input.c:107
    #15 0x0000000000592eeb in state_enter (s=s@entry=0x7ffcec9d3560) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/state.c:46
    #16 0x0000000000508533 in normal_enter (cmdwin=cmdwin@entry=false, noexmode=noexmode@entry=false) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/normal.c:464
    #17 0x00000000004dc17e in main (argc=<optimized out>, argv=<optimized out>) at /tmp/yaourt-tmp-lz/aur-neovim-git/src/neovim-git/src/nvim/main.c:538
@teto teto mentioned this pull request Oct 30, 2016
@chimay chimay mentioned this pull request Dec 22, 2016
justinmk pushed a commit to justinmk/neovim that referenced this pull request Feb 11, 2017
Does not actually matter for most uses, but critical for mark&sweep garbage
collector.

Closes neovim#5234
Closes neovim#5774
Closes neovim#5817
Closes neovim#5883
Closes neovim#5934
Closes neovim#5970
Closes neovim#5548

Helped-by: James McCoy <jamessan@jamessan.com>
Helped-by: Tommy Allen <tommy@esdf.io>
Helped-by: Justin M. Keyes <justinkz@gmail.com>

Sample backtrace showing dv_copyID being overwritten by clear_tv, which
allows it to be collected by garbage_collect .. free_unref_items:

    Old value = 152911
    New value = 152912
    0x00000000004938e5 in encode_vim_to_nothing (ignored=0x7fb6348f3b20, top_tv=0x7fb6348f3b20, objname=0x6d62e9 "clear_tv argument") at ../src/nvim/eval/typval_encode.c.h:641
    641               cur_mpsv->data.d.dict->dv_copyID = copyID - 1;
    (rr) bt
    #0  0x00000000004938e5 in encode_vim_to_nothing (ignored=0x7fb6348f3b20, top_tv=0x7fb6348f3b20, objname=0x6d62e9 "clear_tv argument") at ../src/nvim/eval/typval_encode.c.h:641
    #1  0x0000000000485dee in clear_tv (varp=0x7fb6348f3b20) at /home/foo/src/github.com/neovim/src/nvim/eval.c:19876
    #2  0x0000000000494e5e in vars_clear_ext (ht=0x7fb634351460, free_val=1) at /home/foo/src/github.com/neovim/src/nvim/eval.c:20378
    #3  0x0000000000494dca in vars_clear (ht=0x7fb634351460) at /home/foo/src/github.com/neovim/src/nvim/eval.c:20355
    #4  0x000000000048efa3 in free_funccal (fc=0x7fb634351200, free_val=0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:22927
    #5  0x0000000000491d8f in call_user_func (fp=0x7fb6340ae4e0, argcount=0, argvars=0x7ffdd216a050, rettv=0x7ffdd216a2b0, firstline=2, lastline=2, selfdict=0x0)
        at /home/foo/src/github.com/neovim/src/nvim/eval.c:22818
    #6  0x00000000004873a4 in call_func (funcname=0x7fb6348ba3e0 "vimfiler#view#_redraw_screen", len=28, rettv=0x7ffdd216a2b0, argcount_in=0, argvars_in=0x7ffdd216a050, argv_func=0x0, firstline=2,
        lastline=2, doesrange=0x7ffdd216a2ac, evaluate=true, partial=0x0, selfdict_in=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7687
    neovim#7  0x000000000048a6f0 in get_func_tv (name=0x7fb6348ba3e0 "vimfiler#view#_redraw_screen", len=28, rettv=0x7ffdd216a2b0, arg=0x7ffdd216a2c8, firstline=2, lastline=2, doesrange=0x7ffdd216a2ac,
        evaluate=1, partial=0x0, selfdict=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7459
    neovim#8  0x0000000000489691 in ex_call (eap=0x7ffdd216a598) at /home/foo/src/github.com/neovim/src/nvim/eval.c:2817
    neovim#9  0x00000000004fae46 in do_one_cmd (cmdlinep=0x7ffdd216a878, flags=7, cstack=0x7ffdd216a880, fgetline=0x4f7c30 <get_loop_line>, cookie=0x7ffdd216a7f8)
        at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198
    neovim#10 0x00000000004f6ae3 in do_cmdline (cmdline=0x0, fgetline=0x499f50 <get_func_line>, cookie=0x7fb634350800, flags=7) at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601
    neovim#11 0x00000000004918c0 in call_user_func (fp=0x7fb6340ae6a0, argcount=0, argvars=0x7ffdd216b6d0, rettv=0x7ffdd216b930, firstline=2, lastline=2, selfdict=0x0)
        at /home/foo/src/github.com/neovim/src/nvim/eval.c:22728
    neovim#12 0x00000000004873a4 in call_func (funcname=0x7fb6348f3ee0 "vimfiler#view#_redraw_all_vimfiler", len=34, rettv=0x7ffdd216b930, argcount_in=0, argvars_in=0x7ffdd216b6d0, argv_func=0x0,
        firstline=2, lastline=2, doesrange=0x7ffdd216b92c, evaluate=true, partial=0x0, selfdict_in=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7687
    neovim#13 0x000000000048a6f0 in get_func_tv (name=0x7fb6348f3ee0 "vimfiler#view#_redraw_all_vimfiler", len=34, rettv=0x7ffdd216b930, arg=0x7ffdd216b948, firstline=2, lastline=2, doesrange=0x7ffdd216b92c,
        evaluate=1, partial=0x0, selfdict=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7459
    neovim#14 0x0000000000489691 in ex_call (eap=0x7ffdd216bc18) at /home/foo/src/github.com/neovim/src/nvim/eval.c:2817
    neovim#15 0x00000000004fae46 in do_one_cmd (cmdlinep=0x7ffdd216bef8, flags=7, cstack=0x7ffdd216bf00, fgetline=0x539820 <getnextac>, cookie=0x7ffdd216c508)
        at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198
    neovim#16 0x00000000004f6ae3 in do_cmdline (cmdline=0x0, fgetline=0x539820 <getnextac>, cookie=0x7ffdd216c508, flags=7) at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601
    neovim#17 0x00000000005390ee in apply_autocmds_group (event=EVENT_VIMRESIZED, fname=0x7fb6348ed2c0 "/home/foo/src/github.com/neovim/build/vimfiler:default", fname_io=0x0, force=false, group=-3,
        buf=0x7fb634858000, eap=0x0) at /home/foo/src/github.com/neovim/src/nvim/fileio.c:6882
    neovim#18 0x000000000052f67c in apply_autocmds (event=EVENT_VIMRESIZED, fname=0x0, fname_io=0x0, force=false, buf=0x7fb634858000) at /home/foo/src/github.com/neovim/src/nvim/fileio.c:6527
    neovim#19 0x0000000000640df2 in screenalloc (doclear=false) at /home/foo/src/github.com/neovim/src/nvim/screen.c:6234
    neovim#20 0x00000000006320d2 in screenclear () at /home/foo/src/github.com/neovim/src/nvim/screen.c:6277
    neovim#21 0x0000000000641edf in screen_resize (width=49, height=56) at /home/foo/src/github.com/neovim/src/nvim/screen.c:7366
    neovim#22 0x00000000006b2d82 in ui_refresh () at /home/foo/src/github.com/neovim/src/nvim/ui.c:175
    neovim#23 0x00000000006b3121 in ui_refresh_event (argv=0x7ffdd216c748) at /home/foo/src/github.com/neovim/src/nvim/ui.c:181
    neovim#24 0x00000000004d8297 in multiqueue_process_events (this=0x7fb634812370) at /home/foo/src/github.com/neovim/src/nvim/event/multiqueue.c:146
    neovim#25 0x00000000004d7616 in loop_poll_events (loop=0x96e900 <main_loop>, ms=-1) at /home/foo/src/github.com/neovim/src/nvim/event/loop.c:56
    neovim#26 0x00000000005eb635 in input_poll (ms=-1) at /home/foo/src/github.com/neovim/src/nvim/os/input.c:326
    neovim#27 0x00000000005ea700 in inbuf_poll (ms=-1) at /home/foo/src/github.com/neovim/src/nvim/os/input.c:348
    neovim#28 0x00000000005ea61d in os_inchar (buf=0x0, maxlen=0, ms=-1, tb_change_cnt=0) at /home/foo/src/github.com/neovim/src/nvim/os/input.c:110
    neovim#29 0x000000000068e0af in state_enter (s=0x7ffdd216c888) at /home/foo/src/github.com/neovim/src/nvim/state.c:49
    neovim#30 0x00000000005ac514 in normal_enter (cmdwin=false, noexmode=false) at /home/foo/src/github.com/neovim/src/nvim/normal.c:463
    neovim#31 0x0000000000565c62 in main (argc=9, argv=0x7ffdd216cc28) at /home/foo/src/github.com/neovim/src/nvim/main.c:540

ASAN trace after provoking the bug with VimFiler:
=================================================================
==8540==ERROR: AddressSanitizer: heap-use-after-free on address 0x613000054748 at pc 0x0000007d1dd8 bp 0x7ffe71be6660 sp 0x7ffe71be6658
READ of size 4 at 0x613000054748 thread T0
    #0 0x7d1dd7 in copy_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:20116:37
    #1 0x87b92c in f_get /home/foo/src/github.com/neovim/src/nvim/eval.c:9895:5
    #2 0x7b35c0 in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7286:11
    #3 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    #4 0x8667f9 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4353:15
    #5 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    #6 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    neovim#7 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    neovim#8 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    neovim#9 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    neovim#10 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    neovim#11 0x7abe36 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3494:9
    neovim#12 0x7a9ecc in eval0 /home/foo/src/github.com/neovim/src/nvim/eval.c:3420:9
    neovim#13 0x830cac in ex_return /home/foo/src/github.com/neovim/src/nvim/eval.c:22191:10
    neovim#14 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#15 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    neovim#17 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    neovim#18 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    neovim#19 0x8667f9 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4353:15
    neovim#20 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    neovim#21 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    neovim#22 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    neovim#23 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    neovim#24 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    neovim#25 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    neovim#26 0x7a9ecc in eval0 /home/foo/src/github.com/neovim/src/nvim/eval.c:3420:9
    neovim#27 0x7b78f2 in ex_let /home/foo/src/github.com/neovim/src/nvim/eval.c:1479:9
    neovim#28 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#29 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#30 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    neovim#31 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    neovim#32 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    neovim#33 0x7c1d3d in ex_call /home/foo/src/github.com/neovim/src/nvim/eval.c:2843:9
    neovim#34 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#35 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#36 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    neovim#37 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    neovim#38 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    neovim#39 0x7c1d3d in ex_call /home/foo/src/github.com/neovim/src/nvim/eval.c:2843:9
    neovim#40 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#41 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#42 0xca2918 in apply_autocmds_group /home/foo/src/github.com/neovim/src/nvim/fileio.c:6882:5
    neovim#43 0xc6c446 in apply_autocmds /home/foo/src/github.com/neovim/src/nvim/fileio.c:6527:10
    neovim#44 0x140f374 in screenalloc /home/foo/src/github.com/neovim/src/nvim/screen.c:6234:5
    neovim#45 0x13958d1 in screenclear /home/foo/src/github.com/neovim/src/nvim/screen.c:6277:3
    neovim#46 0x1417573 in screen_resize /home/foo/src/github.com/neovim/src/nvim/screen.c:7366:5
    neovim#47 0x17fb59b in ui_refresh /home/foo/src/github.com/neovim/src/nvim/ui.c:175:3
    neovim#48 0x17fc100 in ui_refresh_event /home/foo/src/github.com/neovim/src/nvim/ui.c:181:3
    neovim#49 0xa05bbf in multiqueue_process_events /home/foo/src/github.com/neovim/src/nvim/event/multiqueue.c:146:7
    neovim#50 0x9ff8b6 in loop_poll_events /home/foo/src/github.com/neovim/src/nvim/event/loop.c:56:3
    neovim#51 0x120d584 in input_poll /home/foo/src/github.com/neovim/src/nvim/os/input.c:326:3
    neovim#52 0x12092ef in inbuf_poll /home/foo/src/github.com/neovim/src/nvim/os/input.c:348:24
    neovim#53 0x1209193 in os_inchar /home/foo/src/github.com/neovim/src/nvim/os/input.c:110:18
    neovim#54 0x16d3615 in state_enter /home/foo/src/github.com/neovim/src/nvim/state.c:49:13
    neovim#55 0x101090b in normal_enter /home/foo/src/github.com/neovim/src/nvim/normal.c:463:3
    neovim#56 0xdd0a82 in main /home/foo/src/github.com/neovim/src/nvim/main.c:542:3
    neovim#57 0x7f3c61df42b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
    neovim#58 0x44b959 in _start (/home/foo/src/github.com/neovim/build/bin/nvim+0x44b959)

0x613000054748 is located 8 bytes inside of 352-byte region [0x613000054740,0x6130000548a0)
freed by thread T0 here:
    #0 0x4e9d70 in __interceptor_cfree.localalias.0 (/home/foo/src/github.com/neovim/build/bin/nvim+0x4e9d70)
    #1 0xefa184 in xfree /home/foo/src/github.com/neovim/src/nvim/memory.c:130:3
    #2 0x7e52b5 in dict_free_dict /home/foo/src/github.com/neovim/src/nvim/eval.c:6431:3
    #3 0x7e1e2c in free_unref_items /home/foo/src/github.com/neovim/src/nvim/eval.c:6063:7
    #4 0x7946cd in garbage_collect /home/foo/src/github.com/neovim/src/nvim/eval.c:5985:16
    #5 0xd08f4f in before_blocking /home/foo/src/github.com/neovim/src/nvim/getchar.c:1331:5
    #6 0x1209157 in os_inchar /home/foo/src/github.com/neovim/src/nvim/os/input.c:109:9
    neovim#7 0x16d3615 in state_enter /home/foo/src/github.com/neovim/src/nvim/state.c:49:13
    neovim#8 0x101090b in normal_enter /home/foo/src/github.com/neovim/src/nvim/normal.c:463:3
    neovim#9 0xdd0a82 in main /home/foo/src/github.com/neovim/src/nvim/main.c:542:3
    neovim#10 0x7f3c61df42b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)

previously allocated by thread T0 here:
    #0 0x4e9f08 in malloc (/home/foo/src/github.com/neovim/build/bin/nvim+0x4e9f08)
    #1 0xef9ee4 in try_malloc /home/foo/src/github.com/neovim/src/nvim/memory.c:84:15
    #2 0xefa0a4 in xmalloc /home/foo/src/github.com/neovim/src/nvim/memory.c:118:15
    #3 0x78bcc6 in dict_alloc /home/foo/src/github.com/neovim/src/nvim/eval.c:6321:15
    #4 0x86dc02 in get_dict_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:6789:9
    #5 0x865751 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4296:21
    #6 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    neovim#7 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    neovim#8 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    neovim#9 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    neovim#10 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    neovim#11 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    neovim#12 0x7a9ecc in eval0 /home/foo/src/github.com/neovim/src/nvim/eval.c:3420:9
    neovim#13 0x7b78f2 in ex_let /home/foo/src/github.com/neovim/src/nvim/eval.c:1479:9
    neovim#14 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#15 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    neovim#17 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    neovim#18 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    neovim#19 0x8667f9 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4353:15
    neovim#20 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    neovim#21 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    neovim#22 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    neovim#23 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    neovim#24 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    neovim#25 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    neovim#26 0x93f89a in filter_map_one /home/foo/src/github.com/neovim/src/nvim/eval.c:9398:7
    neovim#27 0x93f33a in filter_map /home/foo/src/github.com/neovim/src/nvim/eval.c:9372:13
    neovim#28 0x8ceb57 in f_map /home/foo/src/github.com/neovim/src/nvim/eval.c:12900:3
    neovim#29 0x7b35c0 in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7286:11

SUMMARY: AddressSanitizer: heap-use-after-free /home/foo/src/github.com/neovim/src/nvim/eval.c:20116:37 in copy_tv
Shadow bytes around the buggy address:
  0x0c2680002890: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c26800028a0: fd fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c26800028b0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c26800028c0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c26800028d0: fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa
=>0x0c26800028e0: fa fa fa fa fa fa fa fa fd[fd]fd fd fd fd fd fd
  0x0c26800028f0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2680002900: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2680002910: fd fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c2680002920: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2680002930: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==8540==ABORTING
justinmk pushed a commit to justinmk/neovim that referenced this pull request Feb 11, 2017
Does not actually matter for most uses, but critical for mark&sweep garbage
collector.

Closes neovim#5234
Closes neovim#5774
Closes neovim#5817
Closes neovim#5883
Closes neovim#5934
Closes neovim#5970
Closes neovim#5548

Helped-by: James McCoy <jamessan@jamessan.com>
Helped-by: Tommy Allen <tommy@esdf.io>
Helped-by: Justin M. Keyes <justinkz@gmail.com>

---

Steps to reproduce:

    Compile fb97457 with:
       CC=clang CFLAGS=" -O0 -g -DEXITFREE " cmake .. -DMIN_LOG_LEVEL=0 -DCMAKE_BUILD_TYPE=Debug -DBUSTED_OUTPUT_TYPE=utf
       -DCMAKE_INSTALL_PREFIX=$PWD/root -DJEMALLOC_USE_BUNDLED=1 -DCLANG_ASAN_UBSAN=ON -DPREFER_LUAJIT=false

    Directory `crash` contains:
    1. unite directory with Shougo/unite.vim@be09b0e
    2. vimfiler directory with Shougo/vimfiler.vim@72c37e8
    3. `init.vim` with a single line which sets `&rtp` to the above two directories (absolute path).

    bin/nvim -u ../crash/init.vim -i NONE --headless -s <(<<< $':split\n:VimFiler\n\C-ww:call garbagecollect()\n\C-w\C-w\C-w')

---

Sample backtrace showing dv_copyID being overwritten by clear_tv, which
allows it to be collected by garbage_collect .. free_unref_items:

    Old value = 152911
    New value = 152912
    0x00000000004938e5 in encode_vim_to_nothing (ignored=0x7fb6348f3b20, top_tv=0x7fb6348f3b20, objname=0x6d62e9 "clear_tv argument") at ../src/nvim/eval/typval_encode.c.h:641
    641               cur_mpsv->data.d.dict->dv_copyID = copyID - 1;
    (rr) bt
    #0  0x00000000004938e5 in encode_vim_to_nothing (ignored=0x7fb6348f3b20, top_tv=0x7fb6348f3b20, objname=0x6d62e9 "clear_tv argument") at ../src/nvim/eval/typval_encode.c.h:641
    #1  0x0000000000485dee in clear_tv (varp=0x7fb6348f3b20) at /home/foo/src/github.com/neovim/src/nvim/eval.c:19876
    #2  0x0000000000494e5e in vars_clear_ext (ht=0x7fb634351460, free_val=1) at /home/foo/src/github.com/neovim/src/nvim/eval.c:20378
    #3  0x0000000000494dca in vars_clear (ht=0x7fb634351460) at /home/foo/src/github.com/neovim/src/nvim/eval.c:20355
    #4  0x000000000048efa3 in free_funccal (fc=0x7fb634351200, free_val=0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:22927
    #5  0x0000000000491d8f in call_user_func (fp=0x7fb6340ae4e0, argcount=0, argvars=0x7ffdd216a050, rettv=0x7ffdd216a2b0, firstline=2, lastline=2, selfdict=0x0)
        at /home/foo/src/github.com/neovim/src/nvim/eval.c:22818
    #6  0x00000000004873a4 in call_func (funcname=0x7fb6348ba3e0 "vimfiler#view#_redraw_screen", len=28, rettv=0x7ffdd216a2b0, argcount_in=0, argvars_in=0x7ffdd216a050, argv_func=0x0, firstline=2,
        lastline=2, doesrange=0x7ffdd216a2ac, evaluate=true, partial=0x0, selfdict_in=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7687
    neovim#7  0x000000000048a6f0 in get_func_tv (name=0x7fb6348ba3e0 "vimfiler#view#_redraw_screen", len=28, rettv=0x7ffdd216a2b0, arg=0x7ffdd216a2c8, firstline=2, lastline=2, doesrange=0x7ffdd216a2ac,
        evaluate=1, partial=0x0, selfdict=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7459
    neovim#8  0x0000000000489691 in ex_call (eap=0x7ffdd216a598) at /home/foo/src/github.com/neovim/src/nvim/eval.c:2817
    neovim#9  0x00000000004fae46 in do_one_cmd (cmdlinep=0x7ffdd216a878, flags=7, cstack=0x7ffdd216a880, fgetline=0x4f7c30 <get_loop_line>, cookie=0x7ffdd216a7f8)
        at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198
    neovim#10 0x00000000004f6ae3 in do_cmdline (cmdline=0x0, fgetline=0x499f50 <get_func_line>, cookie=0x7fb634350800, flags=7) at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601
    neovim#11 0x00000000004918c0 in call_user_func (fp=0x7fb6340ae6a0, argcount=0, argvars=0x7ffdd216b6d0, rettv=0x7ffdd216b930, firstline=2, lastline=2, selfdict=0x0)
        at /home/foo/src/github.com/neovim/src/nvim/eval.c:22728
    neovim#12 0x00000000004873a4 in call_func (funcname=0x7fb6348f3ee0 "vimfiler#view#_redraw_all_vimfiler", len=34, rettv=0x7ffdd216b930, argcount_in=0, argvars_in=0x7ffdd216b6d0, argv_func=0x0,
        firstline=2, lastline=2, doesrange=0x7ffdd216b92c, evaluate=true, partial=0x0, selfdict_in=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7687
    neovim#13 0x000000000048a6f0 in get_func_tv (name=0x7fb6348f3ee0 "vimfiler#view#_redraw_all_vimfiler", len=34, rettv=0x7ffdd216b930, arg=0x7ffdd216b948, firstline=2, lastline=2, doesrange=0x7ffdd216b92c,
        evaluate=1, partial=0x0, selfdict=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7459
    neovim#14 0x0000000000489691 in ex_call (eap=0x7ffdd216bc18) at /home/foo/src/github.com/neovim/src/nvim/eval.c:2817
    neovim#15 0x00000000004fae46 in do_one_cmd (cmdlinep=0x7ffdd216bef8, flags=7, cstack=0x7ffdd216bf00, fgetline=0x539820 <getnextac>, cookie=0x7ffdd216c508)
        at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198
    neovim#16 0x00000000004f6ae3 in do_cmdline (cmdline=0x0, fgetline=0x539820 <getnextac>, cookie=0x7ffdd216c508, flags=7) at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601
    neovim#17 0x00000000005390ee in apply_autocmds_group (event=EVENT_VIMRESIZED, fname=0x7fb6348ed2c0 "/home/foo/src/github.com/neovim/build/vimfiler:default", fname_io=0x0, force=false, group=-3,
        buf=0x7fb634858000, eap=0x0) at /home/foo/src/github.com/neovim/src/nvim/fileio.c:6882
    neovim#18 0x000000000052f67c in apply_autocmds (event=EVENT_VIMRESIZED, fname=0x0, fname_io=0x0, force=false, buf=0x7fb634858000) at /home/foo/src/github.com/neovim/src/nvim/fileio.c:6527
    neovim#19 0x0000000000640df2 in screenalloc (doclear=false) at /home/foo/src/github.com/neovim/src/nvim/screen.c:6234
    neovim#20 0x00000000006320d2 in screenclear () at /home/foo/src/github.com/neovim/src/nvim/screen.c:6277
    neovim#21 0x0000000000641edf in screen_resize (width=49, height=56) at /home/foo/src/github.com/neovim/src/nvim/screen.c:7366
    neovim#22 0x00000000006b2d82 in ui_refresh () at /home/foo/src/github.com/neovim/src/nvim/ui.c:175
    neovim#23 0x00000000006b3121 in ui_refresh_event (argv=0x7ffdd216c748) at /home/foo/src/github.com/neovim/src/nvim/ui.c:181
    neovim#24 0x00000000004d8297 in multiqueue_process_events (this=0x7fb634812370) at /home/foo/src/github.com/neovim/src/nvim/event/multiqueue.c:146
    neovim#25 0x00000000004d7616 in loop_poll_events (loop=0x96e900 <main_loop>, ms=-1) at /home/foo/src/github.com/neovim/src/nvim/event/loop.c:56
    neovim#26 0x00000000005eb635 in input_poll (ms=-1) at /home/foo/src/github.com/neovim/src/nvim/os/input.c:326
    neovim#27 0x00000000005ea700 in inbuf_poll (ms=-1) at /home/foo/src/github.com/neovim/src/nvim/os/input.c:348
    neovim#28 0x00000000005ea61d in os_inchar (buf=0x0, maxlen=0, ms=-1, tb_change_cnt=0) at /home/foo/src/github.com/neovim/src/nvim/os/input.c:110
    neovim#29 0x000000000068e0af in state_enter (s=0x7ffdd216c888) at /home/foo/src/github.com/neovim/src/nvim/state.c:49
    neovim#30 0x00000000005ac514 in normal_enter (cmdwin=false, noexmode=false) at /home/foo/src/github.com/neovim/src/nvim/normal.c:463
    neovim#31 0x0000000000565c62 in main (argc=9, argv=0x7ffdd216cc28) at /home/foo/src/github.com/neovim/src/nvim/main.c:540

---

ASAN trace after provoking the bug with VimFiler:

=================================================================
==8540==ERROR: AddressSanitizer: heap-use-after-free on address 0x613000054748 at pc 0x0000007d1dd8 bp 0x7ffe71be6660 sp 0x7ffe71be6658
READ of size 4 at 0x613000054748 thread T0
    #0 0x7d1dd7 in copy_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:20116:37
    #1 0x87b92c in f_get /home/foo/src/github.com/neovim/src/nvim/eval.c:9895:5
    #2 0x7b35c0 in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7286:11
    #3 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    #4 0x8667f9 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4353:15
    #5 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    #6 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    neovim#7 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    neovim#8 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    neovim#9 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    neovim#10 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    neovim#11 0x7abe36 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3494:9
    neovim#12 0x7a9ecc in eval0 /home/foo/src/github.com/neovim/src/nvim/eval.c:3420:9
    neovim#13 0x830cac in ex_return /home/foo/src/github.com/neovim/src/nvim/eval.c:22191:10
    neovim#14 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#15 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    neovim#17 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    neovim#18 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    neovim#19 0x8667f9 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4353:15
    neovim#20 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    neovim#21 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    neovim#22 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    neovim#23 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    neovim#24 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    neovim#25 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    neovim#26 0x7a9ecc in eval0 /home/foo/src/github.com/neovim/src/nvim/eval.c:3420:9
    neovim#27 0x7b78f2 in ex_let /home/foo/src/github.com/neovim/src/nvim/eval.c:1479:9
    neovim#28 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#29 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#30 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    neovim#31 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    neovim#32 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    neovim#33 0x7c1d3d in ex_call /home/foo/src/github.com/neovim/src/nvim/eval.c:2843:9
    neovim#34 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#35 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#36 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    neovim#37 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    neovim#38 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    neovim#39 0x7c1d3d in ex_call /home/foo/src/github.com/neovim/src/nvim/eval.c:2843:9
    neovim#40 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#41 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#42 0xca2918 in apply_autocmds_group /home/foo/src/github.com/neovim/src/nvim/fileio.c:6882:5
    neovim#43 0xc6c446 in apply_autocmds /home/foo/src/github.com/neovim/src/nvim/fileio.c:6527:10
    neovim#44 0x140f374 in screenalloc /home/foo/src/github.com/neovim/src/nvim/screen.c:6234:5
    neovim#45 0x13958d1 in screenclear /home/foo/src/github.com/neovim/src/nvim/screen.c:6277:3
    neovim#46 0x1417573 in screen_resize /home/foo/src/github.com/neovim/src/nvim/screen.c:7366:5
    neovim#47 0x17fb59b in ui_refresh /home/foo/src/github.com/neovim/src/nvim/ui.c:175:3
    neovim#48 0x17fc100 in ui_refresh_event /home/foo/src/github.com/neovim/src/nvim/ui.c:181:3
    neovim#49 0xa05bbf in multiqueue_process_events /home/foo/src/github.com/neovim/src/nvim/event/multiqueue.c:146:7
    neovim#50 0x9ff8b6 in loop_poll_events /home/foo/src/github.com/neovim/src/nvim/event/loop.c:56:3
    neovim#51 0x120d584 in input_poll /home/foo/src/github.com/neovim/src/nvim/os/input.c:326:3
    neovim#52 0x12092ef in inbuf_poll /home/foo/src/github.com/neovim/src/nvim/os/input.c:348:24
    neovim#53 0x1209193 in os_inchar /home/foo/src/github.com/neovim/src/nvim/os/input.c:110:18
    neovim#54 0x16d3615 in state_enter /home/foo/src/github.com/neovim/src/nvim/state.c:49:13
    neovim#55 0x101090b in normal_enter /home/foo/src/github.com/neovim/src/nvim/normal.c:463:3
    neovim#56 0xdd0a82 in main /home/foo/src/github.com/neovim/src/nvim/main.c:542:3
    neovim#57 0x7f3c61df42b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
    neovim#58 0x44b959 in _start (/home/foo/src/github.com/neovim/build/bin/nvim+0x44b959)

0x613000054748 is located 8 bytes inside of 352-byte region [0x613000054740,0x6130000548a0)
freed by thread T0 here:
    #0 0x4e9d70 in __interceptor_cfree.localalias.0 (/home/foo/src/github.com/neovim/build/bin/nvim+0x4e9d70)
    #1 0xefa184 in xfree /home/foo/src/github.com/neovim/src/nvim/memory.c:130:3
    #2 0x7e52b5 in dict_free_dict /home/foo/src/github.com/neovim/src/nvim/eval.c:6431:3
    #3 0x7e1e2c in free_unref_items /home/foo/src/github.com/neovim/src/nvim/eval.c:6063:7
    #4 0x7946cd in garbage_collect /home/foo/src/github.com/neovim/src/nvim/eval.c:5985:16
    #5 0xd08f4f in before_blocking /home/foo/src/github.com/neovim/src/nvim/getchar.c:1331:5
    #6 0x1209157 in os_inchar /home/foo/src/github.com/neovim/src/nvim/os/input.c:109:9
    neovim#7 0x16d3615 in state_enter /home/foo/src/github.com/neovim/src/nvim/state.c:49:13
    neovim#8 0x101090b in normal_enter /home/foo/src/github.com/neovim/src/nvim/normal.c:463:3
    neovim#9 0xdd0a82 in main /home/foo/src/github.com/neovim/src/nvim/main.c:542:3
    neovim#10 0x7f3c61df42b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)

previously allocated by thread T0 here:
    #0 0x4e9f08 in malloc (/home/foo/src/github.com/neovim/build/bin/nvim+0x4e9f08)
    #1 0xef9ee4 in try_malloc /home/foo/src/github.com/neovim/src/nvim/memory.c:84:15
    #2 0xefa0a4 in xmalloc /home/foo/src/github.com/neovim/src/nvim/memory.c:118:15
    #3 0x78bcc6 in dict_alloc /home/foo/src/github.com/neovim/src/nvim/eval.c:6321:15
    #4 0x86dc02 in get_dict_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:6789:9
    #5 0x865751 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4296:21
    #6 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    neovim#7 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    neovim#8 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    neovim#9 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    neovim#10 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    neovim#11 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    neovim#12 0x7a9ecc in eval0 /home/foo/src/github.com/neovim/src/nvim/eval.c:3420:9
    neovim#13 0x7b78f2 in ex_let /home/foo/src/github.com/neovim/src/nvim/eval.c:1479:9
    neovim#14 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    neovim#15 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    neovim#16 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    neovim#17 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    neovim#18 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    neovim#19 0x8667f9 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4353:15
    neovim#20 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    neovim#21 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    neovim#22 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    neovim#23 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    neovim#24 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    neovim#25 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    neovim#26 0x93f89a in filter_map_one /home/foo/src/github.com/neovim/src/nvim/eval.c:9398:7
    neovim#27 0x93f33a in filter_map /home/foo/src/github.com/neovim/src/nvim/eval.c:9372:13
    neovim#28 0x8ceb57 in f_map /home/foo/src/github.com/neovim/src/nvim/eval.c:12900:3
    neovim#29 0x7b35c0 in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7286:11

SUMMARY: AddressSanitizer: heap-use-after-free /home/foo/src/github.com/neovim/src/nvim/eval.c:20116:37 in copy_tv
Shadow bytes around the buggy address:
  0x0c2680002890: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c26800028a0: fd fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c26800028b0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c26800028c0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c26800028d0: fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa
=>0x0c26800028e0: fa fa fa fa fa fa fa fa fd[fd]fd fd fd fd fd fd
  0x0c26800028f0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2680002900: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2680002910: fd fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c2680002920: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2680002930: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==8540==ABORTING
justinmk added a commit that referenced this pull request Feb 11, 2017
Does not actually matter for most uses, but critical for mark&sweep garbage
collector.

Closes #5234
Closes #5774
Closes #5817
Closes #5883
Closes #5934
Closes #5970
Closes #5548

Helped-by: James McCoy <jamessan@jamessan.com>
Helped-by: Tommy Allen <tommy@esdf.io>
Helped-by: Justin M. Keyes <justinkz@gmail.com>

---

Steps to reproduce:

    Compile fb97457 with:
       CC=clang CFLAGS=" -O0 -g -DEXITFREE " cmake .. -DMIN_LOG_LEVEL=0 -DCMAKE_BUILD_TYPE=Debug -DBUSTED_OUTPUT_TYPE=utf
       -DCMAKE_INSTALL_PREFIX=$PWD/root -DJEMALLOC_USE_BUNDLED=1 -DCLANG_ASAN_UBSAN=ON -DPREFER_LUAJIT=false

    Directory `crash` contains:
    1. unite directory with Shougo/unite.vim@be09b0e
    2. vimfiler directory with Shougo/vimfiler.vim@72c37e8
    3. `init.vim` with a single line which sets `&rtp` to the above two directories (absolute path).

    bin/nvim -u ../crash/init.vim -i NONE --headless -s <(<<< $':split\n:VimFiler\n\C-ww:call garbagecollect()\n\C-w\C-w\C-w')

---

Sample backtrace showing dv_copyID being overwritten by clear_tv, which
allows it to be collected by garbage_collect .. free_unref_items:

    Old value = 152911
    New value = 152912
    0x00000000004938e5 in encode_vim_to_nothing (ignored=0x7fb6348f3b20, top_tv=0x7fb6348f3b20, objname=0x6d62e9 "clear_tv argument") at ../src/nvim/eval/typval_encode.c.h:641
    641               cur_mpsv->data.d.dict->dv_copyID = copyID - 1;
    (rr) bt
    #0  0x00000000004938e5 in encode_vim_to_nothing (ignored=0x7fb6348f3b20, top_tv=0x7fb6348f3b20, objname=0x6d62e9 "clear_tv argument") at ../src/nvim/eval/typval_encode.c.h:641
    #1  0x0000000000485dee in clear_tv (varp=0x7fb6348f3b20) at /home/foo/src/github.com/neovim/src/nvim/eval.c:19876
    #2  0x0000000000494e5e in vars_clear_ext (ht=0x7fb634351460, free_val=1) at /home/foo/src/github.com/neovim/src/nvim/eval.c:20378
    #3  0x0000000000494dca in vars_clear (ht=0x7fb634351460) at /home/foo/src/github.com/neovim/src/nvim/eval.c:20355
    #4  0x000000000048efa3 in free_funccal (fc=0x7fb634351200, free_val=0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:22927
    #5  0x0000000000491d8f in call_user_func (fp=0x7fb6340ae4e0, argcount=0, argvars=0x7ffdd216a050, rettv=0x7ffdd216a2b0, firstline=2, lastline=2, selfdict=0x0)
        at /home/foo/src/github.com/neovim/src/nvim/eval.c:22818
    #6  0x00000000004873a4 in call_func (funcname=0x7fb6348ba3e0 "vimfiler#view#_redraw_screen", len=28, rettv=0x7ffdd216a2b0, argcount_in=0, argvars_in=0x7ffdd216a050, argv_func=0x0, firstline=2,
        lastline=2, doesrange=0x7ffdd216a2ac, evaluate=true, partial=0x0, selfdict_in=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7687
    #7  0x000000000048a6f0 in get_func_tv (name=0x7fb6348ba3e0 "vimfiler#view#_redraw_screen", len=28, rettv=0x7ffdd216a2b0, arg=0x7ffdd216a2c8, firstline=2, lastline=2, doesrange=0x7ffdd216a2ac,
        evaluate=1, partial=0x0, selfdict=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7459
    #8  0x0000000000489691 in ex_call (eap=0x7ffdd216a598) at /home/foo/src/github.com/neovim/src/nvim/eval.c:2817
    #9  0x00000000004fae46 in do_one_cmd (cmdlinep=0x7ffdd216a878, flags=7, cstack=0x7ffdd216a880, fgetline=0x4f7c30 <get_loop_line>, cookie=0x7ffdd216a7f8)
        at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198
    #10 0x00000000004f6ae3 in do_cmdline (cmdline=0x0, fgetline=0x499f50 <get_func_line>, cookie=0x7fb634350800, flags=7) at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601
    #11 0x00000000004918c0 in call_user_func (fp=0x7fb6340ae6a0, argcount=0, argvars=0x7ffdd216b6d0, rettv=0x7ffdd216b930, firstline=2, lastline=2, selfdict=0x0)
        at /home/foo/src/github.com/neovim/src/nvim/eval.c:22728
    #12 0x00000000004873a4 in call_func (funcname=0x7fb6348f3ee0 "vimfiler#view#_redraw_all_vimfiler", len=34, rettv=0x7ffdd216b930, argcount_in=0, argvars_in=0x7ffdd216b6d0, argv_func=0x0,
        firstline=2, lastline=2, doesrange=0x7ffdd216b92c, evaluate=true, partial=0x0, selfdict_in=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7687
    #13 0x000000000048a6f0 in get_func_tv (name=0x7fb6348f3ee0 "vimfiler#view#_redraw_all_vimfiler", len=34, rettv=0x7ffdd216b930, arg=0x7ffdd216b948, firstline=2, lastline=2, doesrange=0x7ffdd216b92c,
        evaluate=1, partial=0x0, selfdict=0x0) at /home/foo/src/github.com/neovim/src/nvim/eval.c:7459
    #14 0x0000000000489691 in ex_call (eap=0x7ffdd216bc18) at /home/foo/src/github.com/neovim/src/nvim/eval.c:2817
    #15 0x00000000004fae46 in do_one_cmd (cmdlinep=0x7ffdd216bef8, flags=7, cstack=0x7ffdd216bf00, fgetline=0x539820 <getnextac>, cookie=0x7ffdd216c508)
        at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198
    #16 0x00000000004f6ae3 in do_cmdline (cmdline=0x0, fgetline=0x539820 <getnextac>, cookie=0x7ffdd216c508, flags=7) at /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601
    #17 0x00000000005390ee in apply_autocmds_group (event=EVENT_VIMRESIZED, fname=0x7fb6348ed2c0 "/home/foo/src/github.com/neovim/build/vimfiler:default", fname_io=0x0, force=false, group=-3,
        buf=0x7fb634858000, eap=0x0) at /home/foo/src/github.com/neovim/src/nvim/fileio.c:6882
    #18 0x000000000052f67c in apply_autocmds (event=EVENT_VIMRESIZED, fname=0x0, fname_io=0x0, force=false, buf=0x7fb634858000) at /home/foo/src/github.com/neovim/src/nvim/fileio.c:6527
    #19 0x0000000000640df2 in screenalloc (doclear=false) at /home/foo/src/github.com/neovim/src/nvim/screen.c:6234
    #20 0x00000000006320d2 in screenclear () at /home/foo/src/github.com/neovim/src/nvim/screen.c:6277
    #21 0x0000000000641edf in screen_resize (width=49, height=56) at /home/foo/src/github.com/neovim/src/nvim/screen.c:7366
    #22 0x00000000006b2d82 in ui_refresh () at /home/foo/src/github.com/neovim/src/nvim/ui.c:175
    #23 0x00000000006b3121 in ui_refresh_event (argv=0x7ffdd216c748) at /home/foo/src/github.com/neovim/src/nvim/ui.c:181
    #24 0x00000000004d8297 in multiqueue_process_events (this=0x7fb634812370) at /home/foo/src/github.com/neovim/src/nvim/event/multiqueue.c:146
    #25 0x00000000004d7616 in loop_poll_events (loop=0x96e900 <main_loop>, ms=-1) at /home/foo/src/github.com/neovim/src/nvim/event/loop.c:56
    #26 0x00000000005eb635 in input_poll (ms=-1) at /home/foo/src/github.com/neovim/src/nvim/os/input.c:326
    #27 0x00000000005ea700 in inbuf_poll (ms=-1) at /home/foo/src/github.com/neovim/src/nvim/os/input.c:348
    #28 0x00000000005ea61d in os_inchar (buf=0x0, maxlen=0, ms=-1, tb_change_cnt=0) at /home/foo/src/github.com/neovim/src/nvim/os/input.c:110
    #29 0x000000000068e0af in state_enter (s=0x7ffdd216c888) at /home/foo/src/github.com/neovim/src/nvim/state.c:49
    #30 0x00000000005ac514 in normal_enter (cmdwin=false, noexmode=false) at /home/foo/src/github.com/neovim/src/nvim/normal.c:463
    #31 0x0000000000565c62 in main (argc=9, argv=0x7ffdd216cc28) at /home/foo/src/github.com/neovim/src/nvim/main.c:540

---

ASAN trace after provoking the bug with VimFiler:

=================================================================
==8540==ERROR: AddressSanitizer: heap-use-after-free on address 0x613000054748 at pc 0x0000007d1dd8 bp 0x7ffe71be6660 sp 0x7ffe71be6658
READ of size 4 at 0x613000054748 thread T0
    #0 0x7d1dd7 in copy_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:20116:37
    #1 0x87b92c in f_get /home/foo/src/github.com/neovim/src/nvim/eval.c:9895:5
    #2 0x7b35c0 in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7286:11
    #3 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    #4 0x8667f9 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4353:15
    #5 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    #6 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    #7 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    #8 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    #9 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    #10 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    #11 0x7abe36 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3494:9
    #12 0x7a9ecc in eval0 /home/foo/src/github.com/neovim/src/nvim/eval.c:3420:9
    #13 0x830cac in ex_return /home/foo/src/github.com/neovim/src/nvim/eval.c:22191:10
    #14 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    #15 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    #16 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    #17 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    #18 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    #19 0x8667f9 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4353:15
    #20 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    #21 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    #22 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    #23 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    #24 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    #25 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    #26 0x7a9ecc in eval0 /home/foo/src/github.com/neovim/src/nvim/eval.c:3420:9
    #27 0x7b78f2 in ex_let /home/foo/src/github.com/neovim/src/nvim/eval.c:1479:9
    #28 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    #29 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    #30 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    #31 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    #32 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    #33 0x7c1d3d in ex_call /home/foo/src/github.com/neovim/src/nvim/eval.c:2843:9
    #34 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    #35 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    #36 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    #37 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    #38 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    #39 0x7c1d3d in ex_call /home/foo/src/github.com/neovim/src/nvim/eval.c:2843:9
    #40 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    #41 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    #42 0xca2918 in apply_autocmds_group /home/foo/src/github.com/neovim/src/nvim/fileio.c:6882:5
    #43 0xc6c446 in apply_autocmds /home/foo/src/github.com/neovim/src/nvim/fileio.c:6527:10
    #44 0x140f374 in screenalloc /home/foo/src/github.com/neovim/src/nvim/screen.c:6234:5
    #45 0x13958d1 in screenclear /home/foo/src/github.com/neovim/src/nvim/screen.c:6277:3
    #46 0x1417573 in screen_resize /home/foo/src/github.com/neovim/src/nvim/screen.c:7366:5
    #47 0x17fb59b in ui_refresh /home/foo/src/github.com/neovim/src/nvim/ui.c:175:3
    #48 0x17fc100 in ui_refresh_event /home/foo/src/github.com/neovim/src/nvim/ui.c:181:3
    #49 0xa05bbf in multiqueue_process_events /home/foo/src/github.com/neovim/src/nvim/event/multiqueue.c:146:7
    #50 0x9ff8b6 in loop_poll_events /home/foo/src/github.com/neovim/src/nvim/event/loop.c:56:3
    #51 0x120d584 in input_poll /home/foo/src/github.com/neovim/src/nvim/os/input.c:326:3
    #52 0x12092ef in inbuf_poll /home/foo/src/github.com/neovim/src/nvim/os/input.c:348:24
    #53 0x1209193 in os_inchar /home/foo/src/github.com/neovim/src/nvim/os/input.c:110:18
    #54 0x16d3615 in state_enter /home/foo/src/github.com/neovim/src/nvim/state.c:49:13
    #55 0x101090b in normal_enter /home/foo/src/github.com/neovim/src/nvim/normal.c:463:3
    #56 0xdd0a82 in main /home/foo/src/github.com/neovim/src/nvim/main.c:542:3
    #57 0x7f3c61df42b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
    #58 0x44b959 in _start (/home/foo/src/github.com/neovim/build/bin/nvim+0x44b959)

0x613000054748 is located 8 bytes inside of 352-byte region [0x613000054740,0x6130000548a0)
freed by thread T0 here:
    #0 0x4e9d70 in __interceptor_cfree.localalias.0 (/home/foo/src/github.com/neovim/build/bin/nvim+0x4e9d70)
    #1 0xefa184 in xfree /home/foo/src/github.com/neovim/src/nvim/memory.c:130:3
    #2 0x7e52b5 in dict_free_dict /home/foo/src/github.com/neovim/src/nvim/eval.c:6431:3
    #3 0x7e1e2c in free_unref_items /home/foo/src/github.com/neovim/src/nvim/eval.c:6063:7
    #4 0x7946cd in garbage_collect /home/foo/src/github.com/neovim/src/nvim/eval.c:5985:16
    #5 0xd08f4f in before_blocking /home/foo/src/github.com/neovim/src/nvim/getchar.c:1331:5
    #6 0x1209157 in os_inchar /home/foo/src/github.com/neovim/src/nvim/os/input.c:109:9
    #7 0x16d3615 in state_enter /home/foo/src/github.com/neovim/src/nvim/state.c:49:13
    #8 0x101090b in normal_enter /home/foo/src/github.com/neovim/src/nvim/normal.c:463:3
    #9 0xdd0a82 in main /home/foo/src/github.com/neovim/src/nvim/main.c:542:3
    #10 0x7f3c61df42b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)

previously allocated by thread T0 here:
    #0 0x4e9f08 in malloc (/home/foo/src/github.com/neovim/build/bin/nvim+0x4e9f08)
    #1 0xef9ee4 in try_malloc /home/foo/src/github.com/neovim/src/nvim/memory.c:84:15
    #2 0xefa0a4 in xmalloc /home/foo/src/github.com/neovim/src/nvim/memory.c:118:15
    #3 0x78bcc6 in dict_alloc /home/foo/src/github.com/neovim/src/nvim/eval.c:6321:15
    #4 0x86dc02 in get_dict_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:6789:9
    #5 0x865751 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4296:21
    #6 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    #7 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    #8 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    #9 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    #10 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    #11 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    #12 0x7a9ecc in eval0 /home/foo/src/github.com/neovim/src/nvim/eval.c:3420:9
    #13 0x7b78f2 in ex_let /home/foo/src/github.com/neovim/src/nvim/eval.c:1479:9
    #14 0xb06a1c in do_one_cmd /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:2198:5
    #15 0xae5557 in do_cmdline /home/foo/src/github.com/neovim/src/nvim/ex_docmd.c:601:20
    #16 0x7f2490 in call_user_func /home/foo/src/github.com/neovim/src/nvim/eval.c:21993:3
    #17 0x7b2eee in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7271:11
    #18 0x7c8d7a in get_func_tv /home/foo/src/github.com/neovim/src/nvim/eval.c:7091:11
    #19 0x8667f9 in eval7 /home/foo/src/github.com/neovim/src/nvim/eval.c:4353:15
    #20 0x8621e5 in eval6 /home/foo/src/github.com/neovim/src/nvim/eval.c:4073:7
    #21 0x85ce69 in eval5 /home/foo/src/github.com/neovim/src/nvim/eval.c:3925:7
    #22 0x858071 in eval4 /home/foo/src/github.com/neovim/src/nvim/eval.c:3666:7
    #23 0x857613 in eval3 /home/foo/src/github.com/neovim/src/nvim/eval.c:3588:7
    #24 0x856bb3 in eval2 /home/foo/src/github.com/neovim/src/nvim/eval.c:3525:7
    #25 0x7ab772 in eval1 /home/foo/src/github.com/neovim/src/nvim/eval.c:3458:7
    #26 0x93f89a in filter_map_one /home/foo/src/github.com/neovim/src/nvim/eval.c:9398:7
    #27 0x93f33a in filter_map /home/foo/src/github.com/neovim/src/nvim/eval.c:9372:13
    #28 0x8ceb57 in f_map /home/foo/src/github.com/neovim/src/nvim/eval.c:12900:3
    #29 0x7b35c0 in call_func /home/foo/src/github.com/neovim/src/nvim/eval.c:7286:11

SUMMARY: AddressSanitizer: heap-use-after-free /home/foo/src/github.com/neovim/src/nvim/eval.c:20116:37 in copy_tv
Shadow bytes around the buggy address:
  0x0c2680002890: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c26800028a0: fd fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c26800028b0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c26800028c0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c26800028d0: fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa
=>0x0c26800028e0: fa fa fa fa fa fa fa fa fd[fd]fd fd fd fd fd fd
  0x0c26800028f0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2680002900: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2680002910: fd fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c2680002920: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2680002930: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==8540==ABORTING
@desdic desdic mentioned this pull request Feb 15, 2017
dwb pushed a commit to dwb/neovim that referenced this pull request Feb 21, 2017
…ovim#3

This was a bit of a refactor and a collection of bugfixes from using
this over the last few days. Also fixes neovim#8 and an unreported bug where
deleting signs out from under gitgutter would cause errors (neomake is
no longer deleting signs it didn't create)
dwb pushed a commit to dwb/neovim that referenced this pull request Feb 21, 2017
The most recent version of neovim uses and array of output lines for
v:job_data[2] instead of a string as before.
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 12, 2017
Patch-by: oni-link <knil.ino@gmail.com>

Closes neovim#6203

https://s3.amazonaws.com/archive.travis-ci.org/jobs/206794197/log.txt

References neovim#3161

    [ RUN      ] ...d/neovim/neovim/test/functional/terminal/buffer_spec.lua @ 199: terminal buffer term_close() use-after-free neovim#4393
    ./test/functional/helpers.lua:187: attempt to perform arithmetic on local 'written' (a nil value)

    stack traceback:
    	./test/functional/helpers.lua:187: in function 'nvim_feed'
    	./test/functional/helpers.lua:329: in function 'execute'
    	...d/neovim/neovim/test/functional/terminal/buffer_spec.lua:206: in function <...d/neovim/neovim/test/functional/terminal/buffer_spec.lua:199>

    [  ERROR   ] ...d/neovim/neovim/test/functional/terminal/buffer_spec.lua @ 199: terminal buffer term_close() use-after-free neovim#4393 (199.47 ms)
    ==================== File /home/travis/build/neovim/neovim/build/log/ubsan.15466 ====================
    = =================================================================
    = ==15466==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x621000029101 at pc 0x000000ea7ba0 bp 0x7ffd5bb628c0 sp 0x7ffd5bb628b8
    = READ of size 1 at 0x621000029101 thread T0
    =     #0 0xea7b9f in utf_head_off /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1637:7
    =     #1 0xeaaf53 in mb_adjustpos /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1840:16
    =     #2 0xeaab48 in mb_adjust_cursor /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1825:3
    =     #3 0x11000d0 in normal_finish_command /home/travis/build/neovim/neovim/src/nvim/normal.c:928:5
    =     #4 0x1077df1 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1147:3
    =     #5 0x16ff943 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:58:26
    =     #6 0x102d8db in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:463:3
    =     neovim#7 0xdf3398 in main /home/travis/build/neovim/neovim/src/nvim/main.c:540:3
    =     neovim#8 0x2b973e8b4f44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287
    =     neovim#9 0x447445 in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x447445)
    =
    = 0x621000029101 is located 1 bytes to the right of 4096-byte region [0x621000028100,0x621000029100)
    = allocated by thread T0 here:
    =     #0 0x4f17b8 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f17b8)
    =     #1 0xf1f374 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:84:15
    =     #2 0xf1f534 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:118:15
    =     #3 0xebe6a8 in mf_alloc_bhdr /home/travis/build/neovim/neovim/src/nvim/memfile.c:646:17
    =     #4 0xebc394 in mf_new /home/travis/build/neovim/neovim/src/nvim/memfile.c:297:12
    =     #5 0xed1368 in ml_new_data /home/travis/build/neovim/neovim/src/nvim/memline.c:2704:16
    =     #6 0xece6ab in ml_open /home/travis/build/neovim/neovim/src/nvim/memline.c:349:8
    =     neovim#7 0x6438ad in open_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:109:7
    =     neovim#8 0xa6ec8d in do_ecmd /home/travis/build/neovim/neovim/src/nvim/ex_cmds.c:2489:24
    =     neovim#9 0xb5a0f9 in do_exedit /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:6723:9
    =     neovim#10 0xb791f8 in ex_edit /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:6651:3
    =     neovim#11 0xb28b43 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2198:5
    =     neovim#12 0xb077a7 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    =     neovim#13 0x10905db in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4495:18
    =     neovim#14 0x1077de8 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:3
    =     neovim#15 0x16ff943 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:58:26
    =     neovim#16 0x102d8db in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:463:3
    =     neovim#17 0xdf3398 in main /home/travis/build/neovim/neovim/src/nvim/main.c:540:3
    =     neovim#18 0x2b973e8b4f44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287
    =
    = SUMMARY: AddressSanitizer: heap-buffer-overflow /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1637:7 in utf_head_off
    stack traceback:
    	./test/helpers.lua:80: in function 'check_logs'
    	./test/functional/helpers.lua:639: in function <./test/functional/helpers.lua:638>

    [----------] 9 tests from /home/travis/build/neovim/neovim/test/functional/terminal/buffer_spec.lua (2263.12 ms total)
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 12, 2017
Patch-by: oni-link <knil.ino@gmail.com>

Closes neovim#6203

https://s3.amazonaws.com/archive.travis-ci.org/jobs/206794197/log.txt

References neovim#3161

    [ RUN      ] ...d/neovim/neovim/test/functional/terminal/buffer_spec.lua @ 199: terminal buffer term_close() use-after-free neovim#4393
    ./test/functional/helpers.lua:187: attempt to perform arithmetic on local 'written' (a nil value)

    stack traceback:
    	./test/functional/helpers.lua:187: in function 'nvim_feed'
    	./test/functional/helpers.lua:329: in function 'execute'
    	...d/neovim/neovim/test/functional/terminal/buffer_spec.lua:206: in function <...d/neovim/neovim/test/functional/terminal/buffer_spec.lua:199>

    [  ERROR   ] ...d/neovim/neovim/test/functional/terminal/buffer_spec.lua @ 199: terminal buffer term_close() use-after-free neovim#4393 (199.47 ms)
    ==================== File /home/travis/build/neovim/neovim/build/log/ubsan.15466 ====================
    = =================================================================
    = ==15466==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x621000029101 at pc 0x000000ea7ba0 bp 0x7ffd5bb628c0 sp 0x7ffd5bb628b8
    = READ of size 1 at 0x621000029101 thread T0
    =     #0 0xea7b9f in utf_head_off /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1637:7
    =     #1 0xeaaf53 in mb_adjustpos /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1840:16
    =     #2 0xeaab48 in mb_adjust_cursor /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1825:3
    =     #3 0x11000d0 in normal_finish_command /home/travis/build/neovim/neovim/src/nvim/normal.c:928:5
    =     #4 0x1077df1 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1147:3
    =     #5 0x16ff943 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:58:26
    =     #6 0x102d8db in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:463:3
    =     neovim#7 0xdf3398 in main /home/travis/build/neovim/neovim/src/nvim/main.c:540:3
    =     neovim#8 0x2b973e8b4f44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287
    =     neovim#9 0x447445 in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x447445)
    =
    = 0x621000029101 is located 1 bytes to the right of 4096-byte region [0x621000028100,0x621000029100)
    = allocated by thread T0 here:
    =     #0 0x4f17b8 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f17b8)
    =     #1 0xf1f374 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:84:15
    =     #2 0xf1f534 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:118:15
    =     #3 0xebe6a8 in mf_alloc_bhdr /home/travis/build/neovim/neovim/src/nvim/memfile.c:646:17
    =     #4 0xebc394 in mf_new /home/travis/build/neovim/neovim/src/nvim/memfile.c:297:12
    =     #5 0xed1368 in ml_new_data /home/travis/build/neovim/neovim/src/nvim/memline.c:2704:16
    =     #6 0xece6ab in ml_open /home/travis/build/neovim/neovim/src/nvim/memline.c:349:8
    =     neovim#7 0x6438ad in open_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:109:7
    =     neovim#8 0xa6ec8d in do_ecmd /home/travis/build/neovim/neovim/src/nvim/ex_cmds.c:2489:24
    =     neovim#9 0xb5a0f9 in do_exedit /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:6723:9
    =     neovim#10 0xb791f8 in ex_edit /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:6651:3
    =     neovim#11 0xb28b43 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2198:5
    =     neovim#12 0xb077a7 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    =     neovim#13 0x10905db in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4495:18
    =     neovim#14 0x1077de8 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:3
    =     neovim#15 0x16ff943 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:58:26
    =     neovim#16 0x102d8db in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:463:3
    =     neovim#17 0xdf3398 in main /home/travis/build/neovim/neovim/src/nvim/main.c:540:3
    =     neovim#18 0x2b973e8b4f44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287
    =
    = SUMMARY: AddressSanitizer: heap-buffer-overflow /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1637:7 in utf_head_off
    stack traceback:
    	./test/helpers.lua:80: in function 'check_logs'
    	./test/functional/helpers.lua:639: in function <./test/functional/helpers.lua:638>

    [----------] 9 tests from /home/travis/build/neovim/neovim/test/functional/terminal/buffer_spec.lua (2263.12 ms total)
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 12, 2017
Patch-by: oni-link <knil.ino@gmail.com>

Closes neovim#6203

https://s3.amazonaws.com/archive.travis-ci.org/jobs/206794197/log.txt

References neovim#3161

    [ RUN      ] ...d/neovim/neovim/test/functional/terminal/buffer_spec.lua @ 199: terminal buffer term_close() use-after-free neovim#4393
    ./test/functional/helpers.lua:187: attempt to perform arithmetic on local 'written' (a nil value)

    stack traceback:
    	./test/functional/helpers.lua:187: in function 'nvim_feed'
    	./test/functional/helpers.lua:329: in function 'execute'
    	...d/neovim/neovim/test/functional/terminal/buffer_spec.lua:206: in function <...d/neovim/neovim/test/functional/terminal/buffer_spec.lua:199>

    [  ERROR   ] ...d/neovim/neovim/test/functional/terminal/buffer_spec.lua @ 199: terminal buffer term_close() use-after-free neovim#4393 (199.47 ms)
    ==================== File /home/travis/build/neovim/neovim/build/log/ubsan.15466 ====================
    = =================================================================
    = ==15466==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x621000029101 at pc 0x000000ea7ba0 bp 0x7ffd5bb628c0 sp 0x7ffd5bb628b8
    = READ of size 1 at 0x621000029101 thread T0
    =     #0 0xea7b9f in utf_head_off /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1637:7
    =     #1 0xeaaf53 in mb_adjustpos /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1840:16
    =     #2 0xeaab48 in mb_adjust_cursor /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1825:3
    =     #3 0x11000d0 in normal_finish_command /home/travis/build/neovim/neovim/src/nvim/normal.c:928:5
    =     #4 0x1077df1 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1147:3
    =     #5 0x16ff943 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:58:26
    =     #6 0x102d8db in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:463:3
    =     neovim#7 0xdf3398 in main /home/travis/build/neovim/neovim/src/nvim/main.c:540:3
    =     neovim#8 0x2b973e8b4f44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287
    =     neovim#9 0x447445 in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x447445)
    =
    = 0x621000029101 is located 1 bytes to the right of 4096-byte region [0x621000028100,0x621000029100)
    = allocated by thread T0 here:
    =     #0 0x4f17b8 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f17b8)
    =     #1 0xf1f374 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:84:15
    =     #2 0xf1f534 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:118:15
    =     #3 0xebe6a8 in mf_alloc_bhdr /home/travis/build/neovim/neovim/src/nvim/memfile.c:646:17
    =     #4 0xebc394 in mf_new /home/travis/build/neovim/neovim/src/nvim/memfile.c:297:12
    =     #5 0xed1368 in ml_new_data /home/travis/build/neovim/neovim/src/nvim/memline.c:2704:16
    =     #6 0xece6ab in ml_open /home/travis/build/neovim/neovim/src/nvim/memline.c:349:8
    =     neovim#7 0x6438ad in open_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:109:7
    =     neovim#8 0xa6ec8d in do_ecmd /home/travis/build/neovim/neovim/src/nvim/ex_cmds.c:2489:24
    =     neovim#9 0xb5a0f9 in do_exedit /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:6723:9
    =     neovim#10 0xb791f8 in ex_edit /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:6651:3
    =     neovim#11 0xb28b43 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2198:5
    =     neovim#12 0xb077a7 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    =     neovim#13 0x10905db in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4495:18
    =     neovim#14 0x1077de8 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:3
    =     neovim#15 0x16ff943 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:58:26
    =     neovim#16 0x102d8db in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:463:3
    =     neovim#17 0xdf3398 in main /home/travis/build/neovim/neovim/src/nvim/main.c:540:3
    =     neovim#18 0x2b973e8b4f44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287
    =
    = SUMMARY: AddressSanitizer: heap-buffer-overflow /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1637:7 in utf_head_off
    stack traceback:
    	./test/helpers.lua:80: in function 'check_logs'
    	./test/functional/helpers.lua:639: in function <./test/functional/helpers.lua:638>

    [----------] 9 tests from /home/travis/build/neovim/neovim/test/functional/terminal/buffer_spec.lua (2263.12 ms total)
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 19, 2017
Patch-by: oni-link <knil.ino@gmail.com>

Closes neovim#6203

https://s3.amazonaws.com/archive.travis-ci.org/jobs/206794197/log.txt

References neovim#3161

    [ RUN      ] ...d/neovim/neovim/test/functional/terminal/buffer_spec.lua @ 199: terminal buffer term_close() use-after-free neovim#4393
    ./test/functional/helpers.lua:187: attempt to perform arithmetic on local 'written' (a nil value)

    stack traceback:
    	./test/functional/helpers.lua:187: in function 'nvim_feed'
    	./test/functional/helpers.lua:329: in function 'execute'
    	...d/neovim/neovim/test/functional/terminal/buffer_spec.lua:206: in function <...d/neovim/neovim/test/functional/terminal/buffer_spec.lua:199>

    [  ERROR   ] ...d/neovim/neovim/test/functional/terminal/buffer_spec.lua @ 199: terminal buffer term_close() use-after-free neovim#4393 (199.47 ms)
    ==================== File /home/travis/build/neovim/neovim/build/log/ubsan.15466 ====================
    = =================================================================
    = ==15466==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x621000029101 at pc 0x000000ea7ba0 bp 0x7ffd5bb628c0 sp 0x7ffd5bb628b8
    = READ of size 1 at 0x621000029101 thread T0
    =     #0 0xea7b9f in utf_head_off /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1637:7
    =     #1 0xeaaf53 in mb_adjustpos /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1840:16
    =     #2 0xeaab48 in mb_adjust_cursor /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1825:3
    =     #3 0x11000d0 in normal_finish_command /home/travis/build/neovim/neovim/src/nvim/normal.c:928:5
    =     #4 0x1077df1 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1147:3
    =     #5 0x16ff943 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:58:26
    =     #6 0x102d8db in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:463:3
    =     neovim#7 0xdf3398 in main /home/travis/build/neovim/neovim/src/nvim/main.c:540:3
    =     neovim#8 0x2b973e8b4f44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287
    =     neovim#9 0x447445 in _start (/home/travis/build/neovim/neovim/build/bin/nvim+0x447445)
    =
    = 0x621000029101 is located 1 bytes to the right of 4096-byte region [0x621000028100,0x621000029100)
    = allocated by thread T0 here:
    =     #0 0x4f17b8 in malloc (/home/travis/build/neovim/neovim/build/bin/nvim+0x4f17b8)
    =     #1 0xf1f374 in try_malloc /home/travis/build/neovim/neovim/src/nvim/memory.c:84:15
    =     #2 0xf1f534 in xmalloc /home/travis/build/neovim/neovim/src/nvim/memory.c:118:15
    =     #3 0xebe6a8 in mf_alloc_bhdr /home/travis/build/neovim/neovim/src/nvim/memfile.c:646:17
    =     #4 0xebc394 in mf_new /home/travis/build/neovim/neovim/src/nvim/memfile.c:297:12
    =     #5 0xed1368 in ml_new_data /home/travis/build/neovim/neovim/src/nvim/memline.c:2704:16
    =     #6 0xece6ab in ml_open /home/travis/build/neovim/neovim/src/nvim/memline.c:349:8
    =     neovim#7 0x6438ad in open_buffer /home/travis/build/neovim/neovim/src/nvim/buffer.c:109:7
    =     neovim#8 0xa6ec8d in do_ecmd /home/travis/build/neovim/neovim/src/nvim/ex_cmds.c:2489:24
    =     neovim#9 0xb5a0f9 in do_exedit /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:6723:9
    =     neovim#10 0xb791f8 in ex_edit /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:6651:3
    =     neovim#11 0xb28b43 in do_one_cmd /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:2198:5
    =     neovim#12 0xb077a7 in do_cmdline /home/travis/build/neovim/neovim/src/nvim/ex_docmd.c:601:20
    =     neovim#13 0x10905db in nv_colon /home/travis/build/neovim/neovim/src/nvim/normal.c:4495:18
    =     neovim#14 0x1077de8 in normal_execute /home/travis/build/neovim/neovim/src/nvim/normal.c:1144:3
    =     neovim#15 0x16ff943 in state_enter /home/travis/build/neovim/neovim/src/nvim/state.c:58:26
    =     neovim#16 0x102d8db in normal_enter /home/travis/build/neovim/neovim/src/nvim/normal.c:463:3
    =     neovim#17 0xdf3398 in main /home/travis/build/neovim/neovim/src/nvim/main.c:540:3
    =     neovim#18 0x2b973e8b4f44 in __libc_start_main /build/eglibc-oGUzwX/eglibc-2.19/csu/libc-start.c:287
    =
    = SUMMARY: AddressSanitizer: heap-buffer-overflow /home/travis/build/neovim/neovim/src/nvim/mbyte.c:1637:7 in utf_head_off
    stack traceback:
    	./test/helpers.lua:80: in function 'check_logs'
    	./test/functional/helpers.lua:639: in function <./test/functional/helpers.lua:638>

    [----------] 9 tests from /home/travis/build/neovim/neovim/test/functional/terminal/buffer_spec.lua (2263.12 ms total)
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 25, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 25, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 25, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 25, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 25, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 25, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 25, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 25, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 25, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
zeertzjq pushed a commit that referenced this pull request Mar 26, 2023
Problem:
Wrong buffer size argument passed to snprintf() in set_cmdarg():
	Thread no. 1 (24 frames)
	 #8 snprintf at /usr/include/bits/stdio2.h:54
	 #9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
	 #10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
	 #11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
	 #12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
	 #13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
	 #14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
	 #15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
	 #16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
	 #17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
	 #18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
	 #19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
	 #20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
	 #21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
	 #22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
	 #23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
	 #24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
	 #25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
	 #26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
	 #27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
	 #28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
	 #29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
	 #30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
	 #31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Solution:
Subtract the offset from the buffer size.

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Mar 27, 2023
Thread no. 1 (24 frames)
 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
craigmac pushed a commit to craigmac/neovim that referenced this pull request Apr 4, 2023
…#22780)

Problem:
Wrong buffer size argument passed to snprintf() in set_cmdarg():
	Thread no. 1 (24 frames)
	 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
	 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
	 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
	 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
	 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
	 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
	 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
	 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
	 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
	 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
	 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
	 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
	 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
	 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
	 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
	 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
	 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
	 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
	 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
	 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
	 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
	 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
	 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
	 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Solution:
Subtract the offset from the buffer size.

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Apr 20, 2023
  (gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  neovim#1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  neovim#2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  neovim#3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  neovim#4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  neovim#5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  neovim#6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  neovim#7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  neovim#8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Apr 20, 2023
  (gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  neovim#1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  neovim#2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  neovim#3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  neovim#4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  neovim#5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  neovim#6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  neovim#7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  neovim#8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Apr 20, 2023
Build with: -Wp,-D_FORTIFY_SOURCE=3 -O1 and gcc 13.

*** buffer overflow detected ***: terminated

(gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  neovim#1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  neovim#2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  neovim#3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  neovim#4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  neovim#5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  neovim#6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  neovim#7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  neovim#8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Apr 21, 2023
Build with: -Wp,-D_FORTIFY_SOURCE=3 -O1 and gcc 13.

*** buffer overflow detected ***: terminated

(gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  neovim#1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  neovim#2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  neovim#3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  neovim#4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  neovim#5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  neovim#6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  neovim#7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  neovim#8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Apr 21, 2023
Build with: -Wp,-D_FORTIFY_SOURCE=3 -O1 and gcc 13.

*** buffer overflow detected ***: terminated

(gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  neovim#1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  neovim#2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  neovim#3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  neovim#4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  neovim#5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  neovim#6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  neovim#7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  neovim#8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
cryptomilk added a commit to cryptomilk/neovim that referenced this pull request Apr 21, 2023
Build with: -Wp,-D_FORTIFY_SOURCE=3 -O1 and gcc 13.

*** buffer overflow detected ***: terminated

(gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  neovim#1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  neovim#2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  neovim#3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  neovim#4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  neovim#5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  neovim#6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  neovim#7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  neovim#8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
zeertzjq pushed a commit that referenced this pull request Apr 21, 2023
fix(usercmd): fix buffer overflow in uc_list()

Build with: -Wp,-D_FORTIFY_SOURCE=3 -O1 and gcc 13.

*** buffer overflow detected ***: terminated

(gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  #1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  #2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  #3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  #4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  #5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  #6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  #7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  #8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  #9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  #10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  #11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  #12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  #13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  #14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  #15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  #16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  #17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  #18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
zeertzjq referenced this pull request in zeertzjq/neovim Apr 21, 2023
Build with: -Wp,-D_FORTIFY_SOURCE=3 -O1 and gcc 13.

*** buffer overflow detected ***: terminated

(gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  #1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  #2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  #3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  #4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  #5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  #6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  #7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  #8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
craigmac pushed a commit to craigmac/neovim that referenced this pull request Apr 21, 2023
fix(usercmd): fix buffer overflow in uc_list()

Build with: -Wp,-D_FORTIFY_SOURCE=3 -O1 and gcc 13.

*** buffer overflow detected ***: terminated

(gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  neovim#1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  neovim#2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  neovim#3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  neovim#4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  neovim#5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  neovim#6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  neovim#7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  neovim#8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
theHamsta pushed a commit to theHamsta/neovim that referenced this pull request Apr 21, 2023
fix(usercmd): fix buffer overflow in uc_list()

Build with: -Wp,-D_FORTIFY_SOURCE=3 -O1 and gcc 13.

*** buffer overflow detected ***: terminated

(gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  neovim#1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  neovim#2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  neovim#3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  neovim#4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  neovim#5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  neovim#6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  neovim#7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  neovim#8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
folke pushed a commit to folke/neovim that referenced this pull request May 22, 2023
…#22780)

Problem:
Wrong buffer size argument passed to snprintf() in set_cmdarg():
	Thread no. 1 (24 frames)
	 neovim#8 snprintf at /usr/include/bits/stdio2.h:54
	 neovim#9 set_cmdarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7044
	 neovim#10 apply_autocmds_group at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1843
	 neovim#11 apply_autocmds_exarg at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/autocmd.c:1549
	 neovim#12 readfile at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:617
	 neovim#13 buf_reload at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:5038
	 neovim#14 buf_check_timestamp at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4952
	 neovim#15 check_timestamps at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/fileio.c:4678
	 neovim#16 ex_checktime at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_cmds2.c:765
	 neovim#17 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
	 neovim#18 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
	 neovim#19 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
	 neovim#20 ex_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/eval.c:7727
	 neovim#21 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1620
	 neovim#22 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
	 neovim#23 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
	 neovim#24 do_ucmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/usercmd.c:1661
	 neovim#25 execute_cmd0 at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:1612
	 neovim#26 do_one_cmd at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:2275
	 neovim#27 do_cmdline at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/ex_docmd.c:584
	 neovim#28 nv_colon at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:4058
	 neovim#29 normal_execute at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:1172
	 neovim#30 state_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/state.c:88
	 neovim#31 normal_enter at /usr/src/debug/neovim-0.8.2-2.fc38.x86_64/src/nvim/normal.c:471

Solution:
Subtract the offset from the buffer size.

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
folke pushed a commit to folke/neovim that referenced this pull request May 22, 2023
fix(usercmd): fix buffer overflow in uc_list()

Build with: -Wp,-D_FORTIFY_SOURCE=3 -O1 and gcc 13.

*** buffer overflow detected ***: terminated

(gdb) bt
  #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
  #1  0x00007f3eb8b93c03 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
  neovim#2  0x00007f3eb8b42aee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  neovim#3  0x00007f3eb8b2b87f in __GI_abort () at abort.c:79
  neovim#4  0x00007f3eb8b2c60f in __libc_message (fmt=fmt@entry=0x7f3eb8ca72e6 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:150
  neovim#5  0x00007f3eb8c27b29 in __GI___fortify_fail (msg=msg@entry=0x7f3eb8ca728c "buffer overflow detected") at fortify_fail.c:24
  neovim#6  0x00007f3eb8c26364 in __GI___chk_fail () at chk_fail.c:28
  neovim#7  0x00007f3eb8c25f45 in ___snprintf_chk (s=s@entry=0x55b8c7c096a5 <IObuff+5> "t' item", maxlen=maxlen@entry=1025, flag=flag@entry=2, slen=slen@entry=1020, format=format@entry=0x55b8c7b872a6 "%ldc") at snprintf_chk.c:29
  neovim#8  0x000055b8c7aea59f in snprintf (__fmt=0x55b8c7b872a6 "%ldc", __n=1025, __s=0x55b8c7c096a5 <IObuff+5> "t' item") at /usr/include/bits/stdio2.h:54
  neovim#9  uc_list (name=name@entry=0x55b8c8351788 "Explore", name_len=name_len@entry=7) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:534
  neovim#10 0x000055b8c7aeb8a0 in ex_command (eap=0x7fffdc350e60) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/usercmd.c:1009
  neovim#11 0x000055b8c7972537 in execute_cmd0 (retv=retv@entry=0x7fffdc350e54, eap=eap@entry=0x7fffdc350e60, errormsg=errormsg@entry=0x7fffdc350e58, preview=preview@entry=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:1620
  neovim#12 0x000055b8c7975c55 in do_one_cmd (cmdlinep=cmdlinep@entry=0x7fffdc3510b8, flags=flags@entry=0, cstack=cstack@entry=0x7fffdc351140, fgetline=fgetline@entry=0x55b8c79882b8 <getexline>, cookie=cookie@entry=0x0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:2279
  neovim#13 0x000055b8c79767fe in do_cmdline (cmdline=<optimized out>, fgetline=0x55b8c79882b8 <getexline>, cookie=0x0, flags=0) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/ex_docmd.c:578
  neovim#14 0x000055b8c7a17463 in nv_colon (cap=0x7fffdc351780) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:3228
  neovim#15 0x000055b8c7a11b35 in normal_execute (state=0x7fffdc351700, key=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:1196
  neovim#16 0x000055b8c7ab0994 in state_enter (s=0x7fffdc351700) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/state.c:99
  neovim#17 0x000055b8c7a0ef68 in normal_enter (cmdwin=false, noexmode=false) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/normal.c:497
  neovim#18 0x000055b8c78a0640 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/neovim-0.9.0-1.fc38.x86_64/src/nvim/main.c:641
ii14 added a commit to ii14/neovim that referenced this pull request Jul 22, 2023
Only patches up the symptoms, without solving the root cause.

This is the stack trace I've received:

    #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
    #1  0x00007ffff5d2eea5 in __GI_abort () at abort.c:79
    neovim#2  0x00007ffff5d2ed79 in __assert_fail_base (fmt=0x7ffff5e96be8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7ffff67262cd "!uv__is_closing(handle)",
        file=0x7ffff67262bd "src/unix/core.c", line=109, function=<optimized out>) at assert.c:92
    neovim#3  0x00007ffff5d54456 in __GI___assert_fail (assertion=assertion@entry=0x7ffff67262cd "!uv__is_closing(handle)", file=file@entry=0x7ffff67262bd "src/unix/core.c",
        line=line@entry=109, function=function@entry=0x7ffff6726598 <__PRETTY_FUNCTION__.10265> "uv_close") at assert.c:101
    neovim#4  0x00007ffff67118a8 in uv_close (handle=<optimized out>, close_cb=<optimized out>) at src/unix/core.c:109
    neovim#5  0x00000000005e5ca5 in stream_close_handle (stream=0x9edd20) at /tmp/tmp.acQVKjvA2Y/neovim-0.9.1/src/nvim/event/stream.c:142
    neovim#6  0x0000000000a7edc0 in ?? ()
    neovim#7  0x00000000005e5d6f in write_cb (req=<optimized out>, status=0) at /tmp/tmp.acQVKjvA2Y/neovim-0.9.1/src/nvim/event/wstream.c:145
    neovim#8  0x0000000000a7ee28 in ?? ()
    neovim#9  0x0000000000a7edd0 in ?? ()
    neovim#10 0x00007ffff671cc00 in uv__write_callbacks (stream=stream@entry=0x9edd28) at src/unix/stream.c:953
    neovim#11 0x00007ffff671d293 in uv__stream_destroy (stream=stream@entry=0x9edd28) at src/unix/stream.c:469
    neovim#12 0x00007ffff6711ae8 in uv__finish_close (handle=0x9edd28) at src/unix/core.c:287
    neovim#13 uv__run_closing_handles (loop=0x9bffe0 <main_loop>) at src/unix/core.c:317
    neovim#14 uv_run (loop=0x9bffe0 <main_loop>, mode=UV_RUN_DEFAULT) at src/unix/core.c:395
    neovim#15 0x00000000005f3c53 in loop_close (loop=0x9bffe0 <main_loop>, wait=true) at /tmp/tmp.acQVKjvA2Y/neovim-0.9.1/src/nvim/event/loop.c:162
    neovim#16 0x0000000000000000 in ?? ()

What's going on here, is that loop_close function forcibly closes uv
handles:

    uv_walk(&loop->uv, loop_walk_cb, NULL);

The problem is that neovim's streams keep track of whether the stream
was closed or not, and by pulling the rug from under their feet like
this, they might try to close the uv handle for the second time inside
their callbacks.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants