Hi Bram,

how should Valgrind be run (which options)?

Here is the output from "valgrind --log-file=/tmp/valgrind.log vim" and 
reproducing it: http://dpaste.com/22Y96NV


Regards,
Daniel.

Am Donnerstag, 20. November 2014 12:54:41 UTC+1 schrieb Bram Moolenaar:
> Daniel Hahler wrote:
> 
> > When using `yss<p` (from vim-surround, used to surround the current line) 
> > on a
> > long line (~450 chars), Vim segfaults:
> > 
> > #0  0x00007f7067041ea7 in kill () at ../sysdeps/unix/syscall-template.S:81
> > #1  0x0000000000563a98 in may_core_dump () at os_unix.c:3376
> > #2  0x0000000000563a3c in mch_exit (r=1) at os_unix.c:3342
> > #3  0x000000000064bacd in getout (exitval=1) at main.c:1521
> > #4  0x000000000051ebe1 in preserve_exit () at misc1.c:9405
> > #5  0x0000000000561a01 in deathtrap (sigarg=11) at os_unix.c:1121
> > #6  <signal handler called>
> > #7  __strncpy_sse2_unaligned () at 
> > ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
> > #8  0x00000000005227b4 in vim_strnsave (string=0x0, len=1732028256) at 
> > misc2.c:1268
> > #9  0x00000000004816cf in find_some_match (argvars=0x7fff7bd98bd0, 
> > rettv=0x7fff7bd99250, type=2) at eval.c:14349
> > #10 0x0000000000481c42 in f_matchstr (argvars=0x7fff7bd98bd0, 
> > rettv=0x7fff7bd99250) at eval.c:14549
> > #11 0x0000000000478eac in call_func (funcname=0x262ea21 
> > "matchstr(keeper,'\\_s\\@<!\\s*$')", len=8, rettv=0x7fff7bd99250, 
> > argcount=2, argvars=0x7fff7bd98bd0, 
> >     firstline=255, lastline=255, doesrange=0x7fff7bd98d64, evaluate=1, 
> > selfdict=0x0) at eval.c:8626
> > #12 0x00000000004788e4 in get_func_tv (name=0x262ea21 
> > "matchstr(keeper,'\\_s\\@<!\\s*$')", len=8, rettv=0x7fff7bd99250, 
> > arg=0x7fff7bd991f8, firstline=255, 
> >     lastline=255, doesrange=0x7fff7bd98d64, evaluate=1, selfdict=0x0) at 
> > eval.c:8433
> > #13 0x0000000000474082 in eval7 (arg=0x7fff7bd991f8, rettv=0x7fff7bd99250, 
> > evaluate=1, want_string=0) at eval.c:5210
> > #14 0x0000000000473932 in eval6 (arg=0x7fff7bd991f8, rettv=0x7fff7bd99250, 
> > evaluate=1, want_string=0) at eval.c:4861
> > #15 0x0000000000473466 in eval5 (arg=0x7fff7bd991f8, rettv=0x7fff7bd99250, 
> > evaluate=1) at eval.c:4677
> > #16 0x000000000047277a in eval4 (arg=0x7fff7bd991f8, rettv=0x7fff7bd99250, 
> > evaluate=1) at eval.c:4370
> > #17 0x00000000004725bd in eval3 (arg=0x7fff7bd991f8, rettv=0x7fff7bd99250, 
> > evaluate=1) at eval.c:4282
> > #18 0x000000000047243c in eval2 (arg=0x7fff7bd991f8, rettv=0x7fff7bd99250, 
> > evaluate=1) at eval.c:4211
> > #19 0x000000000047227b in eval1 (arg=0x7fff7bd991f8, rettv=0x7fff7bd99250, 
> > evaluate=1) at eval.c:4136
> > #20 0x00000000004721da in eval0 (arg=0x262ea21 
> > "matchstr(keeper,'\\_s\\@<!\\s*$')", rettv=0x7fff7bd99250, 
> > nextcmd=0x7fff7bd99338, evaluate=1) at eval.c:4093
> > #21 0x000000000046debc in ex_let (eap=0x7fff7bd99330) at eval.c:1913
> > #22 0x00000000004ad3a8 in do_one_cmd (cmdlinep=0x7fff7bd99450, sourcing=1, 
> > cstack=0x7fff7bd99540, fgetline=0x49323b <get_func_line>, cookie=0x22e4040)
> >     at ex_docmd.c:2705
> > #23 0x00000000004aa77e in do_cmdline (cmdline=0x0, fgetline=0x49323b 
> > <get_func_line>, cookie=0x22e4040, flags=7) at ex_docmd.c:1131
> > #24 0x00000000004926f7 in call_user_func (fp=0x23895a0, argcount=1, 
> > argvars=0x7fff7bd99e60, rettv=0x7fff7bd9a020, firstline=255, lastline=255, 
> > selfdict=0x0)
> >     at eval.c:23632
> > #25 0x0000000000478d64 in call_func (funcname=0x245c1f0 
> > "\200\375R55_opfunc", len=12, rettv=0x7fff7bd9a020, argcount=1, 
> > argvars=0x7fff7bd99e60, firstline=255, 
> >     lastline=255, doesrange=0x7fff7bd99ff0, evaluate=1, selfdict=0x0) at 
> > eval.c:8597
> > #26 0x00000000004788e4 in get_func_tv (name=0x245c1f0 "\200\375R55_opfunc", 
> > len=12, rettv=0x7fff7bd9a020, arg=0x7fff7bd99ff8, firstline=255, 
> > lastline=255, 
> >     doesrange=0x7fff7bd99ff0, evaluate=1, selfdict=0x0) at eval.c:8433
> > #27 0x0000000000471174 in ex_call (eap=0x7fff7bd9a140) at eval.c:3505
> > #28 0x00000000004ad3a8 in do_one_cmd (cmdlinep=0x7fff7bd9a260, sourcing=0, 
> > cstack=0x7fff7bd9a350, fgetline=0x4c36d0 <getexline>, cookie=0x0) at 
> > ex_docmd.c:2705
> > #29 0x00000000004aa77e in do_cmdline (cmdline=0x0, fgetline=0x4c36d0 
> > <getexline>, cookie=0x0, flags=0) at ex_docmd.c:1131
> > #30 0x000000000053c0d2 in nv_colon (cap=0x7fff7bd9a8d0) at normal.c:5330
> > #31 0x0000000000534b42 in normal_cmd (oap=0x7fff7bd9a970, toplevel=1) at 
> > normal.c:1160
> > #32 0x000000000064b7b0 in main_loop (cmdwin=0, noexmode=0) at main.c:1343
> > #33 0x000000000064b0c7 in main (argc=2, argv=0x7fff7bd9ac78) at main.c:1043
> > quit
> > 
> > 
> > :debug norm yss<p>
> > Entering Debug mode.  Type "cont" to continue.
> > cmd: norm yss<p>
> > cmd: call <SNR>55_opfunc(v:count1)
> > line 1: let char = s:inputreplacement()
> > line 2: if char == ""
> > line 4: endif
> > line 5: let reg = '"'
> > line 6: let sel_save = &selection
> > line 7: let &selection = "inclusive"
> > line 8: let cb_save  = &clipboard
> > line 9: set clipboard-=unnamed clipboard-=unnamedplus
> > line 10: let reg_save = getreg(reg)
> > line 11: let reg_type = getregtype(reg)
> > line 12: let type = a:type
> > line 13: if a:type == "char"
> > line 16: elseif a:type == "line"
> > line 19: elseif a:type ==# "v" || a:type ==# "V" || a:type ==# "\<C-V>"
> > line 27: elseif a:type =~ '^\d\+$'
> > line 28: let type = 'v'
> > line 29: exe 'norm! ^v'.a:type.'$h"'.reg.'y'
> > line 30: if mode() ==# 'v'
> > line 33: endif
> > line 34: else
> > line 39: let keeper = getreg(reg)
> > line 40: if type ==# "v" && a:type !=# "v"
> > line 41: let append = matchstr(keeper,'\_s\@<!\s*$')
> > 
> > 
> > Funny detail: when using `s` on `line 41`, instead of `n`, the crash will 
> > happen one statement later:
> > 
> > line 42: let keeper = substitute(keeper,'\_s\@<!\s*$','','')
> > 
> > 
> > A test file / input can be generated using:
> > :new
> > 450i1<esc>
> > 
> > 
> > This is also related to patch 497, and happens with the latest patches
> > (up to 525), too.
> 
> Hmm, patch 7.4.519 should have fixed this.
> 
> Can you do this under valgrind, so that you hopefully see the cause of
> the problem?
> 
> -- 
> Men may not be seen publicly in any kind of strapless gown.
>               [real standing law in Florida, United States of America]
> 
>  /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
> ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
> \\\  an exciting new programming language -- http://www.Zimbu.org        ///
>  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
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/d/optout.

Raspunde prin e-mail lui