" minimum.vim call setline(1, ['test1', 'test2', 'test3', 'test4', 'test5']) function! s:setloclist() abort call setloclist(1, [ \ {'bufnr': 1, 'lnum': 1, 'col': 1, 'nr': 1, 'text': 'test error 1', 'type': 'E'}, \ {'bufnr': 1, 'lnum': 4, 'col': 1, 'nr': 2, 'text': 'test error 2', 'type': 'E'} \], 'r') endfunction augroup Test_LocList autocmd! autocmd BufEnter * call s:setloclist() augroup END
vim -Nu minimum.vim
:lopen
<C-w>j<Return>
==17337== Memcheck, a memory error detector
==17337== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==17337== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==17337== Command: src/vim -Nu /home/erw7/minimum.vim
==17337==
==17337== Memcheck, a memory error detector
==17337== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==17337== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==17337== Command: src/vim -Nu /home/erw7/minimum.vim
==17337==
==17337== Invalid read of size 4
==17337== at 0x2CB6CB: qf_jump_to_buffer (quickfix.c:3317)
==17337== by 0x2CB94C: qf_jump_newwin (quickfix.c:3425)
==17337== by 0x2CB7A9: qf_jump (quickfix.c:3351)
==17337== by 0x2CEE29: ex_cc (quickfix.c:5178)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== by 0x1F1590: do_cmdline (ex_docmd.c:983)
==17337== by 0x1F0AA5: do_cmdline_cmd (ex_docmd.c:591)
==17337== Invalid read of size 4
==17337== at 0x2CB6CB: qf_jump_to_buffer (quickfix.c:3317)
==17337== by 0x2CB94C: qf_jump_newwin (quickfix.c:3425)
==17337== by 0x2CB7A9: qf_jump (quickfix.c:3351)
==17337== by 0x2CEE29: ex_cc (quickfix.c:5178)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== by 0x1F1590: do_cmdline (ex_docmd.c:983)
==17337== by 0x1F0AA5: do_cmdline_cmd (ex_docmd.c:591)
==17337== by 0x2CCB96: qf_view_result (quickfix.c:3959)
==17337== by 0x28D304: nv_down (normal.c:4136)
==17337== by 0x287A29: normal_cmd (normal.c:1097)
==17337== by 0x427117: main_loop (main.c:1478)
==17337== by 0x426583: vim_main2 (main.c:868)
==17337== Address 0x6115fc8 is 24 bytes inside a block of size 72 free'd
==17337== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x278ABA: vim_free (misc2.c:1807)
==17337== by 0x2CC5FC: qf_free_items (quickfix.c:3786)
==17337== by 0x2D26FB: qf_add_entries (quickfix.c:7134)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337== by 0x399032: ex_call (userfunc.c:4083)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== Block was alloc'd at
==17337== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x277C90: lalloc (misc2.c:925)
==17337== by 0x277B3B: alloc (misc2.c:828)
==17337== by 0x2C9735: qf_add_entry (quickfix.c:2062)
==17337== by 0x2D25D2: qf_add_entry_from_dict (quickfix.c:7077)
==17337== by 0x2D275F: qf_add_entries (quickfix.c:7147)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337==
==17337== Invalid read of size 1
==17337== at 0x2CB193: qf_jump_edit_buffer (quickfix.c:3116)
==17337== by 0x2CB6EE: qf_jump_to_buffer (quickfix.c:3319)
==17337== by 0x2CB94C: qf_jump_newwin (quickfix.c:3425)
==17337== by 0x2CB7A9: qf_jump (quickfix.c:3351)
==17337== by 0x2CEE29: ex_cc (quickfix.c:5178)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== by 0x1F1590: do_cmdline (ex_docmd.c:983)
==17337== by 0x1F0AA5: do_cmdline_cmd (ex_docmd.c:591)
==17337== by 0x2CCB96: qf_view_result (quickfix.c:3959)
==17337== by 0x28D304: nv_down (normal.c:4136)
==17337== by 0x287A29: normal_cmd (normal.c:1097)
==17337== by 0x427117: main_loop (main.c:1478)
==17337== Address 0x6115ff2 is 66 bytes inside a block of size 72 free'd
==17337== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x278ABA: vim_free (misc2.c:1807)
==17337== by 0x2CC5FC: qf_free_items (quickfix.c:3786)
==17337== by 0x2D26FB: qf_add_entries (quickfix.c:7134)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337== by 0x399032: ex_call (userfunc.c:4083)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== Block was alloc'd at
==17337== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x277C90: lalloc (misc2.c:925)
==17337== by 0x277B3B: alloc (misc2.c:828)
==17337== by 0x2C9735: qf_add_entry (quickfix.c:2062)
==17337== by 0x2D25D2: qf_add_entry_from_dict (quickfix.c:7077)
==17337== by 0x2D275F: qf_add_entries (quickfix.c:7147)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337==
==17337== by 0x2CCB96: qf_view_result (quickfix.c:3959)
==17337== by 0x28D304: nv_down (normal.c:4136)
==17337== by 0x287A29: normal_cmd (normal.c:1097)
==17337== by 0x427117: main_loop (main.c:1478)
==17337== by 0x426583: vim_main2 (main.c:868)
==17337== Address 0x6115fc8 is 24 bytes inside a block of size 72 free'd
==17337== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x278ABA: vim_free (misc2.c:1807)
==17337== by 0x2CC5FC: qf_free_items (quickfix.c:3786)
==17337== by 0x2D26FB: qf_add_entries (quickfix.c:7134)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337== by 0x399032: ex_call (userfunc.c:4083)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== Block was alloc'd at
==17337== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x277C90: lalloc (misc2.c:925)
==17337== by 0x277B3B: alloc (misc2.c:828)
==17337== by 0x2C9735: qf_add_entry (quickfix.c:2062)
==17337== by 0x2D25D2: qf_add_entry_from_dict (quickfix.c:7077)
==17337== by 0x2D275F: qf_add_entries (quickfix.c:7147)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337==
==17337== Invalid read of size 1
==17337== at 0x2CB193: qf_jump_edit_buffer (quickfix.c:3116)
==17337== by 0x2CB6EE: qf_jump_to_buffer (quickfix.c:3319)
==17337== by 0x2CB94C: qf_jump_newwin (quickfix.c:3425)
==17337== by 0x2CB7A9: qf_jump (quickfix.c:3351)
==17337== by 0x2CEE29: ex_cc (quickfix.c:5178)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== by 0x1F1590: do_cmdline (ex_docmd.c:983)
==17337== by 0x1F0AA5: do_cmdline_cmd (ex_docmd.c:591)
==17337== by 0x2CCB96: qf_view_result (quickfix.c:3959)
==17337== by 0x28D304: nv_down (normal.c:4136)
==17337== by 0x287A29: normal_cmd (normal.c:1097)
==17337== by 0x427117: main_loop (main.c:1478)
==17337== Address 0x6115ff2 is 66 bytes inside a block of size 72 free'd
==17337== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x278ABA: vim_free (misc2.c:1807)
==17337== by 0x2CC5FC: qf_free_items (quickfix.c:3786)
==17337== by 0x2D26FB: qf_add_entries (quickfix.c:7134)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337== by 0x399032: ex_call (userfunc.c:4083)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== Block was alloc'd at
==17337== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x277C90: lalloc (misc2.c:925)
==17337== by 0x277B3B: alloc (misc2.c:828)
==17337== by 0x2C9735: qf_add_entry (quickfix.c:2062)
==17337== by 0x2D25D2: qf_add_entry_from_dict (quickfix.c:7077)
==17337== by 0x2D275F: qf_add_entries (quickfix.c:7147)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337==
==17337== Invalid read of size 4
==17337== at 0x2CB217: qf_jump_edit_buffer (quickfix.c:3131)
==17337== by 0x2CB6EE: qf_jump_to_buffer (quickfix.c:3319)
==17337== by 0x2CB94C: qf_jump_newwin (quickfix.c:3425)
==17337== by 0x2CB7A9: qf_jump (quickfix.c:3351)
==17337== by 0x2CEE29: ex_cc (quickfix.c:5178)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== by 0x1F1590: do_cmdline (ex_docmd.c:983)
==17337== by 0x1F0AA5: do_cmdline_cmd (ex_docmd.c:591)
==17337== by 0x2CCB96: qf_view_result (quickfix.c:3959)
==17337== by 0x28D304: nv_down (normal.c:4136)
==17337== by 0x287A29: normal_cmd (normal.c:1097)
==17337== by 0x427117: main_loop (main.c:1478)
==17337== Address 0x6115fc8 is 24 bytes inside a block of size 72 free'd
==17337== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x278ABA: vim_free (misc2.c:1807)
==17337== by 0x2CC5FC: qf_free_items (quickfix.c:3786)
==17337== by 0x2D26FB: qf_add_entries (quickfix.c:7134)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337== by 0x399032: ex_call (userfunc.c:4083)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== Block was alloc'd at
==17337== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x277C90: lalloc (misc2.c:925)
==17337== by 0x277B3B: alloc (misc2.c:828)
==17337== by 0x2C9735: qf_add_entry (quickfix.c:2062)
==17337== by 0x2D25D2: qf_add_entry_from_dict (quickfix.c:7077)
==17337== by 0x2D275F: qf_add_entries (quickfix.c:7147)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337==
==17337== Invalid read of size 4
==17337== at 0x2CB217: qf_jump_edit_buffer (quickfix.c:3131)
==17337== by 0x2CB6EE: qf_jump_to_buffer (quickfix.c:3319)
==17337== by 0x2CB94C: qf_jump_newwin (quickfix.c:3425)
==17337== by 0x2CB7A9: qf_jump (quickfix.c:3351)
==17337== by 0x2CEE29: ex_cc (quickfix.c:5178)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== by 0x1F1590: do_cmdline (ex_docmd.c:983)
==17337== by 0x1F0AA5: do_cmdline_cmd (ex_docmd.c:591)
==17337== by 0x2CCB96: qf_view_result (quickfix.c:3959)
==17337== by 0x28D304: nv_down (normal.c:4136)
==17337== by 0x287A29: normal_cmd (normal.c:1097)
==17337== by 0x427117: main_loop (main.c:1478)
==17337== Address 0x6115fc8 is 24 bytes inside a block of size 72 free'd
==17337== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x278ABA: vim_free (misc2.c:1807)
==17337== by 0x2CC5FC: qf_free_items (quickfix.c:3786)
==17337== by 0x2D26FB: qf_add_entries (quickfix.c:7134)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337== by 0x399032: ex_call (userfunc.c:4083)
==17337== by 0x1F4355: do_one_cmd (ex_docmd.c:2537)
==17337== Block was alloc'd at
==17337== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17337== by 0x277C90: lalloc (misc2.c:925)
==17337== by 0x277B3B: alloc (misc2.c:828)
==17337== by 0x2C9735: qf_add_entry (quickfix.c:2062)
==17337== by 0x2D25D2: qf_add_entry_from_dict (quickfix.c:7077)
==17337== by 0x2D275F: qf_add_entries (quickfix.c:7147)
==17337== by 0x2D3305: set_errorlist (quickfix.c:7537)
==17337== by 0x2D4942: set_qf_ll_list (quickfix.c:8262)
==17337== by 0x2D49C5: f_setloclist (quickfix.c:8283)
==17337== by 0x1CCFC8: call_internal_func (evalfunc.c:1260)
==17337== by 0x394149: call_func (userfunc.c:2197)
==17337== by 0x390BBF: get_func_tv (userfunc.c:690)
==17337==
==17337==
==17337==
==17337== HEAP SUMMARY:
==17337== in use at exit: 246,829 bytes in 748 blocks
==17337== total heap usage: 3,206 allocs, 2,458 frees, 1,031,233 bytes allocated
==17337==
==17337== HEAP SUMMARY:
==17337== in use at exit: 246,829 bytes in 748 blocks
==17337== total heap usage: 3,206 allocs, 2,458 frees, 1,031,233 bytes allocated
==17337==
==17337== LEAK SUMMARY:
==17337== definitely lost: 0 bytes in 0 blocks
==17337== indirectly lost: 0 bytes in 0 blocks
==17337== possibly lost: 52 bytes in 2 blocks
==17337== still reachable: 246,777 bytes in 746 blocks
==17337== suppressed: 0 bytes in 0 blocks
==17337== Rerun with --leak-check=full to see details of leaked memory
==17337==
==17337== For counts of detected and suppressed errors, rerun with: -v
==17337== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
==17337== LEAK SUMMARY:
==17337== definitely lost: 0 bytes in 0 blocks
==17337== indirectly lost: 0 bytes in 0 blocks
==17337== possibly lost: 52 bytes in 2 blocks
==17337== still reachable: 246,777 bytes in 746 blocks
==17337== suppressed: 0 bytes in 0 blocks
==17337== Rerun with --leak-check=full to see details of leaked memory
==17337==
==17337== For counts of detected and suppressed errors, rerun with: -v
==17337== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
https://github.com/vim/vim/pull/6946
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.![]()
Merging #6946 into master will decrease coverage by
0.00%.
The diff coverage is46.66%.
@@ Coverage Diff @@ ## master #6946 +/- ## ========================================== - Coverage 88.55% 88.55% -0.01% ========================================== Files 148 148 Lines 161340 161355 +15 ========================================== + Hits 142879 142890 +11 - Misses 18461 18465 +4
| Impacted Files | Coverage Δ | |
|---|---|---|
| src/quickfix.c | 94.70% <46.66%> (-0.21%) |
⬇️ |
| src/gui.c | 62.75% <0.00%> (-0.05%) |
⬇️ |
| src/ex_getln.c | 91.34% <0.00%> (+0.04%) |
⬆️ |
| src/gui_gtk_x11.c | 58.88% <0.00%> (+0.04%) |
⬆️ |
| src/search.c | 91.86% <0.00%> (+0.09%) |
⬆️ |
| src/if_xcmdsrv.c | 88.90% <0.00%> (+0.17%) |
⬆️ |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact),ø = not affected,? = missing data
Powered by Codecov. Last update 4a091b9...8b04c23. Read the comment docs.
Can you turn the example into a test? I gave it a try but it didn't trigger the error.
In my environment it looks like following. Would you like to reproduce it in your environment?
valgrind --tool=memcheck vim -Nu ~/minimum.vim 2>& vim_valgrid.log
:lopen
<Return>
:q!
:q!
cat vim_valgrid.log
==3663== Memcheck, a memory error detector
==3663== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==3663== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==3663== Command: vim -Nu /home/erw7/minimum.vim
==3663==
==3663== Memcheck, a memory error detector
==3663== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==3663== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==3663== Command: vim -Nu /home/erw7/minimum.vim
==3663==
==3663== Invalid read of size 4
==3663== at 0x2CB73B: qf_jump_to_buffer (quickfix.c:3317)
==3663== Invalid read of size 4
==3663== at 0x2CB73B: qf_jump_to_buffer (quickfix.c:3317)
==3663== by 0x2CB9BC: qf_jump_newwin (quickfix.c:3425)
==3663== by 0x2CB819: qf_jump (quickfix.c:3351)
==3663== by 0x2CEE99: ex_cc (quickfix.c:5178)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== by 0x1F15E3: do_cmdline (ex_docmd.c:983)
==3663== by 0x1F0AF8: do_cmdline_cmd (ex_docmd.c:591)
==3663== by 0x2CCC06: qf_view_result (quickfix.c:3959)
==3663== by 0x28D36D: nv_down (normal.c:4136)
==3663== by 0x287A92: normal_cmd (normal.c:1097)
==3663== by 0x4272B7: main_loop (main.c:1478)
==3663== by 0x426723: vim_main2 (main.c:868)
==3663== Address 0x61162c8 is 24 bytes inside a block of size 72 free'd
==3663== by 0x2CB9BC: qf_jump_newwin (quickfix.c:3425)
==3663== by 0x2CB819: qf_jump (quickfix.c:3351)
==3663== by 0x2CEE99: ex_cc (quickfix.c:5178)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== by 0x1F15E3: do_cmdline (ex_docmd.c:983)
==3663== by 0x1F0AF8: do_cmdline_cmd (ex_docmd.c:591)
==3663== by 0x2CCC06: qf_view_result (quickfix.c:3959)
==3663== by 0x28D36D: nv_down (normal.c:4136)
==3663== by 0x287A92: normal_cmd (normal.c:1097)
==3663== by 0x4272B7: main_loop (main.c:1478)
==3663== by 0x426723: vim_main2 (main.c:868)
==3663== Address 0x61162c8 is 24 bytes inside a block of size 72 free'd
==3663== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x278B23: vim_free (misc2.c:1807)
==3663== by 0x2CC66C: qf_free_items (quickfix.c:3786)
==3663== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x278B23: vim_free (misc2.c:1807)
==3663== by 0x2CC66C: qf_free_items (quickfix.c:3786)
==3663== by 0x2D276B: qf_add_entries (quickfix.c:7134)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D276B: qf_add_entries (quickfix.c:7134)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663== by 0x3990C0: ex_call (userfunc.c:4092)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== Block was alloc'd at
==3663== by 0x3990C0: ex_call (userfunc.c:4092)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== Block was alloc'd at
==3663== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x277CF9: lalloc (misc2.c:925)
==3663== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x277CF9: lalloc (misc2.c:925)
==3663== by 0x277BA4: alloc (misc2.c:828)
==3663== by 0x2C97A5: qf_add_entry (quickfix.c:2062)
==3663== by 0x277BA4: alloc (misc2.c:828)
==3663== by 0x2C97A5: qf_add_entry (quickfix.c:2062)
==3663== by 0x2D2642: qf_add_entry_from_dict (quickfix.c:7077)
==3663== by 0x2D27CF: qf_add_entries (quickfix.c:7147)
==3663== by 0x2D2642: qf_add_entry_from_dict (quickfix.c:7077)
==3663== by 0x2D27CF: qf_add_entries (quickfix.c:7147)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663==
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663==
==3663== Invalid read of size 1
==3663== at 0x2CB203: qf_jump_edit_buffer (quickfix.c:3116)
==3663== by 0x2CB75E: qf_jump_to_buffer (quickfix.c:3319)
==3663== by 0x2CB9BC: qf_jump_newwin (quickfix.c:3425)
==3663== Invalid read of size 1
==3663== at 0x2CB203: qf_jump_edit_buffer (quickfix.c:3116)
==3663== by 0x2CB75E: qf_jump_to_buffer (quickfix.c:3319)
==3663== by 0x2CB9BC: qf_jump_newwin (quickfix.c:3425)
==3663== by 0x2CB819: qf_jump (quickfix.c:3351)
==3663== by 0x2CEE99: ex_cc (quickfix.c:5178)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== by 0x1F15E3: do_cmdline (ex_docmd.c:983)
==3663== by 0x1F0AF8: do_cmdline_cmd (ex_docmd.c:591)
==3663== by 0x2CB819: qf_jump (quickfix.c:3351)
==3663== by 0x2CEE99: ex_cc (quickfix.c:5178)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== by 0x1F15E3: do_cmdline (ex_docmd.c:983)
==3663== by 0x1F0AF8: do_cmdline_cmd (ex_docmd.c:591)
==3663== by 0x2CCC06: qf_view_result (quickfix.c:3959)
==3663== by 0x28D36D: nv_down (normal.c:4136)
==3663== by 0x2CCC06: qf_view_result (quickfix.c:3959)
==3663== by 0x28D36D: nv_down (normal.c:4136)
==3663== by 0x287A92: normal_cmd (normal.c:1097)
==3663== by 0x4272B7: main_loop (main.c:1478)
==3663== by 0x287A92: normal_cmd (normal.c:1097)
==3663== by 0x4272B7: main_loop (main.c:1478)
==3663== Address 0x61162f2 is 66 bytes inside a block of size 72 free'd
==3663== Address 0x61162f2 is 66 bytes inside a block of size 72 free'd
==3663== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x278B23: vim_free (misc2.c:1807)
==3663== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x278B23: vim_free (misc2.c:1807)
==3663== by 0x2CC66C: qf_free_items (quickfix.c:3786)
==3663== by 0x2D276B: qf_add_entries (quickfix.c:7134)
==3663== by 0x2CC66C: qf_free_items (quickfix.c:3786)
==3663== by 0x2D276B: qf_add_entries (quickfix.c:7134)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663== by 0x3990C0: ex_call (userfunc.c:4092)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663== by 0x3990C0: ex_call (userfunc.c:4092)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== Block was alloc'd at
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== Block was alloc'd at
==3663== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x277CF9: lalloc (misc2.c:925)
==3663== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x277CF9: lalloc (misc2.c:925)
==3663== by 0x277BA4: alloc (misc2.c:828)
==3663== by 0x2C97A5: qf_add_entry (quickfix.c:2062)
==3663== by 0x2D2642: qf_add_entry_from_dict (quickfix.c:7077)
==3663== by 0x2D27CF: qf_add_entries (quickfix.c:7147)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x277BA4: alloc (misc2.c:828)
==3663== by 0x2C97A5: qf_add_entry (quickfix.c:2062)
==3663== by 0x2D2642: qf_add_entry_from_dict (quickfix.c:7077)
==3663== by 0x2D27CF: qf_add_entries (quickfix.c:7147)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663==
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663==
==3663== Invalid read of size 4
==3663== at 0x2CB287: qf_jump_edit_buffer (quickfix.c:3131)
==3663== by 0x2CB75E: qf_jump_to_buffer (quickfix.c:3319)
==3663== by 0x2CB9BC: qf_jump_newwin (quickfix.c:3425)
==3663== by 0x2CB819: qf_jump (quickfix.c:3351)
==3663== Invalid read of size 4
==3663== at 0x2CB287: qf_jump_edit_buffer (quickfix.c:3131)
==3663== by 0x2CB75E: qf_jump_to_buffer (quickfix.c:3319)
==3663== by 0x2CB9BC: qf_jump_newwin (quickfix.c:3425)
==3663== by 0x2CB819: qf_jump (quickfix.c:3351)
==3663== by 0x2CEE99: ex_cc (quickfix.c:5178)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== by 0x1F15E3: do_cmdline (ex_docmd.c:983)
==3663== by 0x1F0AF8: do_cmdline_cmd (ex_docmd.c:591)
==3663== by 0x2CCC06: qf_view_result (quickfix.c:3959)
==3663== by 0x2CEE99: ex_cc (quickfix.c:5178)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== by 0x1F15E3: do_cmdline (ex_docmd.c:983)
==3663== by 0x1F0AF8: do_cmdline_cmd (ex_docmd.c:591)
==3663== by 0x2CCC06: qf_view_result (quickfix.c:3959)
==3663== by 0x28D36D: nv_down (normal.c:4136)
==3663== by 0x287A92: normal_cmd (normal.c:1097)
==3663== by 0x28D36D: nv_down (normal.c:4136)
==3663== by 0x287A92: normal_cmd (normal.c:1097)
==3663== by 0x4272B7: main_loop (main.c:1478)
==3663== Address 0x61162c8 is 24 bytes inside a block of size 72 free'd
==3663== by 0x4272B7: main_loop (main.c:1478)
==3663== Address 0x61162c8 is 24 bytes inside a block of size 72 free'd
==3663== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== at 0x4C30D3B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x278B23: vim_free (misc2.c:1807)
==3663== by 0x2CC66C: qf_free_items (quickfix.c:3786)
==3663== by 0x278B23: vim_free (misc2.c:1807)
==3663== by 0x2CC66C: qf_free_items (quickfix.c:3786)
==3663== by 0x2D276B: qf_add_entries (quickfix.c:7134)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D276B: qf_add_entries (quickfix.c:7134)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663== by 0x3990C0: ex_call (userfunc.c:4092)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663== by 0x3990C0: ex_call (userfunc.c:4092)
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== Block was alloc'd at
==3663== by 0x1F43A8: do_one_cmd (ex_docmd.c:2537)
==3663== Block was alloc'd at
==3663== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x277CF9: lalloc (misc2.c:925)
==3663== by 0x277BA4: alloc (misc2.c:828)
==3663== by 0x2C97A5: qf_add_entry (quickfix.c:2062)
==3663== by 0x2D2642: qf_add_entry_from_dict (quickfix.c:7077)
==3663== by 0x2D27CF: qf_add_entries (quickfix.c:7147)
==3663== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3663== by 0x277CF9: lalloc (misc2.c:925)
==3663== by 0x277BA4: alloc (misc2.c:828)
==3663== by 0x2C97A5: qf_add_entry (quickfix.c:2062)
==3663== by 0x2D2642: qf_add_entry_from_dict (quickfix.c:7077)
==3663== by 0x2D27CF: qf_add_entries (quickfix.c:7147)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D3375: set_errorlist (quickfix.c:7537)
==3663== by 0x2D49B2: set_qf_ll_list (quickfix.c:8262)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x2D4A35: f_setloclist (quickfix.c:8283)
==3663== by 0x1CD006: call_internal_func (evalfunc.c:1260)
==3663== by 0x3941D7: call_func (userfunc.c:2206)
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663==
==3663== by 0x390C2F: get_func_tv (userfunc.c:690)
==3663==
==3663==
==3663==
==3663== HEAP SUMMARY:
==3663== in use at exit: 247,085 bytes in 749 blocks
==3663== total heap usage: 3,217 allocs, 2,468 frees, 1,031,896 bytes allocated
==3663==
==3663== HEAP SUMMARY:
==3663== in use at exit: 247,085 bytes in 749 blocks
==3663== total heap usage: 3,217 allocs, 2,468 frees, 1,031,896 bytes allocated
==3663==
==3663== LEAK SUMMARY:
==3663== definitely lost: 0 bytes in 0 blocks
==3663== indirectly lost: 0 bytes in 0 blocks
==3663== possibly lost: 52 bytes in 2 blocks
==3663== still reachable: 247,033 bytes in 747 blocks
==3663== suppressed: 0 bytes in 0 blocks
==3663== Rerun with --leak-check=full to see details of leaked memory
==3663==
==3663== For counts of detected and suppressed errors, rerun with: -v
==3663== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
==3663== LEAK SUMMARY:
==3663== definitely lost: 0 bytes in 0 blocks
==3663== indirectly lost: 0 bytes in 0 blocks
==3663== possibly lost: 52 bytes in 2 blocks
==3663== still reachable: 247,033 bytes in 747 blocks
==3663== suppressed: 0 bytes in 0 blocks
==3663== Rerun with --leak-check=full to see details of leaked memory
==3663==
==3663== For counts of detected and suppressed errors, rerun with: -v
==3663== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
If a breakpoint is set to apply_autocmds, qf_jump_open_window > qf_jump_to_usable_window calls apply_autocmds as follows. This path should cause the same phenomenon as b6f1480.
(gdb) break apply_autocmds if event == EVENT_BUFENTER
(gdb) run -Nu ~/minimum.vim
...
Breakpoint 1 at 0x7008f: file autocmd.c, line 1615.
Starting program: vim -Nu ~/minimum.vim
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Breakpoint 1, apply_autocmds (event=EVENT_BUFENTER, fname=0x0, fname_io=0x0, force=0, buf=0x555555b38d20) at autocmd.c:1615
1615 return apply_autocmds_group(event, fname, fname_io, force,
Continuing.
Breakpoint 1, apply_autocmds (event=EVENT_BUFENTER, fname=0x0, fname_io=0x0, force=0, buf=0x555555b38d20) at autocmd.c:1615
1615 return apply_autocmds_group(event, fname, fname_io, force,
#0 apply_autocmds (event=EVENT_BUFENTER, fname=0x0, fname_io=0x0, force=0, buf=0x555555b38d20) at autocmd.c:1615
#1 0x00005555558124ce in win_enter_ext (wp=0x555555b36720, undo_sync=1, curwin_invalid=0, trigger_new_autocmds=0, trigger_enter_autocmds=1,
trigger_leave_autocmds=1) at window.c:4757
#2 0x0000555555812124 in win_enter (wp=0x555555b36720, undo_sync=1) at window.c:4644
#3 0x0000555555811c19 in win_goto (wp=0x555555b36720) at window.c:4420
#4 0x0000555555716f08 in qf_goto_win_with_ll_file (use_win=0x555555b36720, qf_fnum=1, ll_ref=0x555555b780e0) at quickfix.c:2981
#5 0x000055555571719e in qf_jump_to_usable_window (qf_fnum=1, newwin=0, opened_window=0x7fffffffd8ac) at quickfix.c:3088
#6 0x00005555557176e6 in qf_jump_open_window (qi=0x555555b780e0, qf_ptr=0x555555b78720, newwin=0, opened_window=0x7fffffffd8ac) at quickfix.c:3281
#7 0x0000555555717980 in qf_jump_newwin (qi=0x555555b780e0, dir=0, errornr=1, forceit=0, newwin=0) at quickfix.c:3419
#8 0x000055555571781a in qf_jump (qi=0x555555b780e0, dir=0, errornr=1, forceit=0) at quickfix.c:3351
#9 0x000055555571ae9a in ex_cc (eap=0x7fffffffd9f0) at quickfix.c:5178
#10 0x00005555556403a9 in do_one_cmd (cmdlinep=0x7fffffffdc28, sourcing=1, cstack=0x7fffffffdd20, fgetline=0x0, cookie=0x0) at ex_docmd.c:2537
#11 0x000055555563d5e4 in do_cmdline (cmdline=0x5555558962ce ".ll", fgetline=0x0, cookie=0x0, flags=11) at ex_docmd.c:983
#12 0x000055555563caf9 in do_cmdline_cmd (cmd=0x5555558962ce ".ll") at ex_docmd.c:591
#13 0x0000555555718c07 in qf_view_result (split=0) at quickfix.c:3959
#14 0x00005555556d936e in nv_down (cap=0x7fffffffe2d0) at normal.c:4136
#15 0x00005555556d3a93 in normal_cmd (oap=0x7fffffffe370, toplevel=1) at normal.c:1097
#16 0x00005555558732b8 in main_loop (cmdwin=0, noexmode=0) at main.c:1478
#17 0x0000555555872724 in vim_main2 () at main.c:868
#18 0x0000555555871f3a in main (argc=3, argv=0x7fffffffe568) at main.c:412
Can you turn the example into a test? I gave it a try but it didn't trigger the error.