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


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

Attachment: eval_crash2.patch
Description: Binary data



Raspunde prin e-mail lui