Dominique Pellé wrote:

> Simon Ruderich <[email protected]> wrote:
>
>> On Wed, Jun 26, 2013 at 06:17:24PM +0200, Bram Moolenaar wrote:
>>> Patch 7.3.1247
>>> Problem:    New regexp engine: '[ ]\@!\p\%([ ]\@!\p\)*:' does not always 
>>> match.
>>> Solution:   When there is a PIM add a duplicate state that starts at another
>>>           position.
>>> Files:            src/regexp_nfa.c, src/testdir/test64.in, 
>>> src/testdir/test64.ok
>>
>> Since this patch, valgrind reports the following errors (compiled
>> with patch 7.3.1278):
>>
>>     Invalid read of size 4
>>        at 0x4EEB40: copy_sub (in src/vim)
>>        by 0x4EF70E: addstate (in src/vim)
>>        by 0x4EF866: addstate (in src/vim)
>>        by 0x4EFC75: addstate_here (in src/vim)
>>        by 0x4FC6D9: nfa_regmatch (in src/vim)
>>        by 0x501402: nfa_regtry (in src/vim)
>>        by 0x5017E7: nfa_regexec_both (in src/vim)
>>        by 0x501C00: nfa_regexec_nl (in src/vim)
>>        by 0x4368F9: find_some_match (in src/vim)
>>        by 0x4383D4: call_func (in src/vim)
>>        by 0x43C267: get_func_tv (in src/vim)
>>        by 0x43AC56: eval7 (in src/vim)
>>        by 0x43AE63: eval6 (in src/vim)
>>        by 0x43B0ED: eval5 (in src/vim)
>>        by 0x43BD24: eval3 (in src/vim)
>>        by 0x43BEA4: eval1 (in src/vim)
>>        by 0x43C35B: eval0 (in src/vim)
>>        by 0x441CA2: ex_let (in src/vim)
>>        by 0x45E24C: do_cmdline (in src/vim)
>>        by 0x4BFDFD: nv_colon (in src/vim)
>>        by 0x4C5DD3: normal_cmd (in src/vim)
>>        by 0x561D5C: main_loop (in src/vim)
>>        by 0x408F08: main (in src/vim)
>>      Address 0x7eae250 is 25,184 bytes inside a block of size 25,840 free'd
>>        at 0x4C28CCE: realloc (in 
>> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
>>        by 0x4EF9FC: addstate (in src/vim)
>>        by 0x4EF866: addstate (in src/vim)
>>        by 0x4EFC75: addstate_here (in src/vim)
>>        by 0x4FC6D9: nfa_regmatch (in src/vim)
>>        by 0x501402: nfa_regtry (in src/vim)
>>        by 0x5017E7: nfa_regexec_both (in src/vim)
>>        by 0x501C00: nfa_regexec_nl (in src/vim)
>>        by 0x4368F9: find_some_match (in src/vim)
>>        by 0x4383D4: call_func (in src/vim)
>>        by 0x43C267: get_func_tv (in src/vim)
>>        by 0x43AC56: eval7 (in src/vim)
>>        by 0x43AE63: eval6 (in src/vim)
>>        by 0x43B0ED: eval5 (in src/vim)
>>        by 0x43BD24: eval3 (in src/vim)
>>        by 0x43BEA4: eval1 (in src/vim)
>>        by 0x43C35B: eval0 (in src/vim)
>>        by 0x441CA2: ex_let (in src/vim)
>>        by 0x45E24C: do_cmdline (in src/vim)
>>        by 0x4BFDFD: nv_colon (in src/vim)
>>        by 0x4C5DD3: normal_cmd (in src/vim)
>>        by 0x561D5C: main_loop (in src/vim)
>>        by 0x408F08: main (in src/vim)
> ...snip...
>>
>> If I revert the patch, the errors no longer occur.
>>
>> Regards
>> Simon
>
>
> Hi
>
> Can you describe the steps to reproduce the error?
>
> Also, line numbers are missing in the stacks.  Make sure
> you compile Vim with -O0 -g and do not strip the excutable
> when sending stacks dumps.
>
> Thanks
> Dominique


I see that running "make test" with valgrind
detects the bug in test 64 using vim-7.3.1278:

==9882== Invalid read of size 4
==9882==    at 0x572F9B: copy_sub (regexp_nfa.c:3583)
==9882==    by 0x5736CC: addstate (regexp_nfa.c:3971)
==9882==    by 0x57374A: addstate (regexp_nfa.c:3994)
==9882==    by 0x573D27: addstate_here (regexp_nfa.c:4214)
==9882==    by 0x5757B4: nfa_regmatch (regexp_nfa.c:5290)
==9882==    by 0x577CC1: nfa_regtry (regexp_nfa.c:6242)
==9882==    by 0x5783A5: nfa_regexec_both (regexp_nfa.c:6426)
==9882==    by 0x578764: nfa_regexec_nl (regexp_nfa.c:6623)
==9882==    by 0x5789C2: vim_regexec_nl (regexp.c:8067)
==9882==    by 0x46E33C: find_some_match (eval.c:13941)
==9882==    by 0x46E907: f_matchlist (eval.c:14131)
==9882==    by 0x46641A: call_func (eval.c:8530)
==9882==    by 0x465E8C: get_func_tv (eval.c:8343)
==9882==    by 0x461702: eval7 (eval.c:5153)
==9882==    by 0x460FA9: eval6 (eval.c:4805)
==9882==    by 0x460AF9: eval5 (eval.c:4621)
==9882==    by 0x45FE00: eval4 (eval.c:4314)
==9882==    by 0x45FC44: eval3 (eval.c:4226)
==9882==    by 0x45FAC3: eval2 (eval.c:4155)
==9882==    by 0x45F902: eval1 (eval.c:4080)
==9882==    by 0x45F861: eval0 (eval.c:4037)
==9882==    by 0x45B5FD: ex_let (eval.c:1890)
==9882==    by 0x498EB5: do_one_cmd (ex_docmd.c:2689)
==9882==    by 0x496433: do_cmdline (ex_docmd.c:1127)
==9882==    by 0x527A77: nv_colon (normal.c:5457)
==9882==    by 0x52056B: normal_cmd (normal.c:1200)
==9882==    by 0x63C17C: main_loop (main.c:1329)
==9882==    by 0x63BA88: main (main.c:1020)
==9882==  Address 0xe74d370 is 25,184 bytes inside a block of size 25,840 free'd
==9882==    at 0x4C2B4F0: realloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==9882==    by 0x573626: addstate (regexp_nfa.c:3959)
==9882==    by 0x57374A: addstate (regexp_nfa.c:3994)
==9882==    by 0x573D27: addstate_here (regexp_nfa.c:4214)
==9882==    by 0x5757B4: nfa_regmatch (regexp_nfa.c:5290)
==9882==    by 0x577CC1: nfa_regtry (regexp_nfa.c:6242)
==9882==    by 0x5783A5: nfa_regexec_both (regexp_nfa.c:6426)
==9882==    by 0x578764: nfa_regexec_nl (regexp_nfa.c:6623)
==9882==    by 0x5789C2: vim_regexec_nl (regexp.c:8067)
==9882==    by 0x46E33C: find_some_match (eval.c:13941)
==9882==    by 0x46E907: f_matchlist (eval.c:14131)
==9882==    by 0x46641A: call_func (eval.c:8530)
==9882==    by 0x465E8C: get_func_tv (eval.c:8343)
==9882==    by 0x461702: eval7 (eval.c:5153)
==9882==    by 0x460FA9: eval6 (eval.c:4805)
==9882==    by 0x460AF9: eval5 (eval.c:4621)
==9882==    by 0x45FE00: eval4 (eval.c:4314)
==9882==    by 0x45FC44: eval3 (eval.c:4226)
==9882==    by 0x45FAC3: eval2 (eval.c:4155)
==9882==    by 0x45F902: eval1 (eval.c:4080)
==9882==    by 0x45F861: eval0 (eval.c:4037)
==9882==    by 0x45B5FD: ex_let (eval.c:1890)
==9882==    by 0x498EB5: do_one_cmd (ex_docmd.c:2689)
==9882==    by 0x496433: do_cmdline (ex_docmd.c:1127)
==9882==    by 0x527A77: nv_colon (normal.c:5457)
==9882==    by 0x52056B: normal_cmd (normal.c:1200)
==9882==    by 0x63C17C: main_loop (main.c:1329)
==9882==    by 0x63BA88: main (main.c:1020)
(more errors after that)

Dominique

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Raspunde prin e-mail lui