On So, 09 Jul 2017, Christian Brabandt wrote: > > Oh and POC3 creates this backtrace: > #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 > #1 0x00007ffff426a3fa in __GI_abort () at abort.c:89 > #2 0x00007ffff42a6bd0 in __libc_message (do_abort=do_abort@entry=2, > fmt=fmt@entry=0x7ffff439bdd0 "*** Error in `%s': %s: 0x%s ***\n") at > ../sysdeps/posix/libc_fatal.c:175 > #3 0x00007ffff42acf96 in malloc_printerr (action=3, str=0x7ffff439896a > "free(): invalid pointer", ptr=<optimized out>, ar_ptr=<optimized out>) at > malloc.c:5049 > #4 0x00007ffff42ad7de in _int_free (av=0x7ffff45cfb00 <main_arena>, > p=0x555555a8cf28, have_lock=0) at malloc.c:3905 > #5 0x000055555566eed2 in vim_free (x=0x555555a8cf38) at misc2.c:1793 > #6 0x0000555555734679 in reset_synblock (wp=0x555555a89b00) at syntax.c:3659 > #7 0x000055555559183e in set_curbuf (buf=0x555555a8b7e0, action=0) at > buffer.c:1694 > #8 0x00005555555916f0 in do_buffer (action=0, start=1, dir=1, count=1, > forceit=0) at buffer.c:1631 > #9 0x00005555555907e9 in goto_buffer (eap=0x7fffffffc290, start=1, dir=1, > count=1) at buffer.c:985 > #10 0x00005555555fc44d in ex_buffer (eap=0x7fffffffc290) at ex_docmd.c:5604 > #11 0x00005555555f755b in do_one_cmd (cmdlinep=0x7fffffffc938, sourcing=1, > cstack=0x7fffffffc490, fgetline=0x555555629e27 <getnextac>, > cookie=0x7fffffffca70) at ex_docmd.c:2951 > #12 0x00005555555f4076 in do_cmdline (cmdline=0x0, fgetline=0x555555629e27 > <getnextac>, cookie=0x7fffffffca70, flags=7) at ex_docmd.c:1089 > #13 0x000055555562989d in apply_autocmds_group (event=EVENT_BUFADD, > fname=0x555555a98050 "/home/chrisbra/code/git/vim-src/src/afile", > fname_io=0x0, force=0, group=-3, buf=0x555555aaa570, eap=0x0) at fileio.c:9645 > #14 0x0000555555628fde in apply_autocmds (event=EVENT_BUFADD, fname=0x0, > fname_io=0x0, force=0, buf=0x555555aaa570) at fileio.c:9189 > #15 0x000055555559a248 in set_buflisted (on=1) at buffer.c:6083 > #16 0x00005555555e23dd in do_ecmd (fnum=0, ffname=0x555555aa99d0 > "/home/chrisbra/code/git/vim-src/src/afile", sfname=0x555555a9eff0 "afile", > eap=0x7fffffffcea0, newlnum=1, flags=0, oldwin=0x555555a89b00) > at ex_cmds.c:4038 > #17 0x00005555555ef0b7 in do_argfile (eap=0x7fffffffcea0, argn=0) at > ex_cmds2.c:2756 > #18 0x00005555555ef1ae in ex_next (eap=0x7fffffffcea0) at ex_cmds2.c:2793 > #19 0x00005555555f755b in do_one_cmd (cmdlinep=0x7fffffffd548, sourcing=1, > cstack=0x7fffffffd0a0, fgetline=0x5555555f2233 <getsourceline>, > cookie=0x7fffffffd6e0) at ex_docmd.c:2951 > #20 0x00005555555f4076 in do_cmdline (cmdline=0x555555a9d9e0 "au * * 1b|bd > s", fgetline=0x5555555f2233 <getsourceline>, cookie=0x7fffffffd6e0, flags=7) > at ex_docmd.c:1089 > #21 0x00005555555f1e48 in do_source (fname=0x555555a90143 "POC3", > check_other=0, is_vimrc=0) at ex_cmds2.c:4378 > #22 0x00005555555f1544 in cmd_source (fname=0x555555a90143 "POC3", > eap=0x7fffffffd930) at ex_cmds2.c:3991 > #23 0x00005555555f148f in ex_source (eap=0x7fffffffd930) at ex_cmds2.c:3966 > #24 0x00005555555f755b in do_one_cmd (cmdlinep=0x7fffffffdfd8, sourcing=1, > cstack=0x7fffffffdb30, fgetline=0x0, cookie=0x0) at ex_docmd.c:2951 > #25 0x00005555555f4076 in do_cmdline (cmdline=0x555555a90100 "so POC3", > fgetline=0x0, cookie=0x0, flags=11) at ex_docmd.c:1089 > #26 0x00005555555f3763 in do_cmdline_cmd (cmd=0x555555a90100 "so POC3") at > ex_docmd.c:689 > #27 0x00005555557c6e3c in exe_commands (parmp=0x555555a70d80 <params>) at > main.c:2945 > #28 0x00005555557c3de5 in vim_main2 () at main.c:803 > #29 0x00005555557c3644 in main (argc=9, argv=0x7fffffffe228) at main.c:419
I have analyzed the problem: curwin->w_s is freed twice: 1) after running closing the current buffer: #0 buf_freeall (buf=0x555555ab3990, flags=1) at buffer.c:724 #1 0x000055555558ff66 in close_buffer (win=0x0, buf=0x555555ab3990, action=3, abort_if_last=0) at buffer.c:609 #2 0x00005555555912bf in do_buffer (action=3, start=1, dir=1, count=2, forceit=0) at buffer.c:1465 #3 0x0000555555590a88 in do_bufdel (command=3, arg=0x555555a9c584 "", addr_count=1, start_bnr=1, end_bnr=2, forceit=0) at buffer.c:1145 #4 0x00005555555fc3c4 in ex_bunload (eap=0x7fffffffc150) at ex_docmd.c:5583 #5 0x00005555555f755b in do_one_cmd (cmdlinep=0x7fffffffc7f8, sourcing=1, cstack=0x7fffffffc350, fgetline=0x555555629e27 <getnextac>, cookie=0x7fffffffc930) at ex_docmd.c:2951 #6 0x00005555555f4076 in do_cmdline (cmdline=0x0, fgetline=0x555555629e27 <getnextac>, cookie=0x7fffffffc930, flags=7) at ex_docmd.c:1089 #7 0x000055555562989d in apply_autocmds_group (event=EVENT_BUFNEW, fname=0x555555ab35d0 "/home/chrisbra/code/git/vim-src/src/afile", fname_io=0x0, force=0, group=-3, buf=0x555555ab3990, eap=0x0) at fileio.c:9645 #8 0x0000555555628fde in apply_autocmds (event=EVENT_BUFNEW, fname=0x0, fname_io=0x0, force=0, buf=0x555555ab3990) at fileio.c:9189 #9 0x0000555555592499 in buflist_new (ffname=0x555555ab2d90 "/home/chrisbra/code/git/vim-src/src/afile", sfname=0x555555aa8ad0 "afile", lnum=0, flags=2) at buffer.c:2130 #10 0x0000555555594411 in buflist_add (fname=0x555555aa8ad0 "afile", flags=2) at buffer.c:3294 #11 0x0000555555600905 in alist_add (al=0x555555a741e0 <global_alist>, fname=0x555555aa8ad0 "afile", set_fnum=1) at ex_docmd.c:8171 #12 0x0000555555600840 in alist_set (al=0x555555a741e0 <global_alist>, count=1, files=0x555555ab2de0, use_curbuf=0, fnum_list=0x0, fnum_len=0) at ex_docmd.c:8140 #13 0x00005555555ee760 in do_arglist (str=0x555555aa8505 "afile", what=1, after=0) at ex_cmds2.c:2487 #14 0x00005555555ef176 in ex_next (eap=0x7fffffffce90) at ex_cmds2.c:2787 #15 0x00005555555f755b in do_one_cmd (cmdlinep=0x7fffffffd538, sourcing=1, cstack=0x7fffffffd090, fgetline=0x5555555f2233 <getsourceline>, cookie=0x7fffffffd6d0) at ex_docmd.c:2951 #16 0x00005555555f4076 in do_cmdline (cmdline=0x555555aa83f0 "au * * 1b|bd s", fgetline=0x5555555f2233 <getsourceline>, cookie=0x7fffffffd6d0, flags=7) at ex_docmd.c:1089 #17 0x00005555555f1e48 in do_source (fname=0x555555aa4113 "POC3", check_other=0, is_vimrc=0) at ex_cmds2.c:4378 #18 0x00005555555f1544 in cmd_source (fname=0x555555aa4113 "POC3", eap=0x7fffffffd920) at ex_cmds2.c:3991 #19 0x00005555555f148f in ex_source (eap=0x7fffffffd920) at ex_cmds2.c:3966 #20 0x00005555555f755b in do_one_cmd (cmdlinep=0x7fffffffdfc8, sourcing=1, cstack=0x7fffffffdb20, fgetline=0x0, cookie=0x0) at ex_docmd.c:2951 #21 0x00005555555f4076 in do_cmdline (cmdline=0x555555a90f90 "so POC3", fgetline=0x0, cookie=0x0, flags=11) at ex_docmd.c:1089 #22 0x00005555555f3763 in do_cmdline_cmd (cmd=0x555555a90f90 "so POC3") at ex_docmd.c:689 #23 0x00005555557c7062 in exe_commands (parmp=0x555555a71d80 <params>) at main.c:2945 #24 0x00005555557c400b in vim_main2 () at main.c:803 #25 0x00005555557c386a in main (argc=10, argv=0x7fffffffe218) at main.c:419 Then the second time, when calling set_curbuf(): #0 reset_synblock (wp=0x555555a8ab00) at syntax.c:3657 #1 0x00005555555903d0 in buf_freeall (buf=0x555555a8c7e0, flags=1) at buffer.c:793 #2 0x000055555558ff66 in close_buffer (win=0x555555a8ab00, buf=0x555555a8c7e0, action=2, abort_if_last=0) at buffer.c:609 #3 0x00005555555e21d0 in do_ecmd (fnum=0, ffname=0x555555aa8c70 "/home/chrisbra/code/git/vim-src/src/afile", sfname=0x555555aa4130 "afile", eap=0x7fffffffce90, newlnum=1, flags=0, oldwin=0x555555a8ab00) at ex_cmds.c:3939 #4 0x00005555555ef0b7 in do_argfile (eap=0x7fffffffce90, argn=0) at ex_cmds2.c:2756 #5 0x00005555555ef1ae in ex_next (eap=0x7fffffffce90) at ex_cmds2.c:2793 #6 0x00005555555f755b in do_one_cmd (cmdlinep=0x7fffffffd538, sourcing=1, cstack=0x7fffffffd090, fgetline=0x5555555f2233 <getsourceline>, cookie=0x7fffffffd6d0) at ex_docmd.c:2951 #7 0x00005555555f4076 in do_cmdline (cmdline=0x555555aa83f0 "au * * 1b|bd s", fgetline=0x5555555f2233 <getsourceline>, cookie=0x7fffffffd6d0, flags=7) at ex_docmd.c:1089 #8 0x00005555555f1e48 in do_source (fname=0x555555aa4113 "POC3", check_other=0, is_vimrc=0) at ex_cmds2.c:4378 #9 0x00005555555f1544 in cmd_source (fname=0x555555aa4113 "POC3", eap=0x7fffffffd920) at ex_cmds2.c:3991 #10 0x00005555555f148f in ex_source (eap=0x7fffffffd920) at ex_cmds2.c:3966 #11 0x00005555555f755b in do_one_cmd (cmdlinep=0x7fffffffdfc8, sourcing=1, cstack=0x7fffffffdb20, fgetline=0x0, cookie=0x0) at ex_docmd.c:2951 #12 0x00005555555f4076 in do_cmdline (cmdline=0x555555a90f90 "so POC3", fgetline=0x0, cookie=0x0, flags=11) at ex_docmd.c:1089 #13 0x00005555555f3763 in do_cmdline_cmd (cmd=0x555555a90f90 "so POC3") at ex_docmd.c:689 #14 0x00005555557c7062 in exe_commands (parmp=0x555555a71d80 <params>) at main.c:2945 #15 0x00005555557c400b in vim_main2 () at main.c:803 #16 0x00005555557c386a in main (argc=10, argv=0x7fffffffe218) at main.c:419 So at that time, we get a double free and Vim terminates. Best, Christian -- Die Achtung, die ein Mensch verdient, und sein Wert hängen ab von seinem Mut und seinem Willen: Hierin liegt seine wahre Ehre. -- Michel Eyquem de Montaigne (Die Essais) -- -- 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 vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.