Bram Moolenaar wrote:
>
> Dominique Pelle wrote:
>
>> vim seems to be leaking memory when doing ":so %" with "syntax on" setting.
>>
>> Steps to reproduce:
>>
>> 1/ create a simple script as follows:
>>
>> $ cat leak.vim
>> " leaks memory when doing ":so %" while this file is loaded in vim
>> syntax on
>>
>> 2/ start vim
>>
>> $ valgrind --leak-check=yes vim -u NONE -U NONE leak.vim 2> vg.log
>>
>> 3/ in vim, source the current buffer (leak.vim), then quit
>>
>> :so %
>> :q
>>
>> 4/ observe that valgrind reports a memory leak
>>
>> ==18415== 22 bytes in 4 blocks are definitely lost in loss record 2 of 15
>> ==18415== at 0x4021620: malloc (vg_replace_malloc.c:149)
>> ==18415== by 0x8102F4C: lalloc (misc2.c:857)
>> ==18415== by 0x8102E6E: alloc (misc2.c:756)
>> ==18415== by 0x818C3B1: get_id_list (syntax.c:5761)
>> ==18415== by 0x81898E6: get_syn_options (syntax.c:4338)
>> ==18415== by 0x818A5E6: syn_cmd_region (syntax.c:4785)
>> ==18415== by 0x818C84A: ex_syntax (syntax.c:5974)
>> ==18415== by 0x809B897: do_one_cmd (ex_docmd.c:2621)
>> ==18415== by 0x80990FC: do_cmdline (ex_docmd.c:1099)
>> ==18415== by 0x80973A1: do_source (ex_cmds2.c:3054)
>> ==18415== by 0x8189DBF: syn_cmd_include (syntax.c:4494)
>> ==18415== by 0x818C84A: ex_syntax (syntax.c:5974)
>>
>> Whenever Ex command ":so %" is run, with "syntax on" in script,
>> 4 more blocks of memory leak, i.e.:
>>
>> - If I do ":so %" once, I see:
>> 22 bytes in 4 blocks are definitely lost in loss record 2 of 15
>> - If I do ":so %" twice, I see:
>> 44 bytes in 8 blocks are definitely lost in loss record 11 of 15
>> - I I do ": so %" three times, I see:
>> 66 bytes in 12 blocks are definitely lost in loss record 10 of 15
>> - etc.
>>
>> I built vim-7.1.135 on Linux with:
>> - configure --with-features=huge
>> - changed src/Makefile to compile without optimisation (-O0)
>> - changed src/Makefile to enable PROFILE_CFLAGS = -DEXITFREE
>>
>> I don't have a patch as I am unsure where it should be freed.
>
> It's not clear to me what memory is leaked (if any is really leaked,
> valgrind may give a false warning). When I put this line before "syntax
> on" it appears to disappear:
>
> let g:vimembedscript= 0
>
> So it's related to ":syn include".
>
What this setting changes is that it forbids sourcing of syntax/perl.vim,
syntax/python.vim, syntax/tcl.vim, syntax/ruby.vim and syntax/scheme.vim from
within syntax/vim.vim so maybe you (Dominique) might want to investigate which
one(s) of them leak(s) memory. (Rename one or more of them to something else,
or move them elsewhere -- temporarily of course -- and see if the leak
persists.)
Best regards,
Tony.
--
God may be subtle, but He isn't plain mean.
-- Albert Einstein
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---