Nico Weber wrote:

> Hi,
>
> On 03.05.2009, at 00:03, Dominique Pellé wrote:
>
>> After applying your patch, there are no such errors anymore.
>>
>> However, when exiting, I see that those blocks are not being
>> freed:
>>
>> ==16990== 217 bytes in 10 blocks are possibly lost in loss record 36
>> of 57
>> ==16990==    at 0x402603E: malloc (vg_replace_malloc.c:207)
>> ==16990==    by 0x81142FA: lalloc (misc2.c:866)
>> ==16990==    by 0x8114216: alloc (misc2.c:765)
>> ==16990==    by 0x807AD1D: dictitem_alloc (eval.c:6775)
>> ==16990==    by 0x8074FFD: set_var_lval (eval.c:2856)
>> ==16990==    by 0x80742F4: ex_let_one (eval.c:2414)
>> ==16990==    by 0x807329F: ex_let_vars (eval.c:1869)
>> ==16990==    by 0x8073250: ex_let (eval.c:1834)
>> ==16990==    by 0x80A6AA3: do_one_cmd (ex_docmd.c:2622)
>> ==16990==    by 0x80A4323: do_cmdline (ex_docmd.c:1096)
>> ==16990==    by 0x8090328: call_user_func (eval.c:21301)
>> ==16990==    by 0x807C4FE: call_func (eval.c:8079)
>> ==16990==    by 0x807C142: get_func_tv (eval.c:7925)
>> ==16990==    by 0x8075B83: ex_call (eval.c:3333)
>> ==16990==    by 0x80A6AA3: do_one_cmd (ex_docmd.c:2622)
>> ==16990==    by 0x80A4323: do_cmdline (ex_docmd.c:1096)
>> ==16990==    by 0x812A758: nv_colon (normal.c:5227)
>> ==16990==    by 0x8123DA2: normal_cmd (normal.c:1189)
>> ==16990==    by 0x80E6D49: main_loop (main.c:1180)
>> ==16990==    by 0x80E6896: main (main.c:939)
>>
>> I built Vim with -DEXITFREE (i.e. uncommented line
>> PROFILE_CFLAGS = -DEXITFREE  in src/Makefile)
>> so normally all blocks should be freed when exiting.
>
> Thanks for checking.
>
> I've attached an updated version of the patch that fixes some of the
> leaks. The copy()d dicts in the script don't get freed, but I don't
> (yet?) understand why.
>
> Nico


I tried to fix the leak as well but without success so far.
It does not seem simple.

In any cases, it's a real leak, running the following leak.vim
script for example causes Vim memory usage to grow
continuously:

--- 8< --- cut here --- 8< --- cut here --- 8< ---
set nocp

" foo.vim is the script attached in the original bug submission
" at 
http://groups.google.com/group/vim_mac/browse_thread/thread/4e0149ff4f84e3d3
so foo.vim

let g:count_loops = 0
while 1
  call foo#Buffer.New()
  q
  let g:count_loops = g:count_loops + 1
endwhile
--- 8< --- cut here --- 8< --- cut here --- 8< ---

I do:

$ vim -u NONE leak.vim
:so %

Then in another xterm, I can see with "top" that memory usage
of Vim keeps increasing.

If I run the leak.vim script with Valgrind...

valgrind --leak-resolution=high --leak-check=yes \
    --num-callers=30 --track-fds=yes 2> vg.log \
   ./vim -u NONE leak.vim

Then do:
- :so %
- let the script execute for some time
- press CTRL-C to interrupt the infinite loop
- Look at how many times loop iterated with
   :echo g:count_loops
  (it prints 2774 for example)
- then quit vim: qa!

Then look for leaks in vg.log, and observe that some leaks
happen exactly 2774 times (same number as number as
g:loop_count):

==22962== 27,740 bytes in 2,774 blocks are possibly lost in loss
record 113 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x8114C16: vim_strsave (misc2.c:1177)
==22962==    by 0x808C427: copy_tv (eval.c:19380)
==22962==    by 0x808AE51: get_var_tv (eval.c:18452)
==22962==    by 0x80785E7: eval7 (eval.c:5032)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8079667: get_list_tv (eval.c:5675)
==22962==    by 0x807837D: eval7 (eval.c:4943)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==
==22962==
==22962== 33,288 bytes in 5,548 blocks are possibly lost in loss
record 114 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x8114C16: vim_strsave (misc2.c:1177)
==22962==    by 0x808C427: copy_tv (eval.c:19380)
==22962==    by 0x807B117: dict_copy (eval.c:6961)
==22962==    by 0x808C662: item_copy (eval.c:19471)
==22962==    by 0x807DB82: f_copy (eval.c:9141)
==22962==    by 0x807C7DF: call_func (eval.c:8188)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x807859A: eval7 (eval.c:5018)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x80A2793: do_source (ex_cmds2.c:3119)
==22962==    by 0x80A2047: cmd_source (ex_cmds2.c:2741)
==22962==    by 0x80A1F9B: ex_source (ex_cmds2.c:2714)
==22962==
==22962==
==22962== 49,932 bytes in 8,322 blocks are possibly lost in loss
record 115 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x8114C16: vim_strsave (misc2.c:1177)
==22962==    by 0x808C427: copy_tv (eval.c:19380)
==22962==    by 0x807B117: dict_copy (eval.c:6961)
==22962==    by 0x808C662: item_copy (eval.c:19471)
==22962==    by 0x807DB82: f_copy (eval.c:9141)
==22962==    by 0x807C7DF: call_func (eval.c:8188)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x807859A: eval7 (eval.c:5018)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x808AF05: handle_subscript (eval.c:18491)
==22962==    by 0x8078640: eval7 (eval.c:5046)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==
==22962==
==22962== 58,254 bytes in 2,774 blocks are possibly lost in loss
record 116 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x807AEFC: dictitem_alloc (eval.c:6855)
==22962==    by 0x807507D: set_var_lval (eval.c:2864)
==22962==    by 0x8074374: ex_let_one (eval.c:2422)
==22962==    by 0x807331F: ex_let_vars (eval.c:1877)
==22962==    by 0x80732D0: ex_let (eval.c:1842)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x80A2793: do_source (ex_cmds2.c:3119)
==22962==    by 0x80A2047: cmd_source (ex_cmds2.c:2741)
==22962==    by 0x80A1F9B: ex_source (ex_cmds2.c:2714)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x812ACC4: nv_colon (normal.c:5227)
==22962==    by 0x812430E: normal_cmd (normal.c:1189)
==22962==    by 0x80E6F3D: main_loop (main.c:1180)
==22962==
==22962==
==22962== 77,672 bytes in 2,774 blocks are possibly lost in loss
record 117 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x807AEFC: dictitem_alloc (eval.c:6855)
==22962==    by 0x807507D: set_var_lval (eval.c:2864)
==22962==    by 0x8074374: ex_let_one (eval.c:2422)
==22962==    by 0x807331F: ex_let_vars (eval.c:1877)
==22962==    by 0x80732D0: ex_let (eval.c:1842)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x808AF05: handle_subscript (eval.c:18491)
==22962==    by 0x8078640: eval7 (eval.c:5046)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==
==22962==
==22962== 133,152 bytes in 5,548 blocks are possibly lost in loss
record 118 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x807AEFC: dictitem_alloc (eval.c:6855)
==22962==    by 0x807B0B3: dict_copy (eval.c:6948)
==22962==    by 0x808C662: item_copy (eval.c:19471)
==22962==    by 0x807DB82: f_copy (eval.c:9141)
==22962==    by 0x807C7DF: call_func (eval.c:8188)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x807859A: eval7 (eval.c:5018)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x80A2793: do_source (ex_cmds2.c:3119)
==22962==    by 0x80A2047: cmd_source (ex_cmds2.c:2741)
==22962==    by 0x80A1F9B: ex_source (ex_cmds2.c:2714)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==
==22962==
==22962== 160,892 bytes in 5,548 blocks are possibly lost in loss
record 119 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x807AEFC: dictitem_alloc (eval.c:6855)
==22962==    by 0x807507D: set_var_lval (eval.c:2864)
==22962==    by 0x8074374: ex_let_one (eval.c:2422)
==22962==    by 0x807331F: ex_let_vars (eval.c:1877)
==22962==    by 0x80732D0: ex_let (eval.c:1842)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x80A2793: do_source (ex_cmds2.c:3119)
==22962==    by 0x80A2047: cmd_source (ex_cmds2.c:2741)
==22962==    by 0x80A1F9B: ex_source (ex_cmds2.c:2714)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x812ACC4: nv_colon (normal.c:5227)
==22962==    by 0x812430E: normal_cmd (normal.c:1189)
==22962==    by 0x80E6F3D: main_loop (main.c:1180)
==22962==    by 0x80E6A8A: main (main.c:939)
==22962==
==22962==
==22962== 213,598 bytes in 8,322 blocks are possibly lost in loss
record 120 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x807AEFC: dictitem_alloc (eval.c:6855)
==22962==    by 0x807B0B3: dict_copy (eval.c:6948)
==22962==    by 0x808C662: item_copy (eval.c:19471)
==22962==    by 0x807DB82: f_copy (eval.c:9141)
==22962==    by 0x807C7DF: call_func (eval.c:8188)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x807859A: eval7 (eval.c:5018)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x808AF05: handle_subscript (eval.c:18491)
==22962==    by 0x8078640: eval7 (eval.c:5046)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==
==22962==
==22962== 288,496 bytes in 5,548 blocks are possibly lost in loss
record 121 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114723: alloc_clear (misc2.c:777)
==22962==    by 0x80797D0: list_alloc (eval.c:5729)
==22962==    by 0x807961D: get_list_tv (eval.c:5667)
==22962==    by 0x807837D: eval7 (eval.c:4943)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x80A2793: do_source (ex_cmds2.c:3119)
==22962==    by 0x80A2047: cmd_source (ex_cmds2.c:2741)
==22962==
==22962==
==22962== 399,456 bytes in 16,644 blocks are possibly lost in loss
record 122 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x807994D: listitem_alloc (eval.c:5810)
==22962==    by 0x807967A: get_list_tv (eval.c:5679)
==22962==    by 0x807837D: eval7 (eval.c:4943)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x80A2793: do_source (ex_cmds2.c:3119)
==22962==    by 0x80A2047: cmd_source (ex_cmds2.c:2741)
==22962==
==22962==
==22962== 499,320 bytes in 2,774 blocks are possibly lost in loss
record 123 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x807AD1E: dict_alloc (eval.c:6770)
==22962==    by 0x807B6A8: get_dict_tv (eval.c:7216)
==22962==    by 0x807839E: eval7 (eval.c:4949)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x808AF05: handle_subscript (eval.c:18491)
==22962==    by 0x8078640: eval7 (eval.c:5046)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==
==22962==
==22962== 499,320 bytes in 2,774 blocks are possibly lost in loss
record 124 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x807AD1E: dict_alloc (eval.c:6770)
==22962==    by 0x807B040: dict_copy (eval.c:6933)
==22962==    by 0x808C662: item_copy (eval.c:19471)
==22962==    by 0x807DB82: f_copy (eval.c:9141)
==22962==    by 0x807C7DF: call_func (eval.c:8188)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x807859A: eval7 (eval.c:5018)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x808AF05: handle_subscript (eval.c:18491)
==22962==    by 0x8078640: eval7 (eval.c:5046)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==
==22962==
==22962== 499,320 bytes in 2,774 blocks are possibly lost in loss
record 125 of 125
==22962==    at 0x402603E: malloc (vg_replace_malloc.c:207)
==22962==    by 0x81147FD: lalloc (misc2.c:866)
==22962==    by 0x8114708: alloc (misc2.c:765)
==22962==    by 0x807AD1E: dict_alloc (eval.c:6770)
==22962==    by 0x807B040: dict_copy (eval.c:6933)
==22962==    by 0x808C662: item_copy (eval.c:19471)
==22962==    by 0x807DB82: f_copy (eval.c:9141)
==22962==    by 0x807C7DF: call_func (eval.c:8188)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x807859A: eval7 (eval.c:5018)
==22962==    by 0x8077EA3: eval6 (eval.c:4685)
==22962==    by 0x8077A8F: eval5 (eval.c:4501)
==22962==    by 0x8076FE0: eval4 (eval.c:4196)
==22962==    by 0x8076E38: eval3 (eval.c:4108)
==22962==    by 0x8076CC4: eval2 (eval.c:4037)
==22962==    by 0x8076AF4: eval1 (eval.c:3962)
==22962==    by 0x8076A5B: eval0 (eval.c:3919)
==22962==    by 0x807326C: ex_let (eval.c:1833)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x8090507: call_user_func (eval.c:21381)
==22962==    by 0x807C6DD: call_func (eval.c:8159)
==22962==    by 0x807C321: get_func_tv (eval.c:8005)
==22962==    by 0x8075C03: ex_call (eval.c:3341)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)
==22962==    by 0x80A450B: do_cmdline (ex_docmd.c:1096)
==22962==    by 0x80A2793: do_source (ex_cmds2.c:3119)
==22962==    by 0x80A2047: cmd_source (ex_cmds2.c:2741)
==22962==    by 0x80A1F9B: ex_source (ex_cmds2.c:2714)
==22962==    by 0x80A6C8B: do_one_cmd (ex_docmd.c:2622)

-- Dominique

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui